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);

Reply via email to