Author: jelmer
Date: 2007-11-25 03:50:05 +0000 (Sun, 25 Nov 2007)
New Revision: 26109

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26109

Log:
Use new SWIG helpers in autogenerated DCE/RPC SWIG files.
Modified:
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/SWIG.pm


Changeset:
Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/SWIG.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/SWIG.pm        
2007-11-25 03:06:50 UTC (rev 26108)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/SWIG.pm        
2007-11-25 03:50:05 UTC (rev 26109)
@@ -23,8 +23,8 @@
        $ret .= $tabs. $p . "\n";
 }
 
-sub indent() { $tabs.="\t"; }
-sub deindent() { $tabs = substr($tabs,0,-1); }
+sub indent() { $tabs.="  "; }
+sub deindent() { $tabs = substr($tabs,0,-2); }
 
 sub IgnoreInterface($$)
 {
@@ -41,29 +41,22 @@
        my ($basename,$if) = @_;
 
        pidl "\%inline {";
-       pidl "struct $if->{NAME} { struct dcerpc_pipe *pipe; };";
+       pidl "typedef struct $if->{NAME} { struct dcerpc_pipe *pipe; } 
$if->{NAME};";
        pidl "}";
        pidl "";
        pidl "\%extend $if->{NAME} {";
        indent();
-       pidl "$if->{NAME} (const char *binding, struct cli_credentials *cred = 
NULL, TALLOC_CTX *mem_ctx = NULL, struct event_context *event = NULL)";
+       pidl "NTSTATUS $if->{NAME} (const char *binding, struct cli_credentials 
*cred, TALLOC_CTX *mem_ctx, struct event_context *event, struct $if->{NAME} 
**result)";
        pidl "{";
        indent;
-       pidl "struct $if->{NAME} *ret = talloc(mem_ctx, struct $if->{NAME});";
-       pidl "NTSTATUS status;";
+       pidl "*result = talloc(mem_ctx, struct $if->{NAME});";
        pidl "";
-       pidl "status = dcerpc_pipe_connect(mem_ctx, &ret->pipe, binding, 
&ndr_table_$if->{NAME}, cred, event);";
-       pidl "if (NT_STATUS_IS_ERR(status)) {";
-       pidl "\tntstatus_exception(status);";
-       pidl "\treturn NULL;";
-       pidl "}";
-       pidl "";
-       pidl "return ret;";
+       pidl "return dcerpc_pipe_connect(mem_ctx, &(*result)->pipe, binding, 
&ndr_table_$if->{NAME}, cred, event);";
        deindent;
        pidl "}";
        pidl "";
        pidl "~$if->{NAME}() {";
-       pidl "\ttalloc_free(self);";
+       pidl "\ttalloc_free(\$self);";
        pidl "}";
        pidl "";
 
@@ -76,8 +69,8 @@
                my $name = $fn->{NAME};
                $name =~ s/^$if->{NAME}_//g;
                $name =~ s/^$basename\_//g;
-               $args .= "TALLOC_CTX *mem_ctx = NULL";
-               pidl mapTypeName($fn->{RETURN_TYPE}) . " $name($args)";
+               $args .= "TALLOC_CTX *mem_ctx, " . 
mapTypeName($fn->{RETURN_TYPE}) . " *result";
+               pidl "NTSTATUS $name($args)";
                pidl "{";
                indent;
                pidl "struct $fn->{NAME} r;";
@@ -94,12 +87,7 @@
                pidl "";
                pidl "status = dcerpc_$fn->{NAME}(self->pipe, mem_ctx, &r);";
                pidl "if (NT_STATUS_IS_ERR(status)) {";
-               pidl "\tntstatus_exception(status);";
-               if (defined($fn->{RETURN_TYPE})) {
-                       pidl "\treturn r.out.result;";
-               } else {
-                       pidl "\treturn;";
-               }
+               pidl "\treturn status;";
                pidl "}";
                pidl "";
                pidl "/* Set out arguments */";
@@ -112,8 +100,9 @@
                }
 
                if (defined($fn->{RETURN_TYPE})) {
-                       pidl "return r.out.result;";
+                       pidl "*result = r.out.result;";
                }
+               pidl "return NT_STATUS_OK;";
                deindent;
                pidl "}";
                pidl "";
@@ -144,19 +133,12 @@
 
        pidl "\%{";
        pidl "#include \"includes.h\"";
-       pidl "#include \"auth/credentials/credentials.h\"";
        pidl "#include \"$header\"";
        pidl "#include \"$gen_header\"";
        pidl "%}";
-       pidl "\%import \"samba.i\"";
+       pidl "\%import \"../rpc/dcerpc.i\"";
+       pidl "\%import \"../../libcli/util/errors.i\"";
        pidl "";
-       pidl "\%inline {";
-       pidl "void ntstatus_exception(NTSTATUS status)"; 
-       pidl "{";
-       pidl "\t/* FIXME */";
-       pidl "}";
-       pidl "}";
-       pidl "";
        foreach (@$ndr) {
                IgnoreInterface($basename, $_) if ($_->{TYPE} eq "INTERFACE");
        }

Reply via email to