From 90825e2392b2d70e43c7a25b8a3752299a933894 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: 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 --- dcopperl/DCOP/Object.pm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 dcopperl/DCOP/Object.pm (limited to 'dcopperl/DCOP') 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__ + -- cgit v1.2.1