diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 90825e2392b2d70e43c7a25b8a3752299a933894 (patch) | |
tree | e33aa27f02b74604afbfd0ea4f1cfca8833d882a /dcopperl/DCOP | |
download | tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.tar.gz tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebindings@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'dcopperl/DCOP')
-rw-r--r-- | dcopperl/DCOP/Object.pm | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/dcopperl/DCOP/Object.pm b/dcopperl/DCOP/Object.pm new file mode 100644 index 00000000..e98f65b5 --- /dev/null +++ b/dcopperl/DCOP/Object.pm @@ -0,0 +1,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__ + |