pidl/Typelist: add is_fixed_size_scalar()
authorStefan Metzmacher <metze@samba.org>
Tue, 8 Mar 2011 14:45:33 +0000 (15:45 +0100)
committerStefan Metzmacher <metze@samba.org>
Thu, 10 Mar 2011 13:31:14 +0000 (14:31 +0100)
metze

pidl/lib/Parse/Pidl/Typelist.pm

index ccc48578dfd8585d048306e1089afc40f445aa6e..bf78717b12bd96fad9e39bfbc3eb5de6f65069c2 100644 (file)
@@ -8,8 +8,8 @@ package Parse::Pidl::Typelist;
 require Exporter;
 @ISA = qw(Exporter);
 @EXPORT_OK = qw(hasType getType resolveType mapTypeName scalar_is_reference expandAlias
-                           mapScalarType addType typeIs is_signed is_scalar enum_type_fn
-                               bitmap_type_fn mapType typeHasBody
+       mapScalarType addType typeIs is_signed is_scalar enum_type_fn
+       bitmap_type_fn mapType typeHasBody is_fixed_size_scalar
 );
 use vars qw($VERSION);
 $VERSION = '0.01';
@@ -25,6 +25,11 @@ my @reference_scalars = (
        "ipv4address", "ipv6address"
 );
 
+my @non_fixed_size_scalars = (
+       "string", "string_array", "nbt_string", "dns_string",
+       "wrepl_nbt_name", "dnsp_name", "dnsp_string"
+);
+
 # a list of known scalar types
 my %scalars = (
        "void"          => "void",
@@ -191,6 +196,15 @@ sub is_scalar($)
        return 0;
 }
 
+sub is_fixed_size_scalar($)
+{
+       my $name = shift;
+
+       return 0 unless is_scalar($name);
+       return 0 if (grep(/^$name$/, @non_fixed_size_scalars));
+       return 1;
+}
+
 sub scalar_is_reference($)
 {
        my $name = shift;