From d79fb9098bc3ce37daa8ab6d51dc62ad0bc2ad26 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 21 Sep 2010 01:44:38 +0200 Subject: pidl: add support for 'pipe' at the NDR layer metze --- pidl/lib/Parse/Pidl/Samba4/Header.pm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'pidl/lib/Parse/Pidl/Samba4/Header.pm') 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 @@ -215,6 +215,30 @@ sub HeaderUnion($$;$) pidl $tail if defined($tail); } +##################################################################### +# 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}}) { -- cgit