diff options
-rw-r--r-- | source4/build/pidl/eparser.pm | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/source4/build/pidl/eparser.pm b/source4/build/pidl/eparser.pm index 73f2275b98..e25a1760e1 100644 --- a/source4/build/pidl/eparser.pm +++ b/source4/build/pidl/eparser.pm @@ -107,10 +107,13 @@ sub type2ft($) { my($t) = shift; - return "FT_UINT32", if ($t eq "uint32"); - return "FT_UINT16", if ($t eq "uint16"); - return "FT_UINT8", if ($t eq "uint8"); - return "FT_BYTES"; + return "FT_UINT$1" if $t =~ /uint(8|16|32|64)/; + return "FT_INT$1" if $t =~ /int(8|16|32|64)/; + return "FT_UINT64", if ($t eq "HYPER_T" or $t eq "NTTIME"); + + # Type is an enum + + return "FT_UINT16"; } # Determine the display base for an element @@ -123,9 +126,13 @@ sub elementbase($) return "BASE_" . uc($base); } - return "BASE_DEC", if ($e->{TYPE} eq "uint32") or - ($e->{TYPE} eq "uint16") or ($e->{TYPE} eq "uint8"); - return "BASE_NONE"; + return "BASE_DEC", if $e->{TYPE} eq "ENUM"; + return "BASE_DEC", if $e->{TYPE} =~ /u?int(8|16|32|64)/; + return "BASE_DEC", if $e->{TYPE} eq "NTTIME" or $e->{TYPE} eq "HYPER_T"; + + # Probably an enum + + return "BASE_DEC"; } # Convert a IDL structure field name (e.g access_mask) to a prettier @@ -230,13 +237,10 @@ sub NeededTypedef($) } if ($t->{DATA}->{TYPE} eq "ENUM") { - use Data::Dumper; - print Dumper($t); - $needed{"hf_$t->{NAME}"} = { 'name' => $t->{NAME}, - 'ft' => 'FT_UINT32', - 'base' => 'BASE_HEX' + 'ft' => 'FT_UINT16', + 'base' => 'BASE_DEC' }; } } |