diff options
author | Volker Lendecke <vlendec@samba.org> | 2006-11-19 17:56:35 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:28:20 -0500 |
commit | f4c4e0cf7fde6c5b5cffef2e3ad4ec24bb8fb894 (patch) | |
tree | a031f6fdb063ffe7580088accc572aa4ff9b703e /source4/pidl/lib/Parse/Pidl/Samba4.pm | |
parent | 08452bd7389dc7a18aa2620724a2029bd2e9c640 (diff) | |
download | samba-f4c4e0cf7fde6c5b5cffef2e3ad4ec24bb8fb894.tar.gz samba-f4c4e0cf7fde6c5b5cffef2e3ad4ec24bb8fb894.tar.bz2 samba-f4c4e0cf7fde6c5b5cffef2e3ad4ec24bb8fb894.zip |
r19790: Check in the PIDL change and the converted unixinfo and winbind pipes without
waiting for comments. This is what version control is for, and it does fix a
segfault I ran into ;-)
Nevertheless, Jelmer & Jerry, please take a look!
Thanks,
Volker
(This used to be commit 10dcaf89ed07b9d5d1c89da33b50fcaadead32b2)
Diffstat (limited to 'source4/pidl/lib/Parse/Pidl/Samba4.pm')
-rw-r--r-- | source4/pidl/lib/Parse/Pidl/Samba4.pm | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/Samba4.pm b/source4/pidl/lib/Parse/Pidl/Samba4.pm index 4ef2daa591..e11bd6a5ff 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba4.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba4.pm @@ -7,7 +7,7 @@ package Parse::Pidl::Samba4; require Exporter; @ISA = qw(Exporter); -@EXPORT = qw(is_intree choose_header DeclLong); +@EXPORT = qw(is_intree choose_header DeclLong DeclLong_cli IsUniqueOut); use Parse::Pidl::Util qw(has_property is_constant); use Parse::Pidl::Typelist qw(mapType scalar_is_reference); @@ -32,9 +32,19 @@ sub choose_header($$) return "#include <$out>"; } -sub DeclLong($) +sub IsUniqueOut($) { - my($element) = shift; + my ($e) = shift; + + return grep(/out/, @{$e->{DIRECTION}}) && + ((($e->{LEVELS}[0]->{TYPE} eq "POINTER") && + ($e->{LEVELS}[0]->{POINTER_TYPE} eq "unique")) || + ($e->{LEVELS}[0]->{TYPE} eq "ARRAY")); +} + +sub DeclLong_int($$) +{ + my($element,$cli) = @_; my $ret = ""; if (has_property($element, "represent_as")) { @@ -57,6 +67,9 @@ sub DeclLong($) not has_property($element, "charset"); $numstar++; } + if ($cli && IsUniqueOut($element)) { + $numstar++; + } $ret.="*" foreach (1..$numstar); } $ret.=$element->{NAME}; @@ -68,4 +81,14 @@ sub DeclLong($) return $ret; } +sub DeclLong($) +{ + return DeclLong_int($_, 0); +} + +sub DeclLong_cli($) +{ + return DeclLong_int($_, 1); +} + 1; |