summaryrefslogtreecommitdiffstats
path: root/dcopperl/DCOP
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit90825e2392b2d70e43c7a25b8a3752299a933894 (patch)
treee33aa27f02b74604afbfd0ea4f1cfca8833d882a /dcopperl/DCOP
downloadtdebindings-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.pm41
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__
+