From 89a17e60a14783e8560d3babc8a9a328adc3c94c Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 30 May 2005 00:19:58 +0000 Subject: r7084: - readd the work from rev 6516,6517,6572 - use a single list of scalars - let "string" not be so special anymore - fix support for "string_array" metze (This used to be commit e1fa7ae6c8420dc582578e084b9c0d641bcfbd73) --- source4/build/pidl/ndr_header.pm | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) (limited to 'source4/build/pidl/ndr_header.pm') diff --git a/source4/build/pidl/ndr_header.pm b/source4/build/pidl/ndr_header.pm index 576361260f..dfc20389ea 100644 --- a/source4/build/pidl/ndr_header.pm +++ b/source4/build/pidl/ndr_header.pm @@ -52,22 +52,24 @@ sub HeaderProperties($$) # parse a structure element sub HeaderElement($) { - my($element) = shift; + my($element) = shift; - if (defined $element->{PROPERTIES}) { + if (defined $element->{PROPERTIES}) { HeaderProperties($element->{PROPERTIES}, {"in" => 1, "out" => 1}); } - pidl tabs(); - HeaderType($element, $element->{TYPE}, ""); - pidl " "; + pidl tabs(); + HeaderType($element, $element->{TYPE}, ""); + pidl " "; my $prefix = ""; my $postfix = ""; foreach my $l (@{$element->{LEVELS}}) { if (($l->{TYPE} eq "POINTER")) { - next if ($element->{TYPE} eq "string"); + my $nl = Ndr::GetNextLevel($element, $l); + $nl = Ndr::GetNextLevel($element, $nl) if ($nl->{TYPE} eq "SUBCONTEXT"); + next if ($nl->{TYPE} eq "DATA" and typelist::scalar_is_reference($nl->{DATA_TYPE})); $prefix .= "*"; - } elsif (($l->{TYPE} eq "ARRAY")) { + } elsif (($l->{TYPE} eq "ARRAY")) { my $pl = Ndr::GetPrevLevel($element, $l); next if ($pl and $pl->{TYPE} eq "POINTER"); @@ -76,15 +78,15 @@ sub HeaderElement($) } else { $prefix .= "*"; } - } elsif ($l->{TYPE} eq "DATA") { - pidl "$prefix$element->{NAME}$postfix"; + } elsif ($l->{TYPE} eq "DATA") { + pidl "$prefix$element->{NAME}$postfix"; } } - - if (defined $element->{ARRAY_LEN}[0] && util::is_constant($element->{ARRAY_LEN}[0])) { - pidl "[$element->{ARRAY_LEN}[0]]"; - } - pidl ";\n"; + + if (defined $element->{ARRAY_LEN}[0] && util::is_constant($element->{ARRAY_LEN}[0])) { + pidl "[$element->{ARRAY_LEN}[0]]"; + } + pidl ";\n"; } ##################################################################### -- cgit