diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2005-10-08 20:19:35 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:39:34 -0500 |
commit | 36517c801cb7116df635dea8a129730c5bc014ea (patch) | |
tree | 1421a83ddee63d071f1b649dfb30b59ff212fbf5 /source4/pidl/lib/Parse/Pidl/Samba3/Types.pm | |
parent | fa0fbb46b8268ebaec4f8f2c7b18e3ceebb58b53 (diff) | |
download | samba-36517c801cb7116df635dea8a129730c5bc014ea.tar.gz samba-36517c801cb7116df635dea8a129730c5bc014ea.tar.bz2 samba-36517c801cb7116df635dea8a129730c5bc014ea.zip |
r10842: Fix some issues with [out] unions that have a discriminator that is only
[in]
(This used to be commit 3a4086d6142fa73b3adb2d66b1bfc9cd2585f31d)
Diffstat (limited to 'source4/pidl/lib/Parse/Pidl/Samba3/Types.pm')
-rw-r--r-- | source4/pidl/lib/Parse/Pidl/Samba3/Types.pm | 48 |
1 files changed, 12 insertions, 36 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/Samba3/Types.pm b/source4/pidl/lib/Parse/Pidl/Samba3/Types.pm index 8cb09343ac..135b02f1e3 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba3/Types.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba3/Types.pm @@ -205,12 +205,6 @@ sub AddType($$) $known_types->{$t} = $d; } -sub GetType($) -{ - my $e = shift; - -} - # Return type without special stuff, as used in # declarations for internal structs sub DeclShort($) @@ -305,14 +299,9 @@ sub InitType($$$$) } } -sub DissectType +sub DissectType($$$$$) { - my @args = @_; - my $e = shift @_; - my $l = shift @_; - my $varname = shift @_; - my $what = shift @_; - my $align = shift @_; + my ($e,$l,$varname,$what,$align) = @_; my $t = $known_types->{$l->{DATA_TYPE}}; @@ -332,7 +321,7 @@ sub DissectType # DISSECT can be a function if (ref($dissect) eq "CODE") { - return $dissect->(@args); + return $dissect->($e,$l,$varname,$what,$align); } else { return $dissect; } @@ -356,31 +345,18 @@ sub LoadTypes($) my $dissect_p; if ($td->{DATA}->{TYPE} eq "UNION") { $decl.="_CTR"; - $dissect_p = sub { - my ($e,$l,$n,$w,$a,$s) = @_; - - return "$if->{NAME}_io_$td->{NAME}_p(\"$e->{NAME}\", &$n, $s, ps, depth)"; - }; + } - $dissect_d = sub { - my ($e,$l,$n,$w,$a,$s) = @_; + $dissect_p = sub { + my ($e,$l,$n,$w,$a) = @_; - return "$if->{NAME}_io_$td->{NAME}_d(\"$e->{NAME}\", &$n, $s, ps, depth)"; - }; - - } else { - $dissect_p = sub { - my ($e,$l,$n,$w,$a) = @_; - - return "$if->{NAME}_io_$td->{NAME}_p(\"$e->{NAME}\", &$n, ps, depth)"; - }; - $dissect_d = sub { - my ($e,$l,$n,$w,$a) = @_; - - return "$if->{NAME}_io_$td->{NAME}_d(\"$e->{NAME}\", &$n, ps, depth)"; - }; + return "$if->{NAME}_io_$td->{NAME}_p(\"$e->{NAME}\", &$n, ps, depth)"; + }; + $dissect_d = sub { + my ($e,$l,$n,$w,$a) = @_; - } + return "$if->{NAME}_io_$td->{NAME}_d(\"$e->{NAME}\", &$n, ps, depth)"; + }; AddType($td->{NAME}, { DECL => $decl, |