1
0
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:
Jelmer Vernooij 2006-05-13 19:15:31 +00:00 committed by Gerald (Jerry) Carter
parent aa6d66fda6
commit 0cb1906046
2 changed files with 11 additions and 32 deletions

View File

@ -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);";

View File

@ -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;
}