diff options
Diffstat (limited to 'source4/build/pidl/ndr.pm')
-rw-r--r-- | source4/build/pidl/ndr.pm | 54 |
1 files changed, 14 insertions, 40 deletions
diff --git a/source4/build/pidl/ndr.pm b/source4/build/pidl/ndr.pm index c604d8fe48..09e1d2efc1 100644 --- a/source4/build/pidl/ndr.pm +++ b/source4/build/pidl/ndr.pm @@ -160,7 +160,7 @@ sub GetElementLevelTable($) DATA_TYPE => $e->{TYPE}, IS_DEFERRED => $is_deferred, CONTAINS_DEFERRED => can_contain_deferred($e), - IS_SURROUNDING => is_surrounding_string($e) + IS_SURROUNDING => 0 #FIXME }); my $i = 0; @@ -203,17 +203,6 @@ sub pointer_type($) return undef; } -sub is_surrounding_string($) -{ - my $e = shift; - - return 0; #FIXME - - return ($e->{TYPE} eq "string") and ($e->{POINTERS} == 0) - and util::property_matches($e, "flag", ".*LIBNDR_FLAG_STR_CONFORMANT.*") - and $e->{PARENT}->{TYPE} ne "FUNCTION"; -} - ##################################################################### # work out the correct alignment for a structure or union sub find_largest_alignment($) @@ -367,8 +356,7 @@ sub ParseBitmap($) sub ParseTypedef($$) { - my $ndr = shift; - my $d = shift; + my ($ndr,$d) = @_; my $data; if ($d->{DATA}->{TYPE} eq "STRUCT" or $d->{DATA}->{TYPE} eq "UNION") { @@ -379,17 +367,12 @@ sub ParseTypedef($$) $d->{DATA}->{PROPERTIES} = $d->{PROPERTIES}; } - if ($d->{DATA}->{TYPE} eq "STRUCT") { - $data = ParseStruct($d->{DATA}); - } elsif ($d->{DATA}->{TYPE} eq "UNION") { - $data = ParseUnion($d->{DATA}); - } elsif ($d->{DATA}->{TYPE} eq "ENUM") { - $data = ParseEnum($d->{DATA}); - } elsif ($d->{DATA}->{TYPE} eq "BITMAP") { - $data = ParseBitmap($d->{DATA}); - } else { - die("Unknown data type '$d->{DATA}->{TYPE}'"); - } + $data = { + STRUCT => \&ParseStruct, + UNION => \&ParseUnion, + ENUM => \&ParseEnum, + BITMAP => \&ParseBitmap + }->{$d->{DATA}->{TYPE}}->($d->{DATA}); $data->{ALIGN} = align_type($d->{NAME}); @@ -403,24 +386,19 @@ sub ParseTypedef($$) sub ParseConst($$) { - my $ndr = shift; - my $d = shift; + my ($ndr,$d) = @_; return $d; } sub ParseFunction($$$) { - my $ndr = shift; - my $d = shift; - my $opnum = shift; + my ($ndr,$d,$opnum) = @_; my @elements = (); my $rettype = undef; my $thisopnum = undef; - CheckPointerTypes($d, - $ndr->{PROPERTIES}->{pointer_default_top} - ); + CheckPointerTypes($d, $ndr->{PROPERTIES}->{pointer_default_top}); if (not defined($d->{PROPERTIES}{noopnum})) { $thisopnum = ${$opnum}; @@ -534,9 +512,7 @@ sub Parse($) my $idl = shift; my @ndr = (); - foreach my $x (@{$idl}) { - push @ndr, ParseInterface($x); - } + push(@ndr, ParseInterface($_)) foreach (@{$idl}); return \@ndr; } @@ -558,8 +534,7 @@ sub GetNextLevel($$) sub GetPrevLevel($$) { - my $e = shift; - my $fl = shift; + my ($e,$fl) = @_; my $prev = undef; foreach my $l (@{$e->{LEVELS}}) { @@ -572,8 +547,7 @@ sub GetPrevLevel($$) sub ContainsDeferred($$) { - my $e = shift; - my $l = shift; + my ($e,$l) = @_; do { return 1 if ($l->{IS_DEFERRED}); |