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

jelmer at samba.org jelmer at samba.org
Fri Mar 24 14:13:03 GMT 2006


Author: jelmer
Date: 2006-03-24 14:13:02 +0000 (Fri, 24 Mar 2006)
New Revision: 14691

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

Log:
Fix printing elements with represent_as set

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-03-24 12:40:07 UTC (rev 14690)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm	2006-03-24 14:13:02 UTC (rev 14691)
@@ -917,6 +917,10 @@
 		fatal($e, el_name($e) . " : represent_as() and transmit_as() can not be used on the same element");
 	}
 
+	if (has_property($e, "represent_as") and has_property($e, "value")) {
+		fatal($e, el_name($e) . " : represent_as() and value() can not be used on the same element");
+	}
+
 	if (defined (has_property($e, "subcontext_size")) and not defined(has_property($e, "subcontext"))) {
 		fatal($e, el_name($e) . " : subcontext_size() on non-subcontext element");
 	}

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-03-24 12:40:07 UTC (rev 14690)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm	2006-03-24 14:13:02 UTC (rev 14691)
@@ -729,9 +729,15 @@
 {
 	my($e,$var_name,$env) = @_;
 
-	$var_name = append_prefix($e, $var_name);
 	return if (has_property($e, "noprint"));
 
+	if ($e->{REPRESENTATION_TYPE}) {
+		pidl "ndr_print_$e->{REPRESENTATION_TYPE}(ndr, \"$e->{NAME}\", $var_name);";
+		return;
+	}
+
+	$var_name = append_prefix($e, $var_name);
+
 	if (my $value = has_property($e, "value")) {
 		$var_name = "(ndr->flags & LIBNDR_PRINT_SET_VALUES)?" . ParseExpr($value,$env) . ":$var_name";
 	}
@@ -1411,18 +1417,15 @@
 
 	EnvSubstituteValue($env, $struct);
 
-	foreach my $e (@{$struct->{ELEMENTS}}) {
-		DeclareArrayVariables($e);
-	}
+	DeclareArrayVariables($_) foreach (@{$struct->{ELEMENTS}});
 
 	pidl "ndr_print_struct(ndr, name, \"$name\");";
 
 	start_flags($struct);
 
 	pidl "ndr->depth++;";
-	foreach my $e (@{$struct->{ELEMENTS}}) {
-		ParseElementPrint($e, "r->$e->{NAME}", $env);
-	}
+	
+	ParseElementPrint($_, "r->$_->{NAME}", $env) foreach (@{$struct->{ELEMENTS}});
 	pidl "ndr->depth--;";
 
 	end_flags($struct);



More information about the samba-cvs mailing list