From 65ddc6e9b93f5e0527febe1c6bb9dd7f9355530e Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 7 Jul 2005 08:32:35 +0000 Subject: r8200: - added stub functions for union pull/push - kill the js interpreter with an exception on internal errors (This used to be commit 5f062d71481a0aa2d8c89099abb2d171b789879e) --- source4/build/pidl/ejs.pm | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) (limited to 'source4/build/pidl') diff --git a/source4/build/pidl/ejs.pm b/source4/build/pidl/ejs.pm index bd35078abd..8c35da4f2e 100644 --- a/source4/build/pidl/ejs.pm +++ b/source4/build/pidl/ejs.pm @@ -158,6 +158,18 @@ sub EjsStructPull($$) pidl "}\n\n"; } +########################### +# pull a union +sub EjsUnionPull($$) +{ + my $name = shift; + my $d = shift; + my $env = GenerateStructEnv($d); + pidl "\nstatic NTSTATUS ejs_pull_$name(struct ejs_rpc *ejs, struct MprVar *v, const char *name, union $name *r)\n{\n"; + pidl "return ejs_panic(ejs, \"union pull not handled\");\n"; + pidl "}\n\n"; +} + ########################### # pull a enum sub EjsEnumPull($$) @@ -178,8 +190,15 @@ sub EjsEnumPull($$) sub EjsTypedefPull($) { my $d = shift; - $d->{DATA}->{TYPE} eq 'STRUCT' && EjsStructPull($d->{NAME}, $d->{DATA}); - $d->{DATA}->{TYPE} eq 'ENUM' && EjsEnumPull($d->{NAME}, $d->{DATA}); + if ($d->{DATA}->{TYPE} eq 'STRUCT') { + EjsStructPull($d->{NAME}, $d->{DATA}); + } elsif ($d->{DATA}->{TYPE} eq 'UNION') { + EjsUnionPull($d->{NAME}, $d->{DATA}); + } elsif ($d->{DATA}->{TYPE} eq 'ENUM') { + EjsEnumPull($d->{NAME}, $d->{DATA}); + } else { + die "Unhandled pull typedef $d->{NAME} of type $d->{TYPE}\n"; + } } ##################### @@ -306,7 +325,7 @@ sub EjsUnionPush($$) my $name = shift; my $d = shift; pidl "\nstatic NTSTATUS ejs_push_$name(struct ejs_rpc *ejs, struct MprVar *v, const char *name, const union $name *r)\n{\n"; - pidl "\treturn NT_STATUS_OK;\n"; + pidl "return ejs_panic(ejs, \"union push not handled\");\n"; pidl "}\n\n"; } @@ -329,9 +348,15 @@ sub EjsEnumPush($$) sub EjsTypedefPush($) { my $d = shift; - $d->{DATA}->{TYPE} eq 'STRUCT' && EjsStructPush($d->{NAME}, $d->{DATA}); - $d->{DATA}->{TYPE} eq 'UNION' && EjsUnionPush($d->{NAME}, $d->{DATA}); - $d->{DATA}->{TYPE} eq 'ENUM' && EjsEnumPush($d->{NAME}, $d->{DATA}); + if ($d->{DATA}->{TYPE} eq 'STRUCT') { + EjsStructPush($d->{NAME}, $d->{DATA}); + } elsif ($d->{DATA}->{TYPE} eq 'UNION') { + EjsUnionPush($d->{NAME}, $d->{DATA}); + } elsif ($d->{DATA}->{TYPE} eq 'ENUM') { + EjsEnumPush($d->{NAME}, $d->{DATA}); + } else { + die "Unhandled push typedef $d->{NAME} of type $d->{TYPE}\n"; + } } -- cgit