svn commit: samba r5669 - in branches/SAMBA_4_0/source/build/pidl: .

jelmer at samba.org jelmer at samba.org
Sun Mar 6 12:33:44 GMT 2005


Author: jelmer
Date: 2005-03-06 12:33:44 +0000 (Sun, 06 Mar 2005)
New Revision: 5669

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

Log:
Couple of minor clearifications, simplifications.

Added:
   branches/SAMBA_4_0/source/build/pidl/ndr_client.pm
Removed:
   branches/SAMBA_4_0/source/build/pidl/client.pm
Modified:
   branches/SAMBA_4_0/source/build/pidl/README
   branches/SAMBA_4_0/source/build/pidl/ndr_header.pm
   branches/SAMBA_4_0/source/build/pidl/pidl.pl


Changeset:
Modified: branches/SAMBA_4_0/source/build/pidl/README
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/README	2005-03-06 08:24:34 UTC (rev 5668)
+++ branches/SAMBA_4_0/source/build/pidl/README	2005-03-06 12:33:44 UTC (rev 5669)
@@ -18,12 +18,12 @@
 validator.pm  - Validates the parse tree
 
 -- DCE/RPC+NDR --
-client.pm - Generates client call functions in C
+ndr_client.pm - Generates client call functions in C using the NDR parser
 eparser.pm - Generates a parser for the ethereal network sniffer by 
 				applying regexes to the output of parser.pm
 swig.pm	- Generates SWIG interface files (.i)
-header.pm - Generates a header file with structures
-parser.pm - Generates pull/push functions for parsing 
+ndr_header.pm - Generates a header file with structures
+ndr.pm - Generates pull/push functions for parsing NDR
 server.pm - Generates server side implementation in C
 template.pm - Generates stubs in C for server implementation
 

Deleted: branches/SAMBA_4_0/source/build/pidl/client.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/client.pm	2005-03-06 08:24:34 UTC (rev 5668)
+++ branches/SAMBA_4_0/source/build/pidl/client.pm	2005-03-06 12:33:44 UTC (rev 5669)
@@ -1,70 +0,0 @@
-###################################################
-# client calls generator
-# Copyright tridge at samba.org 2003
-# released under the GNU GPL
-
-package IdlClient;
-
-use strict;
-
-my($res);
-
-#####################################################################
-# parse a function
-sub ParseFunction($$)
-{
-	my $interface = shift;
-	my $fn = shift;
-	my $name = $fn->{NAME};
-	my $uname = uc $name;
-
-	$res .= "
-struct rpc_request *dcerpc_$name\_send(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct $name *r)
-{
-	if (p->conn->flags & DCERPC_DEBUG_PRINT_IN) {
-		NDR_PRINT_IN_DEBUG($name, r);
-	}
-	
-	return dcerpc_ndr_request_send(p, NULL, &dcerpc_table_$interface->{NAME}, DCERPC_$uname, mem_ctx, r);
-}
-
-NTSTATUS dcerpc_$name(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct $name *r)
-{
-	struct rpc_request *req;
-	NTSTATUS status;
-	
-	req = dcerpc_$name\_send(p, mem_ctx, r);
-	if (req == NULL) return NT_STATUS_NO_MEMORY;
-
-	status = dcerpc_ndr_request_recv(req);
-
-        if (NT_STATUS_IS_OK(status) && (p->conn->flags & DCERPC_DEBUG_PRINT_OUT)) {
-		NDR_PRINT_OUT_DEBUG($name, r);		
-	}
-";
-        if ($fn->{RETURN_TYPE} eq "NTSTATUS") {
-             $res .= "\tif (NT_STATUS_IS_OK(status)) status = r->out.result;\n";
-        }
-	$res .= 
-"
-	return status;
-}
-";
-}
-
-
-#####################################################################
-# parse the interface definitions
-sub ParseInterface($)
-{
-	my($interface) = shift;
-	my($data) = $interface->{DATA};
-	$res = "/* Client functions generated by pidl */\n\n";
-	foreach my $d (@{$data}) {
-		($d->{TYPE} eq "FUNCTION") && 
-		    ParseFunction($interface, $d);
-	}
-	return $res;
-}
-
-1;

Copied: branches/SAMBA_4_0/source/build/pidl/ndr_client.pm (from rev 5668, branches/SAMBA_4_0/source/build/pidl/client.pm)
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/client.pm	2005-03-06 08:24:34 UTC (rev 5668)
+++ branches/SAMBA_4_0/source/build/pidl/ndr_client.pm	2005-03-06 12:33:44 UTC (rev 5669)
@@ -0,0 +1,70 @@
+###################################################
+# client calls generator
+# Copyright tridge at samba.org 2003
+# released under the GNU GPL
+
+package NdrClient;
+
+use strict;
+
+my($res);
+
+#####################################################################
+# parse a function
+sub ParseFunction($$)
+{
+	my $interface = shift;
+	my $fn = shift;
+	my $name = $fn->{NAME};
+	my $uname = uc $name;
+
+	$res .= "
+struct rpc_request *dcerpc_$name\_send(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct $name *r)
+{
+	if (p->conn->flags & DCERPC_DEBUG_PRINT_IN) {
+		NDR_PRINT_IN_DEBUG($name, r);
+	}
+	
+	return dcerpc_ndr_request_send(p, NULL, &dcerpc_table_$interface->{NAME}, DCERPC_$uname, mem_ctx, r);
+}
+
+NTSTATUS dcerpc_$name(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct $name *r)
+{
+	struct rpc_request *req;
+	NTSTATUS status;
+	
+	req = dcerpc_$name\_send(p, mem_ctx, r);
+	if (req == NULL) return NT_STATUS_NO_MEMORY;
+
+	status = dcerpc_ndr_request_recv(req);
+
+        if (NT_STATUS_IS_OK(status) && (p->conn->flags & DCERPC_DEBUG_PRINT_OUT)) {
+		NDR_PRINT_OUT_DEBUG($name, r);		
+	}
+";
+        if ($fn->{RETURN_TYPE} eq "NTSTATUS") {
+             $res .= "\tif (NT_STATUS_IS_OK(status)) status = r->out.result;\n";
+        }
+	$res .= 
+"
+	return status;
+}
+";
+}
+
+
+#####################################################################
+# parse the interface definitions
+sub ParseInterface($)
+{
+	my($interface) = shift;
+	my($data) = $interface->{DATA};
+	$res = "/* Client functions generated by pidl */\n\n";
+	foreach my $d (@{$data}) {
+		($d->{TYPE} eq "FUNCTION") && 
+		    ParseFunction($interface, $d);
+	}
+	return $res;
+}
+
+1;

Modified: branches/SAMBA_4_0/source/build/pidl/ndr_header.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/ndr_header.pm	2005-03-06 08:24:34 UTC (rev 5668)
+++ branches/SAMBA_4_0/source/build/pidl/ndr_header.pm	2005-03-06 12:33:44 UTC (rev 5669)
@@ -61,15 +61,12 @@
     HeaderType($element, $element->{TYPE}, "");
     pidl " ";
     if ($element->{POINTERS} && $element->{TYPE} ne "string") {
-	    my($n) = $element->{POINTERS};
-	    for (my($i)=$n; $i > 0; $i--) {
+	    for (my($i)=$element->{POINTERS}; $i > 0; $i--) {
 		    pidl "*";
 	    }
-    }
-    if (defined $element->{ARRAY_LEN} && 
-	!util::is_constant($element->{ARRAY_LEN}) &&
-	!$element->{POINTERS}) {
-	    # conformant arrays are ugly! I choose to implement them with
+    } elsif (NdrParser::is_surrounding_array($element) || 
+		defined $element->{ARRAY_LEN} && !util::is_constant($element->{ARRAY_LEN})) {
+	    # surrounding arrays are ugly! I choose to implement them with
 	    # pointers instead of the [1] method
 	    pidl "*";
     }

Modified: branches/SAMBA_4_0/source/build/pidl/pidl.pl
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/pidl.pl	2005-03-06 08:24:34 UTC (rev 5668)
+++ branches/SAMBA_4_0/source/build/pidl/pidl.pl	2005-03-06 12:33:44 UTC (rev 5669)
@@ -15,10 +15,10 @@
 use File::Basename;
 use idl;
 use dump;
+use ndr_client;
 use ndr_header;
 use ndr;
 use server;
-use client;
 use dcom_proxy;
 use dcom_stub;
 use com_header;
@@ -75,9 +75,9 @@
          --output OUTNAME      put output in OUTNAME.*
          --parse               parse a idl file to a .pidl file
          --dump                dump a pidl file back to idl
-         --header              create a C header file
+         --header              create a C NDR header file
          --parser              create a C NDR parser
-         --client              create a C client
+         --client              create a C NDR client
          --server              create server boilerplate
          --template            print a template for a pipe
          --eparser             create an ethereal parser
@@ -213,7 +213,7 @@
 		$res .= "#include \"$h_filename\"\n\n";
 
 		foreach my $x (@{$pidl}) {
-			$res .= IdlClient::ParseInterface($x);
+			$res .= NdrClient::ParseInterface($x);
 		}
 
 		util::FileSave($client, $res);



More information about the samba-cvs mailing list