r24516: don't use ->{ORIGINAL}
authorStefan Metzmacher <metze@samba.org>
Fri, 17 Aug 2007 12:04:41 +0000 (12:04 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 20:02:07 +0000 (15:02 -0500)
metze
(This used to be commit 98d8753d37e5ac6273316c83bf6f0e6851afd30a)

source4/pidl/lib/Parse/Pidl/Samba4/Header.pm

index 52263e848ac5b353da2d630bea25bfbbb32321b0..f03f7c0c43a3bf41f43a20067680f0d2a2288b28 100644 (file)
@@ -10,6 +10,7 @@ use strict;
 use Parse::Pidl qw(fatal);
 use Parse::Pidl::Typelist qw(mapTypeName scalar_is_reference);
 use Parse::Pidl::Util qw(has_property is_constant);
+use Parse::Pidl::NDR qw(GetPrevLevel);
 use Parse::Pidl::Samba4 qw(is_intree);
 
 use vars qw($VERSION);
@@ -64,23 +65,30 @@ sub HeaderElement($)
                        HeaderType($element, $element->{TYPE}, "");
                }
                pidl " ";
-               my $numstar = $element->{ORIGINAL}->{POINTERS};
+               my $numstar = 0;
+               foreach my $l (@{$element->{LEVELS}}) {
+                       next unless ($l->{TYPE} eq "POINTER");
+                       $numstar++;
+               }
                if ($numstar >= 1) {
                        $numstar-- if (scalar_is_reference($element->{TYPE}));
                }
-               foreach (@{$element->{ORIGINAL}->{ARRAY_LEN}})
-               {
-                       next if is_constant($_) and 
+               foreach my $l (@{$element->{LEVELS}}) {
+                       next unless ($l->{TYPE} eq "ARRAY");
+                       next if ($l->{IS_FIXED}) and
                                not has_property($element, "charset");
+                       my $pl = GetPrevLevel($element, $l);
+                       next if (defined($pl) and $pl->{TYPE} eq "POINTER");
                        $numstar++;
                }
                pidl "*" foreach (1..$numstar);
        }
        pidl $element->{NAME};
-       foreach (@{$element->{ORIGINAL}->{ARRAY_LEN}}) {
-               next unless (is_constant($_) and 
+       foreach my $l (@{$element->{LEVELS}}) {
+               next unless ($l->{TYPE} eq "ARRAY");
+               next unless ($l->{IS_FIXED} and
                        not has_property($element, "charset"));
-               pidl "[$_]";
+               pidl "[$l->{SIZE_IS}]";
        }
 
        pidl ";";