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