summaryrefslogtreecommitdiff
path: root/source4/pidl/lib/Parse/Pidl/Samba3/Header.pm
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2005-10-14 16:40:47 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:44:43 -0500
commit6f3caf73e13f32e5482d09b3fd2fbcf61ac88bc1 (patch)
tree01bc12b328a3dc538dec5d5d4e2add672d84d820 /source4/pidl/lib/Parse/Pidl/Samba3/Header.pm
parentebe6f9ea490b686cef393c9b31c2c975dfac0be8 (diff)
downloadsamba-6f3caf73e13f32e5482d09b3fd2fbcf61ac88bc1.tar.gz
samba-6f3caf73e13f32e5482d09b3fd2fbcf61ac88bc1.tar.bz2
samba-6f3caf73e13f32e5482d09b3fd2fbcf61ac88bc1.zip
r11061: Samba3 parser generator fixes:
* Add (limited) support for [string] * Don't generate (and set) header elements for top level ref pointers as they don't appear on the wire (This used to be commit 765adaf19be264e2d23a22eaed3027faededf8b6)
Diffstat (limited to 'source4/pidl/lib/Parse/Pidl/Samba3/Header.pm')
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba3/Header.pm8
1 files changed, 6 insertions, 2 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/Samba3/Header.pm b/source4/pidl/lib/Parse/Pidl/Samba3/Header.pm
index d14bac2df7..b49e64c337 100644
--- a/source4/pidl/lib/Parse/Pidl/Samba3/Header.pm
+++ b/source4/pidl/lib/Parse/Pidl/Samba3/Header.pm
@@ -9,7 +9,7 @@ use strict;
use Parse::Pidl::Typelist qw(hasType getType);
use Parse::Pidl::Util qw(has_property ParseExpr);
use Parse::Pidl::NDR qw(GetPrevLevel GetNextLevel ContainsDeferred);
-use Parse::Pidl::Samba3::Types qw(DeclShort);
+use Parse::Pidl::Samba3::Types qw(DeclShort StringType);
use vars qw($VERSION);
$VERSION = '0.01';
@@ -28,11 +28,15 @@ sub ParseElement($)
foreach my $l (@{$e->{LEVELS}}) {
if ($l->{TYPE} eq "POINTER") {
- return if ($l->{POINTER_TYPE} eq "ref" and $l->{LEVEL} eq "top");
+ next if ($l->{POINTER_TYPE} eq "ref" and $l->{LEVEL} eq "TOP");
pidl "\tuint32 ptr$l->{POINTER_INDEX}_$e->{NAME};";
} elsif ($l->{TYPE} eq "SWITCH") {
} elsif ($l->{TYPE} eq "DATA") {
pidl "\t" . DeclShort($e) . ";";
+ } elsif ($l->{TYPE} eq "ARRAY" and $l->{IS_ZERO_TERMINATED}) {
+ my ($t,$f) = StringType($e,$l);
+ pidl "\t" . uc($t) . " $e->{NAME};";
+ return;
} elsif ($l->{TYPE} eq "ARRAY") {
if ($l->{IS_CONFORMANT}) {
pidl "\tuint32 size_$e->{NAME};";