diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2006-05-13 19:15:31 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:05:58 -0500 |
commit | 664459a41f285c99150b4ea0d79f59334ee94a6c (patch) | |
tree | 544d9ba87d9eb6e72834f8a5a95cda0e4fae5878 /source4/pidl/lib/Parse | |
parent | 172a83d72491f90f6191be1040ef8b2e1789bd2e (diff) | |
download | samba-664459a41f285c99150b4ea0d79f59334ee94a6c.tar.gz samba-664459a41f285c99150b4ea0d79f59334ee94a6c.tar.bz2 samba-664459a41f285c99150b4ea0d79f59334ee94a6c.zip |
r15574: Keep information about which scalar types are references in a
separate data structure
(This used to be commit 0cb1906046c8e4ad105ad4a47740f94f30f5d6db)
Diffstat (limited to 'source4/pidl/lib/Parse')
-rw-r--r-- | source4/pidl/lib/Parse/Pidl/Ethereal/NDR.pm | 8 | ||||
-rw-r--r-- | source4/pidl/lib/Parse/Pidl/Typelist.pm | 35 |
2 files changed, 11 insertions, 32 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/Ethereal/NDR.pm b/source4/pidl/lib/Parse/Pidl/Ethereal/NDR.pm index 0b81536795..371c35b374 100644 --- a/source4/pidl/lib/Parse/Pidl/Ethereal/NDR.pm +++ b/source4/pidl/lib/Parse/Pidl/Ethereal/NDR.pm @@ -180,7 +180,7 @@ sub Bitmap($$$) pidl_code ""; - pidl_code "if(parent_tree) {"; + pidl_code "if (parent_tree) {"; indent; pidl_code "item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, $e->{ALIGN}, TRUE);"; pidl_code "tree = proto_item_add_subtree(item,ett_$ifname\_$name);"; @@ -224,7 +224,7 @@ sub Bitmap($$$) pidl_code ""; } - pidl_code "if(flags){"; + pidl_code "if (flags) {"; pidl_code "\tproto_item_append_text(item, \"Unknown bitmap value 0x%x\", flags);"; pidl_code "}\n"; pidl_code "return offset;"; @@ -489,7 +489,7 @@ sub Struct($$$) pidl_code "old_offset = offset;"; pidl_code ""; - pidl_code "if(parent_tree){"; + pidl_code "if (parent_tree) {"; indent; pidl_code "item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);"; pidl_code "tree = proto_item_add_subtree(item, ett_$ifname\_$name);"; @@ -553,7 +553,7 @@ sub Union($$$) pidl_code ""; pidl_code "old_offset = offset;"; - pidl_code "if(parent_tree){"; + pidl_code "if (parent_tree) {"; indent; pidl_code "item = proto_tree_add_text(parent_tree, tvb, offset, -1, \"$name\");"; pidl_code "tree = proto_item_add_subtree(item, ett_$ifname\_$name);"; diff --git a/source4/pidl/lib/Parse/Pidl/Typelist.pm b/source4/pidl/lib/Parse/Pidl/Typelist.pm index 016e5f538f..cdf0302ced 100644 --- a/source4/pidl/lib/Parse/Pidl/Typelist.pm +++ b/source4/pidl/lib/Parse/Pidl/Typelist.pm @@ -16,130 +16,109 @@ use strict; my %typedefs = (); +my @reference_scalars = ( + "string", "string_array", "nbt_string", + "wrepl_nbt_name", "ipv4address" +); + # a list of known scalar types my $scalars = { # 0 byte types "void" => { C_TYPE => "void", - IS_REFERENCE => 0, }, # 1 byte types "char" => { C_TYPE => "char", - IS_REFERENCE => 0, }, "int8" => { C_TYPE => "int8_t", - IS_REFERENCE => 0, }, "uint8" => { C_TYPE => "uint8_t", - IS_REFERENCE => 0, }, # 2 byte types "int16" => { C_TYPE => "int16_t", - IS_REFERENCE => 0, }, "uint16" => { C_TYPE => "uint16_t", - IS_REFERENCE => 0, }, # 4 byte types "int32" => { C_TYPE => "int32_t", - IS_REFERENCE => 0, }, "uint32" => { C_TYPE => "uint32_t", - IS_REFERENCE => 0, }, # 8 byte types "hyper" => { C_TYPE => "uint64_t", - IS_REFERENCE => 0, }, "dlong" => { C_TYPE => "int64_t", - IS_REFERENCE => 0, }, "udlong" => { C_TYPE => "uint64_t", - IS_REFERENCE => 0, }, "udlongr" => { C_TYPE => "uint64_t", - IS_REFERENCE => 0, }, # assume its a 8 byte type, but cope with either "pointer" => { C_TYPE => "void*", - IS_REFERENCE => 0, }, # DATA_BLOB types "DATA_BLOB" => { C_TYPE => "DATA_BLOB", - IS_REFERENCE => 0, }, # string types "string" => { C_TYPE => "const char *", - IS_REFERENCE => 1, }, "string_array" => { C_TYPE => "const char **", - IS_REFERENCE => 1, }, # time types "time_t" => { C_TYPE => "time_t", - IS_REFERENCE => 0, }, "NTTIME" => { C_TYPE => "NTTIME", - IS_REFERENCE => 0, }, "NTTIME_1sec" => { C_TYPE => "NTTIME", - IS_REFERENCE => 0, }, "NTTIME_hyper" => { C_TYPE => "NTTIME", - IS_REFERENCE => 0, }, # error code types "WERROR" => { C_TYPE => "WERROR", - IS_REFERENCE => 0, }, "NTSTATUS" => { C_TYPE => "NTSTATUS", - IS_REFERENCE => 0, }, "COMRESULT" => { C_TYPE => "COMRESULT", - IS_REFERENCE => 0, }, # special types "nbt_string" => { C_TYPE => "const char *", - IS_REFERENCE => 1, }, "wrepl_nbt_name"=> { C_TYPE => "struct nbt_name *", - IS_REFERENCE => 1, }, "ipv4address" => { C_TYPE => "const char *", - IS_REFERENCE => 1, } }; @@ -200,8 +179,8 @@ sub is_scalar($) sub scalar_is_reference($) { my $name = shift; - - return $scalars->{$name}{IS_REFERENCE} if defined($scalars->{$name}) and defined($scalars->{$name}{IS_REFERENCE}); + + return 1 if (grep(/^$name$/, @reference_scalars)); return 0; } |