From a074602362acd881e3e7ac3b987df93fee3cb9f8 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 21 Feb 2007 11:32:48 +0000 Subject: r21487: Fix warning when using anonymous types, initial work on nested type support in ejs. (This used to be commit a396c5de12cd958fe0457fa5372e539132ad7ed9) --- source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm | 34 +++++++++++++++++++----- source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm | 3 +++ 2 files changed, 31 insertions(+), 6 deletions(-) (limited to 'source4/pidl/lib/Parse') diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm b/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm index 13a8460a81..0d2f0fc8f2 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm @@ -157,7 +157,15 @@ sub EjsPullScalar($$$$$) and (defined($pl) and $pl->{TYPE} eq "POINTER")) { $var = get_pointer_to($var); } - pidl "NDR_CHECK(ejs_pull_$e->{TYPE}(ejs, v, $name, $var));"; + + my $t; + if (ref($e->{TYPE}) eq "HASH") { + $t = "$e->{TYPE}->{TYPE}_$e->{TYPE}->{NAME}"; + } else { + $t = $e->{TYPE}; + } + + pidl "NDR_CHECK(ejs_pull_$t(ejs, v, $name, $var));"; } ########################### @@ -449,7 +457,15 @@ sub EjsPushScalar($$$$$) or (defined($pl) and $pl->{TYPE} eq "POINTER")) { $var = get_pointer_to($var); } - pidl "NDR_CHECK(ejs_push_$e->{TYPE}(ejs, v, $name, $var));"; + + my $t; + if (ref($e->{TYPE}) eq "HASH") { + $t = "$e->{TYPE}->{TYPE}_$e->{TYPE}->{NAME}"; + } else { + $t = $e->{TYPE}; + } + + pidl "NDR_CHECK(ejs_push_$t(ejs, v, $name, $var));"; } ########################### @@ -877,11 +893,17 @@ sub NeededTypedef($$) foreach (@{$t->{DATA}->{ELEMENTS}}) { next if (has_property($_, "subcontext")); #FIXME: Support subcontexts - unless (defined($needed->{"pull_$_->{TYPE}"})) { - $needed->{"pull_$_->{TYPE}"} = $needed->{"pull_$t->{NAME}"}; + my $n; + if (ref($_->{TYPE}) eq "HASH") { + $n = "$_->{TYPE}->{TYPE}_$_->{TYPE}->{NAME}"; + } else { + $n = $_->{TYPE}; + } + unless (defined($needed->{"pull_$n"})) { + $needed->{"pull_$n"} = $needed->{"pull_$t->{NAME}"}; } - unless (defined($needed->{"push_$_->{TYPE}"})) { - $needed->{"push_$_->{TYPE}"} = $needed->{"push_$t->{NAME}"}; + unless (defined($needed->{"push_$n"})) { + $needed->{"push_$n"} = $needed->{"push_$t->{NAME}"}; } } } diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm index 2ae4a3b17e..b6209d9f9a 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm @@ -2651,6 +2651,9 @@ sub NeededElement($$$) return if ($e->{TYPE} eq "EMPTY"); + return if (ref($e->{TYPE}) eq "HASH" and + not defined($e->{TYPE}->{NAME})); + my ($t, $rt); if (ref($e->{TYPE}) eq "HASH") { $t = $e->{TYPE}->{TYPE}."_".$e->{TYPE}->{NAME}; -- cgit