From 664459a41f285c99150b4ea0d79f59334ee94a6c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 13 May 2006 19:15:31 +0000 Subject: r15574: Keep information about which scalar types are references in a separate data structure (This used to be commit 0cb1906046c8e4ad105ad4a47740f94f30f5d6db) --- source4/pidl/lib/Parse/Pidl/Ethereal/NDR.pm | 8 +++---- source4/pidl/lib/Parse/Pidl/Typelist.pm | 35 ++++++----------------------- 2 files changed, 11 insertions(+), 32 deletions(-) (limited to 'source4/pidl/lib/Parse/Pidl') 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; } -- cgit