summaryrefslogtreecommitdiff
path: root/source4/pidl/lib/Parse/Pidl/Samba3/Types.pm
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2005-10-08 20:19:35 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:39:34 -0500
commit36517c801cb7116df635dea8a129730c5bc014ea (patch)
tree1421a83ddee63d071f1b649dfb30b59ff212fbf5 /source4/pidl/lib/Parse/Pidl/Samba3/Types.pm
parentfa0fbb46b8268ebaec4f8f2c7b18e3ceebb58b53 (diff)
downloadsamba-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.pm48
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,