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.
tdebindings/dcopperl/DCOP/Object.pm

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__