svn commit: samba r15327 - in branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl: . Samba4/NDR

jelmer at samba.org jelmer at samba.org
Sat Apr 29 17:33:33 GMT 2006


Author: jelmer
Date: 2006-04-29 17:33:32 +0000 (Sat, 29 Apr 2006)
New Revision: 15327

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

Log:
Support 'nosize'. Also write prototypes for print and size functions that are manually written.

Modified:
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm


Changeset:
Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm	2006-04-29 17:30:21 UTC (rev 15326)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm	2006-04-29 17:33:32 UTC (rev 15327)
@@ -787,6 +787,7 @@
 	"public"		=> ["FUNCTION", "TYPEDEF"],
 	"nopush"		=> ["FUNCTION", "TYPEDEF"],
 	"nopull"		=> ["FUNCTION", "TYPEDEF"],
+	"nosize"		=> ["FUNCTION", "TYPEDEF"],
 	"noprint"		=> ["FUNCTION", "TYPEDEF"],
 	"noejs"			=> ["FUNCTION", "TYPEDEF"],
 

Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm	2006-04-29 17:30:21 UTC (rev 15326)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm	2006-04-29 17:33:32 UTC (rev 15327)
@@ -198,12 +198,19 @@
 {
 	my ($type,$fn,$decl) = @_;
 
-	if (has_property($fn, "no$type") or has_property($fn, "public")) {
+	if (has_property($fn, "no$type")) {
 		pidl_hdr "$decl;";
-		pidl "_PUBLIC_ $decl" unless (has_property($fn, "no$type"));
+		return 0;
+	}
+
+	if (has_property($fn, "public")) {
+		pidl_hdr "$decl;";
+		pidl "_PUBLIC_ $decl";
 	} else {
 		pidl "static $decl";
 	}
+
+	return 1;
 }
 
 ###################################################################
@@ -1814,7 +1821,7 @@
 	my($e) = shift;
 
 	my $args = $typefamily{$e->{DATA}->{TYPE}}->{DECL}->($e,"push");
-	fn_declare("push", $e, "NTSTATUS ndr_push_$e->{NAME}(struct ndr_push *ndr, int ndr_flags, $args)");
+	fn_declare("push", $e, "NTSTATUS ndr_push_$e->{NAME}(struct ndr_push *ndr, int ndr_flags, $args)") or return;
 
 	pidl "{";
 	indent;
@@ -1833,7 +1840,7 @@
 
 	my $args = $typefamily{$e->{DATA}->{TYPE}}->{DECL}->($e,"pull");
 
-	fn_declare("pull", $e, "NTSTATUS ndr_pull_$e->{NAME}(struct ndr_pull *ndr, int ndr_flags, $args)");
+	fn_declare("pull", $e, "NTSTATUS ndr_pull_$e->{NAME}(struct ndr_pull *ndr, int ndr_flags, $args)") or return;
 
 	pidl "{";
 	indent;
@@ -1852,8 +1859,11 @@
 
 	my $args = $typefamily{$e->{DATA}->{TYPE}}->{DECL}->($e,"print");
 
+	pidl_hdr "void ndr_print_$e->{NAME}(struct ndr_print *ndr, const char *name, $args);";
+
+	return if (has_property($e, "noprint"));
+
 	pidl "_PUBLIC_ void ndr_print_$e->{NAME}(struct ndr_print *ndr, const char *name, $args)";
-	pidl_hdr "void ndr_print_$e->{NAME}(struct ndr_print *ndr, const char *name, $args);";
 	pidl "{";
 	indent;
 	$typefamily{$e->{DATA}->{TYPE}}->{PRINT_FN_BODY}->($e->{DATA}, $e->{NAME});
@@ -1871,7 +1881,7 @@
 	my $tf = $typefamily{$t->{DATA}->{TYPE}};
 	my $args = $tf->{SIZE_FN_ARGS}->($t);
 
-	fn_declare("size", $t, "size_t ndr_size_$t->{NAME}($args)");
+	fn_declare("size", $t, "size_t ndr_size_$t->{NAME}($args)") or return;
 
 	pidl "{";
 	indent;
@@ -1887,10 +1897,11 @@
 {
 	my($fn) = shift;
 
+	pidl_hdr "void ndr_print_$fn->{NAME}(struct ndr_print *ndr, const char *name, int flags, const struct $fn->{NAME} *r);";
+
 	return if has_property($fn, "noprint");
 
 	pidl "_PUBLIC_ void ndr_print_$fn->{NAME}(struct ndr_print *ndr, const char *name, int flags, const struct $fn->{NAME} *r)";
-	pidl_hdr "void ndr_print_$fn->{NAME}(struct ndr_print *ndr, const char *name, int flags, const struct $fn->{NAME} *r);";
 	pidl "{";
 	indent;
 
@@ -1952,7 +1963,7 @@
 { 
 	my($fn) = shift;
 
-	fn_declare("push", $fn, "NTSTATUS ndr_push_$fn->{NAME}(struct ndr_push *ndr, int flags, const struct $fn->{NAME} *r)");
+	fn_declare("push", $fn, "NTSTATUS ndr_push_$fn->{NAME}(struct ndr_push *ndr, int flags, const struct $fn->{NAME} *r)") or return;
 
 	return if has_property($fn, "nopush");
 
@@ -2033,10 +2044,8 @@
 	my($fn) = shift;
 
 	# pull function args
-	fn_declare("pull", $fn, "NTSTATUS ndr_pull_$fn->{NAME}(struct ndr_pull *ndr, int flags, struct $fn->{NAME} *r)");
+	fn_declare("pull", $fn, "NTSTATUS ndr_pull_$fn->{NAME}(struct ndr_pull *ndr, int flags, struct $fn->{NAME} *r)") or return;
 
-	return if has_property($fn, "nopull");
-
 	pidl "{";
 	indent;
 
@@ -2405,9 +2414,9 @@
 {
 	my ($t,$needed) = @_;
 	if (has_property($t, "public")) {
-		$needed->{"pull_$t->{NAME}"} = not has_property($t, "nopull");
-		$needed->{"push_$t->{NAME}"} = not has_property($t, "nopush");
-		$needed->{"print_$t->{NAME}"} = not has_property($t, "noprint");
+		$needed->{"pull_$t->{NAME}"} = 1;
+		$needed->{"push_$t->{NAME}"} = 1;
+		$needed->{"print_$t->{NAME}"} = 1;
 	}
 
 	if ($t->{DATA}->{TYPE} eq "STRUCT" or $t->{DATA}->{TYPE} eq "UNION") {



More information about the samba-cvs mailing list