summaryrefslogtreecommitdiff
path: root/source4/build/pidl
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2005-01-04 23:15:33 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:08:17 -0500
commit328e260ca9378e83e253f5622ca84ea36b3ebf3a (patch)
tree1b792042c5b14eb1038202458525d5a9ad88d3f0 /source4/build/pidl
parent8d8c21f8d0669b469b2540c3f9e91ca5d076db09 (diff)
downloadsamba-328e260ca9378e83e253f5622ca84ea36b3ebf3a.tar.gz
samba-328e260ca9378e83e253f5622ca84ea36b3ebf3a.tar.bz2
samba-328e260ca9378e83e253f5622ca84ea36b3ebf3a.zip
r4517: Revert previous commit about giving arrays of scalars their own subtree.
Generate code to display using proto_tree_add_bytes() instead. (This used to be commit 6e480fab3a0f70ae17dd7c0b39da924361a354d5)
Diffstat (limited to 'source4/build/pidl')
-rw-r--r--source4/build/pidl/eparser.pm28
1 files changed, 16 insertions, 12 deletions
diff --git a/source4/build/pidl/eparser.pm b/source4/build/pidl/eparser.pm
index a67aa0626d..0038f53123 100644
--- a/source4/build/pidl/eparser.pm
+++ b/source4/build/pidl/eparser.pm
@@ -173,34 +173,38 @@ sub NeededTypedef($)
if ($t->{DATA}->{TYPE} eq "STRUCT") {
for my $e (@{$t->{DATA}->{ELEMENTS}}) {
-
$e->{PARENT} = $t->{DATA};
-
if ($needed{"pull_$t->{NAME}"}) {
$needed{"pull_$e->{TYPE}"} = 1;
}
if (util::is_scalar_type($e->{TYPE})) {
-
+
if (defined($e->{ARRAY_LEN}) or
util::has_property($e, "size_is")) {
- $needed{"ett_$e->{NAME}"} = 1;
+ # Arrays of scalar types are FT_BYTES
+
+ $needed{"hf_$e->{NAME}_$e->{TYPE}_array"} = {
+ 'name' => field2name($e->{NAME}),
+ 'type' => $e->{TYPE},
+ 'ft' => "FT_BYTES",
+ 'base' => elementbase($e)
+ };
} else {
-
$needed{"hf_$e->{NAME}_$e->{TYPE}"} = {
'name' => field2name($e->{NAME}),
'type' => $e->{TYPE},
'ft' => type2ft($e->{TYPE}),
'base' => elementbase($e)
};
-
- $e->{PARENT} = $t->{DATA};
-
- if ($needed{"pull_$t->{NAME}"}) {
- $needed{"pull_$e->{TYPE}"} = 1;
- }
+ }
+
+ $e->{PARENT} = $t->{DATA};
+
+ if ($needed{"pull_$t->{NAME}"}) {
+ $needed{"pull_$e->{TYPE}"} = 1;
}
} else {
@@ -433,7 +437,7 @@ sub RewriteC($$$)
s/(ndr_pull_array([^\(_]*?)\(ndr, (NDR_[^,]*?), ([^\)].*?)\);)/ndr_pull_array$2( ndr, $3, tree, $4);/smg;
- s/(ndr_pull_array_([^\(]*?)\(ndr, (NDR_[^,]*?), (r->((in|out).)?([^,]*?)), (.*?)\);)/ndr_pull_array_$2( ndr, $3, get_subtree(tree, \"$7\", ndr, ett_$7), $4, $8);/smg;
+ s/(ndr_pull_array_([^\(]*?)\(ndr, (NDR_[^,]*?), (r->((in|out).)?([^,]*?)), (.*?)\);)/ndr_pull_array_$2( ndr, $3, tree, hf_$7_$2_array, $4, $8);/smg;
# Save ndr_pull_relative[12]() calls from being wrapped by the
# proceeding regexp.