blob: e98f65b5580b1b761615b2d81d3249ffaa9fab5d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
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__
|