Author: jelmer
Date: 2005-06-01 00:34:28 +0000 (Wed, 01 Jun 2005)
New Revision: 7161

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=7161

Log:
- Add support for "aliases" for pidls scalar types and add a few aliases.
- Define __PIDL__ when preprocessing IDL files.
- Remove a couple of useless defines from rpcecho.idl
rpcecho.idl now works in both pidl and midl 
(althought pidl is a bit pedantic and gives two warnings)

Modified:
   branches/SAMBA_4_0/source/build/pidl/idl.pm
   branches/SAMBA_4_0/source/build/pidl/idl.yp
   branches/SAMBA_4_0/source/build/pidl/typelist.pm
   branches/SAMBA_4_0/testprogs/win32/rpcecho/rpcecho.idl


Changeset:
Modified: branches/SAMBA_4_0/source/build/pidl/idl.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/idl.pm 2005-06-01 00:12:34 UTC (rev 
7160)
+++ branches/SAMBA_4_0/source/build/pidl/idl.pm 2005-06-01 00:34:28 UTC (rev 
7161)
@@ -2470,7 +2470,7 @@
        if (! defined $cpp) {
                $cpp = "cpp"
        }
-       my $data = `$cpp -xc $filename`;
+       my $data = `$cpp -D__PIDL__ -xc $filename`;
        $/ = $saved_delim;
 
     $self->YYData->{INPUT} = $data;

Modified: branches/SAMBA_4_0/source/build/pidl/idl.yp
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/idl.yp 2005-06-01 00:12:34 UTC (rev 
7160)
+++ branches/SAMBA_4_0/source/build/pidl/idl.yp 2005-06-01 00:34:28 UTC (rev 
7161)
@@ -384,7 +384,7 @@
        if (! defined $cpp) {
                $cpp = "cpp"
        }
-       my $data = `$cpp -xc $filename`;
+       my $data = `$cpp -D__PIDL__ -xc $filename`;
        $/ = $saved_delim;
 
     $self->YYData->{INPUT} = $data;

Modified: branches/SAMBA_4_0/source/build/pidl/typelist.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/typelist.pm    2005-06-01 00:12:34 UTC 
(rev 7160)
+++ branches/SAMBA_4_0/source/build/pidl/typelist.pm    2005-06-01 00:34:28 UTC 
(rev 7161)
@@ -153,7 +153,7 @@
 
        # it's a bug when a type is not in the list
        # of known scalars or has no mapping
-       return $scalars->{$name}{C_TYPE} if defined($scalars->{$name}) and 
defined($scalars->{$name}{C_TYPE});
+       return $typedefs{$name}->{DATA}->{C_TYPE} if defined($typedefs{$name}) 
and defined($typedefs{$name}->{DATA}->{C_TYPE});
 
        die("Unknown scalar type $name");
 }
@@ -225,14 +225,30 @@
                $typedefs{$k} = {
                        NAME => $k,
                        TYPE => "TYPEDEF",
-                       DATA => {
-                               TYPE => "SCALAR",
-                               NAME => $k
-                       }
+                       DATA => $scalars->{$k}
                };
+               $typedefs{$k}->{DATA}->{TYPE} = "SCALAR";
+               $typedefs{$k}->{DATA}->{NAME} = $k;
        }
 }
 
+my $aliases = {
+       "DWORD" => "uint32",
+       "int" => "int32",
+       "WORD" => "uint16",
+       "char" => "uint8",
+       "long" => "int32",
+       "short" => "int16",
+       "hyper" => "HYPER_T"
+};
+
+sub RegisterAliases()
+{
+       foreach my $k (keys %{$aliases}) {
+               $typedefs{$k} = $typedefs{$aliases->{$k}};
+       }
+}
+
 sub enum_type_fn($)
 {
        my $enum = shift;
@@ -304,5 +320,6 @@
 }
 
 RegisterScalars();
+RegisterAliases();
 
 1;

Modified: branches/SAMBA_4_0/testprogs/win32/rpcecho/rpcecho.idl
===================================================================
--- branches/SAMBA_4_0/testprogs/win32/rpcecho/rpcecho.idl      2005-06-01 
00:12:34 UTC (rev 7160)
+++ branches/SAMBA_4_0/testprogs/win32/rpcecho/rpcecho.idl      2005-06-01 
00:34:28 UTC (rev 7161)
@@ -18,6 +18,10 @@
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
+#ifndef __PIDL__
+#define unistr [string] wchar_t *
+#endif
+
 [
 uuid(60a15ec5-4de8-11d7-a637-005056a20182),
 version(1.0)
@@ -45,13 +49,6 @@
                [in] int len,
                [out] [size_is(len)] char out_data[]
        );
-
-#define unistr [string] wchar_t *
-#define uint8 char
-#define uint16 short
-#define uint32 long
-#define HYPER_T hyper
-
        const long myconstant = 42;
 
        /* test strings */
@@ -60,36 +57,35 @@
                [out]  unistr *s2
                );
 
-
        /* test some alignment issues */
        typedef struct {
-               uint8 v;
+               char v;
        } echo_info1;
 
        typedef struct {
-               uint16 v;
+               short v;
        } echo_info2;
 
        typedef struct {
-               uint32 v;
+               long v;
        } echo_info3;
 
        typedef struct {
-               HYPER_T v;
+               hyper v;
        } echo_info4;
 
        typedef struct {
-               uint8 v1;
-               HYPER_T v2;
+               char v1;
+               hyper v2;
        } echo_info5;
 
        typedef struct {
-               uint8 v1;
+               char v1;
                echo_info1 info1;
        } echo_info6;
 
        typedef struct {
-               uint8 v1;
+               char v1;
                echo_info4 info4;
        } echo_info7;
 
@@ -139,13 +135,13 @@
                );
 
        typedef struct {
-               uint32 x;
-               [size_is(x)] uint16 surrounding[*];
+               long x;
+               [size_is(x)] short surrounding[*];
        } echo_Surrounding;
 
        void echo_TestSurrounding(
                [in,out,ref] echo_Surrounding *data
        );
 
-       uint16 echo_TestDoublePointer([in] uint16 ***data);
+       short echo_TestDoublePointer([in] short ***data);
 }

Reply via email to