pidl tabs();
HeaderType($element, $element->{TYPE}, "");
pidl " ";
- my $pointers = 0;
+ my $prefix = "";
+ my $postfix = "";
foreach my $l (@{$element->{LEVELS}})
{
if (($l->{TYPE} eq "POINTER")) {
next if ($element->{TYPE} eq "string");
- pidl "*";
- $pointers+=1;
- } elsif ($l->{TYPE} eq "ARRAY") {
- if (!$pointers and !$l->{IS_FIXED}) { pidl "*"; }
- pidl "$element->{NAME}";
- if ($l->{IS_FIXED}) { pidl "[$l->{SIZE_IS}]"; }
- last; #FIXME
+ $prefix .= "*";
+ } elsif (($l->{TYPE} eq "ARRAY")) {
+ my $pl = Ndr::GetPrevLevel($element, $l);
+ next if ($pl and $pl->{TYPE} eq "POINTER");
+
+ if ($l->{IS_FIXED}) {
+ $postfix .= "[$l->{SIZE_IS}]";
+ } else {
+ $prefix .= "*";
+ }
} elsif ($l->{TYPE} eq "DATA") {
- pidl "$element->{NAME}";
+ pidl "$prefix$element->{NAME}$postfix";
}
}
{
GUID id; /* Extension identifier. */
uint32 size; /* Extension size. */
- [size_is((size+7)&~7)] uint8 data[]; /* Extension data. */
+ [size_is(((size+7)&~7))] uint8 data[]; /* Extension data. */
} ORPC_EXTENT;
{
uint32 size; /* Num extents. */
uint32 reserved; /* Must be zero. */
- [size_is((size+1)&~1,), unique] ORPC_EXTENT **extent; /* extents */
+ [size_is(((size+1)&~1))] ORPC_EXTENT **extent; /* extents */
} ORPC_EXTENT_ARRAY;