svn commit: samba r6418 - in branches/tmp/pidl2/source/build/pidl: .
jelmer at samba.org
jelmer at samba.org
Thu Apr 21 08:03:38 GMT 2005
Author: jelmer
Date: 2005-04-21 08:03:38 +0000 (Thu, 21 Apr 2005)
New Revision: 6418
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=6418
Log:
Allow determining the prefix necessary for getting to the value of a variable
Modified:
branches/tmp/pidl2/source/build/pidl/ndr_parser.pm
Changeset:
Modified: branches/tmp/pidl2/source/build/pidl/ndr_parser.pm
===================================================================
--- branches/tmp/pidl2/source/build/pidl/ndr_parser.pm 2005-04-21 07:57:52 UTC (rev 6417)
+++ branches/tmp/pidl2/source/build/pidl/ndr_parser.pm 2005-04-21 08:03:38 UTC (rev 6418)
@@ -21,6 +21,25 @@
return $typefamily{$n};
}
+sub append_prefix($$)
+{
+ my $e = shift;
+ my $var_name = shift;
+ my $pointers = 0;
+
+ foreach my $l (@{$e->{LEVELS}}) {
+ if ($l->{TYPE} eq "POINTER") {
+ $pointers++;
+ } elsif ($l->{TYPE} eq "DATA") {
+ if ($l->{DATA_TYPE} eq "string") {
+ return get_value_of($var_name) unless ($pointers);
+ }
+ }
+ }
+
+ return $var_name;
+}
+
# see if a variable needs to be allocated by the NDR subsystem on pull
sub need_alloc($)
{
@@ -628,6 +647,8 @@
my $var_name = $var_prefix.$e->{NAME};
+ $var_name = append_prefix($e, $var_name);
+
return unless $primitives or ($deferred and ContainsDeferred($e));
start_flags($e);
@@ -717,6 +738,7 @@
my($var_name) = shift;
my $env = shift;
+ $var_name = append_prefix($e, $var_name);
return if (util::has_property($e, "noprint"));
if (my $value = util::has_property($e, "value")) {
@@ -886,6 +908,8 @@
my $var_name = $var_prefix.$e->{NAME};
+ $var_name = append_prefix($e, $var_name);
+
my $previous = undef;
return unless $primitives or ($deferred and ContainsDeferred($e));
More information about the samba-cvs
mailing list