[libnet-dbus-perl] 99/335: Make appending of variant data type work
Intrigeri
intrigeri at moszumanska.debian.org
Sat Mar 21 01:07:32 UTC 2015
This is an automated email from the git hooks/post-receive script.
intrigeri pushed a commit to branch experimental
in repository libnet-dbus-perl.
commit 008adf453ae084d290bb5c5846e4701e6ed3516e
Author: Daniel P. Berrange <dan at berrange.com>
Date: Fri Sep 9 14:06:54 2005 +0000
Make appending of variant data type work
---
lib/Net/DBus/Binding/Iterator.pm | 35 ++++++++++++++++++++++++++---------
1 file changed, 26 insertions(+), 9 deletions(-)
diff --git a/lib/Net/DBus/Binding/Iterator.pm b/lib/Net/DBus/Binding/Iterator.pm
index 9cbe2f9..6536fe5 100644
--- a/lib/Net/DBus/Binding/Iterator.pm
+++ b/lib/Net/DBus/Binding/Iterator.pm
@@ -335,8 +335,10 @@ sub append {
$self->append_double($value);
} elsif ($type == &Net::DBus::Binding::Message::TYPE_OBJECT_PATH) {
$self->append_string($value);
+ } elsif ($type == &Net::DBus::Binding::Message::TYPE_VARIANT) {
+ $self->append_variant($value);
} else {
- $self->append_string($value);
+ confess "Unsupported scalar type ", $type;
}
}
}
@@ -367,25 +369,26 @@ sub guess_type {
}
sub get_signature {
+ my $self = shift;
my $type = shift;
my ($sig, $t, $i);
$sig = "";
$i = 0;
- if (ref ($type) eq "ARRAY") {
+ if (ref($type) eq "ARRAY") {
while ($i <= $#{$type}) {
$t = $$type[$i];
- if (ref ($t) eq "ARRAY") {
- $sig .= &get_signature ($t);
+ if (ref($t) eq "ARRAY") {
+ $sig .= $self->get_signature($t);
} elsif ($t == &Net::DBus::Binding::Message::TYPE_DICT_ENTRY) {
$sig .= chr (&Net::DBus::Binding::Message::TYPE_ARRAY);
- $sig .= "{" . &get_signature ($$type[++$i]) . "}";
+ $sig .= "{" . $self->get_signature($$type[++$i]) . "}";
} elsif ($t == &Net::DBus::Binding::Message::TYPE_STRUCT) {
- $sig .= "(" . &get_signature ($$type[++$i]) . ")";
+ $sig .= "(" . $self->get_signature($$type[++$i]) . ")";
} else {
- $sig .= chr ($t);
+ $sig .= chr($t);
}
$i++;
@@ -406,7 +409,7 @@ sub append_array {
die "array must only have one type"
if $#{$type} > 0;
- my $sig = get_signature ($type);
+ my $sig = $self->get_signature($type);
my $iter = $self->_open_container(&Net::DBus::Binding::Message::TYPE_ARRAY, $sig);
foreach my $value (@{$array}) {
@@ -444,7 +447,7 @@ sub append_dict {
my $sig;
$sig = "{";
- $sig .= get_signature ($type);
+ $sig .= $self->get_signature($type);
$sig .= "}";
my $iter = $self->_open_container(&Net::DBus::Binding::Message::TYPE_ARRAY, $sig);
@@ -460,6 +463,20 @@ sub append_dict {
$self->_close_container($iter);
}
+
+sub append_variant {
+ my $self = shift;
+ my $value = shift;
+
+ my $type = $self->guess_type($value);
+ my $sig = $self->get_signature($type);
+ my $iter = $self->_open_container(&Net::DBus::Binding::Message::TYPE_VARIANT, $sig);
+ $iter->append($value, $type);
+ $self->_close_container($iter);
+}
+
+
+
1;
=pod
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libnet-dbus-perl.git
More information about the Pkg-perl-cvs-commits
mailing list