diff options
Diffstat (limited to 'source4/pidl/lib/Parse')
| -rw-r--r-- | source4/pidl/lib/Parse/Pidl/NDR.pm | 4 | ||||
| -rw-r--r-- | source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm | 17 | 
2 files changed, 14 insertions, 7 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/NDR.pm b/source4/pidl/lib/Parse/Pidl/NDR.pm index 1d5059bfb5..c8a9717889 100644 --- a/source4/pidl/lib/Parse/Pidl/NDR.pm +++ b/source4/pidl/lib/Parse/Pidl/NDR.pm @@ -917,6 +917,10 @@ sub ValidElement($)  		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");  	} diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm index d9666a20fe..e3058665f2 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm @@ -729,9 +729,15 @@ sub ParseElementPrint($$$)  {  	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 @@ sub ParseStructPrint($$)  	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);  | 
