1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-06 16:23:49 +03:00

r21487: Fix warning when using anonymous types, initial work on nested type support in ejs.

This commit is contained in:
Jelmer Vernooij
2007-02-21 11:32:48 +00:00
committed by Gerald (Jerry) Carter
parent d2307f3f7e
commit a396c5de12
3 changed files with 32 additions and 7 deletions

View File

@@ -99,7 +99,7 @@ interface rpcecho
} echo_Enum1_32; } echo_Enum1_32;
typedef struct { typedef struct {
echo_Enum1 e1; enum { foo=1, bar=2} e1;
echo_Enum1_32 e2; echo_Enum1_32 e2;
} echo_Enum2; } echo_Enum2;

View File

@@ -157,7 +157,15 @@ sub EjsPullScalar($$$$$)
and (defined($pl) and $pl->{TYPE} eq "POINTER")) { and (defined($pl) and $pl->{TYPE} eq "POINTER")) {
$var = get_pointer_to($var); $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")) { or (defined($pl) and $pl->{TYPE} eq "POINTER")) {
$var = get_pointer_to($var); $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}}) { foreach (@{$t->{DATA}->{ELEMENTS}}) {
next if (has_property($_, "subcontext")); #FIXME: Support subcontexts next if (has_property($_, "subcontext")); #FIXME: Support subcontexts
unless (defined($needed->{"pull_$_->{TYPE}"})) { my $n;
$needed->{"pull_$_->{TYPE}"} = $needed->{"pull_$t->{NAME}"}; if (ref($_->{TYPE}) eq "HASH") {
$n = "$_->{TYPE}->{TYPE}_$_->{TYPE}->{NAME}";
} else {
$n = $_->{TYPE};
} }
unless (defined($needed->{"push_$_->{TYPE}"})) { unless (defined($needed->{"pull_$n"})) {
$needed->{"push_$_->{TYPE}"} = $needed->{"push_$t->{NAME}"}; $needed->{"pull_$n"} = $needed->{"pull_$t->{NAME}"};
}
unless (defined($needed->{"push_$n"})) {
$needed->{"push_$n"} = $needed->{"push_$t->{NAME}"};
} }
} }
} }

View File

@@ -2651,6 +2651,9 @@ sub NeededElement($$$)
return if ($e->{TYPE} eq "EMPTY"); return if ($e->{TYPE} eq "EMPTY");
return if (ref($e->{TYPE}) eq "HASH" and
not defined($e->{TYPE}->{NAME}));
my ($t, $rt); my ($t, $rt);
if (ref($e->{TYPE}) eq "HASH") { if (ref($e->{TYPE}) eq "HASH") {
$t = $e->{TYPE}->{TYPE}."_".$e->{TYPE}->{NAME}; $t = $e->{TYPE}->{TYPE}."_".$e->{TYPE}->{NAME};