You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
930 B
42 lines
930 B
package DCOP::Object;
|
|
|
|
use strict;
|
|
use vars qw($VERSION $AUTOLOAD);
|
|
|
|
$VERSION = '0.01';
|
|
|
|
sub AUTOLOAD()
|
|
{
|
|
my $funcname;
|
|
($funcname = $AUTOLOAD) =~ s/.*:://;
|
|
return if $funcname eq 'DESTROY';
|
|
my $self = shift;
|
|
foreach my $func (map {DCOP::canonicalizeSignature $_}
|
|
@{DCOP::remoteFunctions($self->{CLIENT}, $self->{APP}, $self->{OBJ})})
|
|
{
|
|
my $argstr = $func;
|
|
$argstr =~ s/.*\((.*)\)/$1/;
|
|
my @args = split /,/, $argstr;
|
|
next unless $func =~ /^$funcname\(/ && scalar(@args) == scalar(@_);
|
|
unshift @_, $self->{CLIENT}, $self->{APP}, $self->{OBJ}, "$func";
|
|
defined wantarray ? goto &DCOP::call : goto &DCOP::send;
|
|
}
|
|
die 'Function "', $self->{APP}, '.', $self->{OBJ}, ".$funcname()\" doesn't exist.";
|
|
}
|
|
|
|
sub _app()
|
|
{
|
|
my $self = shift;
|
|
$self->{APP};
|
|
}
|
|
|
|
sub _object()
|
|
{
|
|
my $self = shift;
|
|
$self->{OBJ};
|
|
}
|
|
|
|
1;
|
|
__END__
|
|
|