SCALAR => IS_FIXED
[metze/samba/wip.git] / pidl / lib / Parse / Pidl / Typelist.pm
index bf78717b12bd96fad9e39bfbc3eb5de6f65069c2..100082d8f5044c073b358d70e8dbdcae9fa6365d 100644 (file)
@@ -60,6 +60,7 @@ my %scalars = (
        "NTTIME_1sec"   => "NTTIME",
        "NTTIME_hyper"  => "NTTIME",
        "WERROR"        => "WERROR",
+       "HRESULT"       => "HRESULT",
        "NTSTATUS"      => "NTSTATUS",
        "COMRESULT" => "COMRESULT",
        "dns_string"    => "const char *",
@@ -83,7 +84,7 @@ my %aliases = (
        "long" => "int32",
        "short" => "int16",
        "HYPER_T" => "hyper",
-       "HRESULT" => "COMRESULT",
+        "mode_t"        => "uint32",
 );
 
 sub expandAlias($)
@@ -215,14 +216,18 @@ sub scalar_is_reference($)
 
 sub RegisterScalars()
 {
-       foreach (keys %scalars) {
+       foreach my $t (keys %scalars) {
+               my $is_fixed = 1;
+               $is_fixed = 0 if (grep(/^$t$/, @non_fixed_size_scalars));
+
                addType({
-                       NAME => $_,
+                       NAME => $t,
                        TYPE => "TYPEDEF",
                        BASEFILE => "<builtin>",
                        DATA => {
                                TYPE => "SCALAR",
-                               NAME => $_
+                               NAME => $t,
+                               IS_FIXED => $is_fixed,
                        }
                }
                );
@@ -291,6 +296,7 @@ sub mapType($$)
        return "struct $n" if ($t->{TYPE} eq "STRUCT" or $t->{TYPE} eq "INTERFACE");
        return "union $n" if ($t->{TYPE} eq "UNION");
        return mapScalarType(bitmap_type_fn($t)) if ($t->{TYPE} eq "BITMAP");
+       return "struct $n" if ($t->{TYPE} eq "PIPE");
        die("Unknown type $t->{TYPE}");
 }
 
@@ -329,11 +335,12 @@ sub LoadIdl($;$)
                        }) if (has_property($x, "object"));
 
                foreach my $y (@{$x->{DATA}}) {
-                       if ($y->{TYPE} eq "TYPEDEF" 
-                               or $y->{TYPE} eq "UNION"
-                               or $y->{TYPE} eq "STRUCT"
-                       or $y->{TYPE} eq "ENUM"
-                       or $y->{TYPE} eq "BITMAP") {
+                       if ($y->{TYPE} eq "TYPEDEF"
+                           or $y->{TYPE} eq "UNION"
+                           or $y->{TYPE} eq "STRUCT"
+                           or $y->{TYPE} eq "ENUM"
+                           or $y->{TYPE} eq "BITMAP"
+                           or $y->{TYPE} eq "PIPE") {
                                $y->{BASEFILE} = $basename;
                                addType($y);
                        }