mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
r15574: Keep information about which scalar types are references in a
separate data structure
This commit is contained in:
parent
aa6d66fda6
commit
0cb1906046
@ -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);";
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user