summaryrefslogtreecommitdiff
path: root/pidl/lib/Parse/Pidl/Samba4/Header.pm
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2010-09-21 01:44:38 +0200
committerStefan Metzmacher <metze@samba.org>2011-03-10 14:31:19 +0100
commitd79fb9098bc3ce37daa8ab6d51dc62ad0bc2ad26 (patch)
tree750342a79c398407fa1ea924aaad2c734be29c10 /pidl/lib/Parse/Pidl/Samba4/Header.pm
parentf43e757096750dc2844af49363981fd0246d9f48 (diff)
downloadsamba-d79fb9098bc3ce37daa8ab6d51dc62ad0bc2ad26.tar.gz
samba-d79fb9098bc3ce37daa8ab6d51dc62ad0bc2ad26.tar.bz2
samba-d79fb9098bc3ce37daa8ab6d51dc62ad0bc2ad26.zip
pidl: add support for 'pipe' at the NDR layer
metze
Diffstat (limited to 'pidl/lib/Parse/Pidl/Samba4/Header.pm')
-rw-r--r--pidl/lib/Parse/Pidl/Samba4/Header.pm26
1 files changed, 26 insertions, 0 deletions
diff --git a/pidl/lib/Parse/Pidl/Samba4/Header.pm b/pidl/lib/Parse/Pidl/Samba4/Header.pm
index 9788b2c123..3736315120 100644
--- a/pidl/lib/Parse/Pidl/Samba4/Header.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/Header.pm
@@ -216,6 +216,30 @@ sub HeaderUnion($$;$)
}
#####################################################################
+# parse a pipe
+sub HeaderPipe($$;$)
+{
+ my($pipe,$name,$tail) = @_;
+
+ my $struct = $pipe->{DATA};
+ my $e = $struct->{ELEMENTS}[1];
+
+ pidl "struct $name;\n";
+ pidl "struct $struct->{NAME} {\n";
+ $tab_depth++;
+ pidl tabs()."uint32_t count;\n";
+ pidl tabs().mapTypeName($e->{TYPE})." *array;\n";
+ $tab_depth--;
+ pidl "}";
+
+ if (defined $struct->{PROPERTIES}) {
+ HeaderProperties($struct->{PROPERTIES}, []);
+ }
+
+ pidl $tail if defined($tail);
+}
+
+#####################################################################
# parse a type
sub HeaderType($$$;$)
{
@@ -225,6 +249,7 @@ sub HeaderType($$$;$)
($data->{TYPE} eq "BITMAP") && HeaderBitmap($data, $name);
($data->{TYPE} eq "STRUCT") && HeaderStruct($data, $name, $tail);
($data->{TYPE} eq "UNION") && HeaderUnion($data, $name, $tail);
+ ($data->{TYPE} eq "PIPE") && HeaderPipe($data, $name, $tail);
return;
}
@@ -385,6 +410,7 @@ sub HeaderInterface($)
HeaderUnion($t, $t->{NAME}, ";\n\n") if ($t->{TYPE} eq "UNION");
HeaderEnum($t, $t->{NAME}, ";\n\n") if ($t->{TYPE} eq "ENUM");
HeaderBitmap($t, $t->{NAME}) if ($t->{TYPE} eq "BITMAP");
+ HeaderPipe($t, $t->{NAME}, "\n\n") if ($t->{TYPE} eq "PIPE");
}
foreach my $fn (@{$interface->{FUNCTIONS}}) {