Support remaining basic types (float, double, small, wchar_t and handle_t).
Modified: trunk/reactos/include/wine/rpcfc.h
Added: trunk/reactos/tools/widl/ChangeLog
Modified: trunk/reactos/tools/widl/client.c
Modified: trunk/reactos/tools/widl/header.c
Modified: trunk/reactos/tools/widl/lex.yy.c
Modified: trunk/reactos/tools/widl/parser.l
Modified: trunk/reactos/tools/widl/parser.y
Modified: trunk/reactos/tools/widl/server.c
Modified: trunk/reactos/tools/widl/y.tab.c
Modified: trunk/reactos/tools/widl/y.tab.h

Modified: trunk/reactos/include/wine/rpcfc.h
--- trunk/reactos/include/wine/rpcfc.h	2005-02-24 08:51:18 UTC (rev 13732)
+++ trunk/reactos/include/wine/rpcfc.h	2005-02-24 16:48:16 UTC (rev 13733)
@@ -21,7 +21,7 @@
 #define RPC_FC_DOUBLE			0x0c
 #define RPC_FC_ENUM16			0x0d
 #define RPC_FC_ENUM32			0x0e
-
+#define RPC_FC_IGNORE			0x0f /* handle_t */
 #define RPC_FC_ERROR_STATUS_T		0x10
 
 /* other stuff */

Added: trunk/reactos/tools/widl/ChangeLog
--- trunk/reactos/tools/widl/ChangeLog	2005-02-24 08:51:18 UTC (rev 13732)
+++ trunk/reactos/tools/widl/ChangeLog	2005-02-24 16:48:16 UTC (rev 13733)
@@ -0,0 +1,11 @@
+ChangeLog
+
+2005-02-24 ekohl
+  include/wine/rpcfc.h
+  tools/widl/client.c
+  tools/widl/header.c
+  tools/widl/parser.l
+  tools/widl/parser.y
+  tools/widl/server.c
+
+Support remaining basic types (float, double, small, wchar_t and handle_t).

Modified: trunk/reactos/tools/widl/client.c
--- trunk/reactos/tools/widl/client.c	2005-02-24 08:51:18 UTC (rev 13732)
+++ trunk/reactos/tools/widl/client.c	2005-02-24 16:48:16 UTC (rev 13733)
@@ -82,38 +82,49 @@
                 {
                 case RPC_FC_BYTE:
                     print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_client("0x%02x,    /* RPC_FC_BYTE */\n", var->type->type);
+                    print_client("0x%02x,    /* FC_BYTE */\n", RPC_FC_BYTE);
                     break;
                 case RPC_FC_CHAR:
                     print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_client("0x%02x,    /* RPC_FC_CHAR */\n", var->type->type);
+                    print_client("0x%02x,    /* FC_CHAR */\n", RPC_FC_CHAR);
                     break;
                 case RPC_FC_WCHAR:
                     print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_client("0x%02x,    /* RPC_FC_WCHAR */\n", var->type->type);
+                    print_client("0x%02x,    /* FC_WCHAR */\n", RPC_FC_WCHAR);
                     break;
                 case RPC_FC_USHORT:
-                    print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_client("0x%02x,    /* RPC_FC_USHORT */\n", var->type->type);
-                    break;
                 case RPC_FC_SHORT:
                     print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_client("0x%02x,    /* RPC_FC_SHORT */\n", var->type->type);
+                    print_client("0x%02x,    /* FC_USHORT */\n", RPC_FC_SHORT);
                     break;
                 case RPC_FC_ULONG:
-                    print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_client("0x%02x,    /* RPC_FC_ULONG */\n", var->type->type);
-                    break;
                 case RPC_FC_LONG:
                     print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_client("0x%02x,    /* RPC_FC_LONG */\n", var->type->type);
+                    print_client("0x%02x,    /* FC_LONG */\n", RPC_FC_LONG);
                     break;
                 case RPC_FC_HYPER:
                     print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_client("0x%02x,    /* RPC_FC_HYPER */\n", var->type->type);
+                    print_client("0x%02x,    /* FC_HYPER */\n", RPC_FC_HYPER);
                     break;
+                case RPC_FC_IGNORE:
+                    print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
+                    print_client("0x%02x,    /* FC_IGNORE */\n", RPC_FC_IGNORE);
+                    break;
+                case RPC_FC_SMALL:
+                    print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
+                    print_client("0x%02x,    /* FC_SMALL */\n", RPC_FC_SMALL);
+                    break;
+                case RPC_FC_FLOAT:
+                    print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
+                    print_client("0x%02x,    /* FC_FLOAT */\n", RPC_FC_FLOAT);
+                    break;
+                case RPC_FC_DOUBLE:
+                    print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
+                    print_client("0x%02x,    /* FC_DOUBLE */\n", RPC_FC_DOUBLE);
+                    break;
                 default:
                     error("Unknown/unsupported type\n");
+                    return;
                 }
 
                 var = PREV_LINK(var);
@@ -133,38 +144,51 @@
             {
             case RPC_FC_BYTE:
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_client("0x%02x,    /* RPC_FC_BYTE */\n", var->type->type);
+                print_client("0x%02x,    /* FC_BYTE */\n", var->type->type);
                 break;
             case RPC_FC_CHAR:
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_client("0x%02x,    /* RPC_FC_CHAR */\n", var->type->type);
+                print_client("0x%02x,    /* FC_CHAR */\n", var->type->type);
                 break;
             case RPC_FC_WCHAR:
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_client("0x%02x,    /* RPC_FC_WCHAR */\n", var->type->type);
+                print_client("0x%02x,    /* FC_WCHAR */\n", var->type->type);
                 break;
             case RPC_FC_USHORT:
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_client("0x%02x,    /* RPC_FC_USHORT */\n", var->type->type);
+                print_client("0x%02x,    /* FC_USHORT */\n", var->type->type);
                 break;
             case RPC_FC_SHORT:
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_client("0x%02x,    /* RPC_FC_SHORT */\n", var->type->type);
+                print_client("0x%02x,    /* FC_SHORT */\n", var->type->type);
                 break;
             case RPC_FC_ULONG:
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_client("0x%02x,    /* RPC_FC_ULONG */\n", var->type->type);
+                print_client("0x%02x,    /* FC_ULONG */\n", var->type->type);
                 break;
             case RPC_FC_LONG:
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_client("0x%02x,    /* RPC_FC_LONG */\n", var->type->type);
+                print_client("0x%02x,    /* FC_LONG */\n", var->type->type);
                 break;
             case RPC_FC_HYPER:
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_client("0x%02x,    /* RPC_FC_HYPER */\n", var->type->type);
+                print_client("0x%02x,    /* FC_HYPER */\n", var->type->type);
                 break;
+            case RPC_FC_SMALL:
+                print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
+                print_client("0x%02x,    /* FC_SMALL */\n", RPC_FC_SMALL);
+                break;
+            case RPC_FC_FLOAT:
+                print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
+                print_client("0x%02x,    /* FC_FLOAT */\n", RPC_FC_FLOAT);
+                break;
+            case RPC_FC_DOUBLE:
+                print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
+                print_client("0x%02x,    /* FC_DOUBLE */\n", RPC_FC_DOUBLE);
+                break;
             default:
                 error("Unknown/unsupported type\n");
+                return;
             }
         }
 
@@ -220,6 +244,7 @@
         {
         case RPC_FC_BYTE:
         case RPC_FC_CHAR:
+        case RPC_FC_SMALL:
             size = 1;
             alignment = 0;
             break;
@@ -234,26 +259,42 @@
 
         case RPC_FC_ULONG:
         case RPC_FC_LONG:
+        case RPC_FC_FLOAT:
             size = 4;
             if (last_size != 0 && last_size < 4)
                 alignment += (4 - last_size);
             break;
 
         case RPC_FC_HYPER:
+        case RPC_FC_DOUBLE:
             size = 8;
             if (last_size != 0 && last_size < 4)
                 alignment += (4 - last_size);
             break;
 
+        case RPC_FC_IGNORE:
+            size = 0;
+            break;
+
         default:
             error("Unknown/unsupported type!");
         }
 
-        if (last_size != 0)
-            fprintf(client, " +");
-        fprintf(client, " %uU", size + alignment);
+        if (size == 0)
+        {
+            if (last_size != 0)
+                fprintf(client, " +");
+            fprintf(client, " 0U");
+        }
+        else
+        {
+            if (last_size != 0)
+                fprintf(client, " +");
+            fprintf(client, " %uU", size + alignment);
 
-        last_size = size;
+            last_size = size;
+        }
+        
 
         var = PREV_LINK(var);
     }
@@ -279,6 +320,7 @@
         {
         case RPC_FC_BYTE:
         case RPC_FC_CHAR:
+        case RPC_FC_SMALL:
             size = 1;
             alignment = 0;
             break;
@@ -293,32 +335,41 @@
 
         case RPC_FC_ULONG:
         case RPC_FC_LONG:
+        case RPC_FC_FLOAT:
             size = 4;
             if (last_size != 0 && last_size < 4)
                 alignment = (4 - last_size);
             break;
 
         case RPC_FC_HYPER:
+        case RPC_FC_DOUBLE:
             size = 8;
             if (last_size != 0 && last_size < 4)
                 alignment = (4 - last_size);
             break;
 
+        case RPC_FC_IGNORE:
+            size = 0;
+            break;
+
         default:
             error("Unknown/unsupported type!");
         }
 
-        if (alignment != 0)
-            print_client("_StubMsg.Buffer += %u;\n", alignment);
+        if (size != 0)
+        {
+            if (alignment != 0)
+                print_client("_StubMsg.Buffer += %u;\n", alignment);
 
-        print_client("*((");
-        write_type(client, var->type, var, var->tname);
-        fprintf(client, " __RPC_FAR*)_StubMsg.Buffer)++ = ");
-        write_name(client, var);
-        fprintf(client, ";\n");
-        fprintf(client, "\n");
+            print_client("*((");
+            write_type(client, var->type, var, var->tname);
+            fprintf(client, " __RPC_FAR*)_StubMsg.Buffer)++ = ");
+            write_name(client, var);
+            fprintf(client, ";\n");
+            fprintf(client, "\n");
 
-        last_size = size;
+            last_size = size;
+        }
 
         var = PREV_LINK(var);
     }
@@ -328,6 +379,7 @@
 static void write_function_stubs(type_t *iface)
 {
     char *implicit_handle = get_attrp(iface->attrs, ATTR_IMPLICIT_HANDLE);
+    int explitit_handle = is_attr(iface->attrs, ATTR_IMPLICIT_HANDLE);
     func_t *func = iface->funcs;
     var_t* var;
     int method_count = 0;
@@ -343,10 +395,7 @@
         write_name(client, def);
         fprintf(client, "(\n");
         indent++;
-        if (func->args)
-            write_args(client, func->args, iface->name, 0, TRUE);
-        else
-            print_client("void");
+        write_args(client, func->args, iface->name, 0, TRUE);
         fprintf(client, ")\n");
         indent--;
 

Modified: trunk/reactos/tools/widl/header.c
--- trunk/reactos/tools/widl/header.c	2005-02-24 08:51:18 UTC (rev 13732)
+++ trunk/reactos/tools/widl/header.c	2005-02-24 16:48:16 UTC (rev 13733)
@@ -245,7 +245,7 @@
         if (t->ref) fprintf(h, t->ref->name);
         else fprintf(h, "error_status_t");
         break;
-      case RPC_FC_BIND_PRIMITIVE:
+      case RPC_FC_IGNORE:
         if (t->ref) fprintf(h, t->ref->name);
         else fprintf(h, "handle_t");
         break;
@@ -511,6 +511,10 @@
     fprintf(h, "%s* This", name);
     count++;
   }
+  if (arg == NULL && method == 0) {
+    fprintf(h, "void");
+    return;
+  }
   while (arg) {
     if (count) {
         if (do_indent)
@@ -668,10 +672,7 @@
     fprintf(header, " ");
     write_name(header, def);
     fprintf(header, "(\n");
-    if (cur->args)
-      write_args(header, cur->args, iface->name, 0, TRUE);
-    else
-      fprintf(header, "    void");
+    write_args(header, cur->args, iface->name, 0, TRUE);
     fprintf(header, ");\n");
 
     cur = PREV_LINK(cur);

Modified: trunk/reactos/tools/widl/lex.yy.c
--- trunk/reactos/tools/widl/lex.yy.c	2005-02-24 08:51:18 UTC (rev 13732)
+++ trunk/reactos/tools/widl/lex.yy.c	2005-02-24 16:48:16 UTC (rev 13733)
@@ -4568,6 +4568,7 @@
 	{"size_is",			tSIZEIS},
 	{"sizeof",			tSIZEOF},
 /* ... */
+	{"small",			tSMALL},
 	{"source",			tSOURCE},
 /* ... */	
 	{"string",			tSTRING},

Modified: trunk/reactos/tools/widl/parser.l
--- trunk/reactos/tools/widl/parser.l	2005-02-24 08:51:18 UTC (rev 13732)
+++ trunk/reactos/tools/widl/parser.l	2005-02-24 16:48:16 UTC (rev 13733)
@@ -288,6 +288,7 @@
 	{"size_is",			tSIZEIS},
 	{"sizeof",			tSIZEOF},
 /* ... */
+	{"small",			tSMALL},
 	{"source",			tSOURCE},
 /* ... */	
 	{"string",			tSTRING},

Modified: trunk/reactos/tools/widl/parser.y
--- trunk/reactos/tools/widl/parser.y	2005-02-24 08:51:18 UTC (rev 13732)
+++ trunk/reactos/tools/widl/parser.y	2005-02-24 16:48:16 UTC (rev 13733)
@@ -172,6 +172,7 @@
 %token tSHORT
 %token tSIGNED
 %token tSIZEIS tSIZEOF
+%token tSMALL
 %token tSOURCE
 %token tSTDCALL
 %token tSTRING tSTRUCT
@@ -553,7 +554,7 @@
 	| tSIGNED int_std			{ $$ = $2; $$->sign = 1; }
 	| tUNSIGNED int_std			{ $$ = $2; $$->sign = -1;
 						  switch ($$->type) {
-						  case RPC_FC_CHAR:  $$->type = RPC_FC_BYTE; $$->sign = 0; break;
+						  case RPC_FC_CHAR: break;
 						  case RPC_FC_SMALL: $$->type = RPC_FC_USMALL; break;
 						  case RPC_FC_SHORT: $$->type = RPC_FC_USHORT; break;
 						  case RPC_FC_LONG:  $$->type = RPC_FC_ULONG;  break;
@@ -565,9 +566,9 @@
 						}
 	| tFLOAT				{ $$ = make_type(RPC_FC_FLOAT, NULL); }
 	| tDOUBLE				{ $$ = make_type(RPC_FC_DOUBLE, NULL); }
-	| tBOOLEAN				{ $$ = make_type(RPC_FC_BYTE, &std_bool); /* ? */ }
+	| tBOOLEAN				{ $$ = make_type(RPC_FC_SMALL, &std_bool); }
 	| tERRORSTATUST				{ $$ = make_type(RPC_FC_ERROR_STATUS_T, NULL); }
-	| tHANDLET				{ $$ = make_type(RPC_FC_BIND_PRIMITIVE, NULL); /* ? */ }
+	| tHANDLET				{ $$ = make_type(RPC_FC_IGNORE, NULL); }
 	;
 
 m_int:
@@ -575,6 +576,7 @@
 	;
 
 int_std:  tINT					{ $$ = make_type(RPC_FC_LONG, &std_int); } /* win32 only */
+	| tSMALL m_int				{ $$ = make_type(RPC_FC_SMALL, NULL); }
 	| tSHORT m_int				{ $$ = make_type(RPC_FC_SHORT, NULL); }
 	| tLONG m_int				{ $$ = make_type(RPC_FC_LONG, NULL); }
 	| tHYPER m_int				{ $$ = make_type(RPC_FC_HYPER, NULL); }

Modified: trunk/reactos/tools/widl/server.c
--- trunk/reactos/tools/widl/server.c	2005-02-24 08:51:18 UTC (rev 13732)
+++ trunk/reactos/tools/widl/server.c	2005-02-24 16:48:16 UTC (rev 13733)
@@ -87,36 +87,52 @@
                 {
                 case RPC_FC_BYTE:
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_server("0x%02x,    /* RPC_FC_BYTE */\n", var->type->type);
+                    print_server("0x%02x,    /* FC_BYTE */\n", var->type->type);
                     break;
                 case RPC_FC_CHAR:
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_server("0x%02x,    /* RPC_FC_CHAR */\n", var->type->type);
+                    print_server("0x%02x,    /* FC_CHAR */\n", var->type->type);
                     break;
                 case RPC_FC_WCHAR:
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_server("0x%02x,    /* RPC_FC_WCHAR */\n", var->type->type);
+                    print_server("0x%02x,    /* FC_WCHAR */\n", var->type->type);
                     break;
                 case RPC_FC_USHORT:
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_server("0x%02x,    /* RPC_FC_USHORT */\n", var->type->type);
+                    print_server("0x%02x,    /* FC_USHORT */\n", var->type->type);
                     break;
                 case RPC_FC_SHORT:
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_server("0x%02x,    /* RPC_FC_SHORT */\n", var->type->type);
+                    print_server("0x%02x,    /* FC_SHORT */\n", var->type->type);
                     break;
                 case RPC_FC_ULONG:
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_server("0x%02x,    /* RPC_FC_ULONG */\n", var->type->type);
+                    print_server("0x%02x,    /* FC_ULONG */\n", var->type->type);
                     break;
                 case RPC_FC_LONG:
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_server("0x%02x,    /* RPC_FC_LONG */\n", var->type->type);
+                    print_server("0x%02x,    /* FC_LONG */\n", var->type->type);
                     break;
                 case RPC_FC_HYPER:
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
-                    print_server("0x%02x,    /* RPC_FC_HYPER */\n", var->type->type);
+                    print_server("0x%02x,    /* FC_HYPER */\n", var->type->type);
                     break;
+                case RPC_FC_IGNORE:
+                    print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
+                    print_server("0x%02x,    /* FC_IGNORE */\n", var->type->type);
+                    break;
+                case RPC_FC_SMALL:
+                    print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
+                    print_server("0x%02x,    /* FC_SMALL */\n", RPC_FC_SMALL);
+                    break;
+                case RPC_FC_FLOAT:
+                    print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
+                    print_server("0x%02x,    /* FC_FLOAT */\n", RPC_FC_FLOAT);
+                    break;
+                case RPC_FC_DOUBLE:
+                    print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");
+                    print_server("0x%02x,    /* FC_DOUBLE */\n", RPC_FC_DOUBLE);
+                    break;
                 default:
                     error("Unknown/unsupported type\n");
                 }
@@ -138,36 +154,48 @@
             {
             case RPC_FC_BYTE:
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_server("0x%02x,    /* RPC_FC_BYTE */\n", var->type->type);
+                print_server("0x%02x,    /* FC_BYTE */\n", var->type->type);
                 break;
             case RPC_FC_CHAR:
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_server("0x%02x,    /* RPC_FC_CHAR */\n", var->type->type);
+                print_server("0x%02x,    /* FC_CHAR */\n", var->type->type);
                 break;
             case RPC_FC_WCHAR:
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_server("0x%02x,    /* RPC_FC_WCHAR */\n", var->type->type);
+                print_server("0x%02x,    /* FC_WCHAR */\n", var->type->type);
                 break;
             case RPC_FC_USHORT:
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_server("0x%02x,    /* RPC_FC_USHORT */\n", var->type->type);
+                print_server("0x%02x,    /* FC_USHORT */\n", var->type->type);
                 break;
             case RPC_FC_SHORT:
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_server("0x%02x,    /* RPC_FC_SHORT */\n", var->type->type);
+                print_server("0x%02x,    /* FC_SHORT */\n", var->type->type);
                 break;
             case RPC_FC_ULONG:
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_server("0x%02x,    /* RPC_FC_ULONG */\n", var->type->type);
+                print_server("0x%02x,    /* FC_ULONG */\n", var->type->type);
                 break;
             case RPC_FC_LONG:
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_server("0x%02x,    /* RPC_FC_LONG */\n", var->type->type);
+                print_server("0x%02x,    /* FC_LONG */\n", var->type->type);
                 break;
             case RPC_FC_HYPER:
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
-                print_server("0x%02x,    /* RPC_FC_HYPER */\n", var->type->type);
+                print_server("0x%02x,    /* FC_HYPER */\n", var->type->type);
                 break;
+            case RPC_FC_SMALL:
+                print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
+                print_server("0x%02x,    /* FC_SMALL */\n", RPC_FC_SMALL);
+                break;
+            case RPC_FC_FLOAT:
+                print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
+                print_server("0x%02x,    /* FC_FLOAT */\n", RPC_FC_FLOAT);
+                break;
+            case RPC_FC_DOUBLE:
+                print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");
+                print_server("0x%02x,    /* FC_DOUBLE */\n", RPC_FC_DOUBLE);
+                break;
             default:
                 error("Unknown/unsupported type\n");
             }
@@ -208,17 +236,23 @@
     switch(type->type)
     {
         case RPC_FC_BYTE:
+        case RPC_FC_SMALL:
         case RPC_FC_CHAR:
         case RPC_FC_WCHAR:
         case RPC_FC_USHORT:
         case RPC_FC_SHORT:
         case RPC_FC_ULONG:
         case RPC_FC_LONG:
+        case RPC_FC_FLOAT:
             return 4;
 
-      case RPC_FC_HYPER:
+        case RPC_FC_HYPER:
+        case RPC_FC_DOUBLE:
             return 8;
 
+        case RPC_FC_IGNORE:
+            return 0;
+
         default:
             error("Unknown/unsupported type: %s\n", type->name);
     }
@@ -244,6 +278,7 @@
         {
         case RPC_FC_BYTE:
         case RPC_FC_CHAR:
+        case RPC_FC_SMALL:
             size = 1;
             alignment = 0;
             break;
@@ -258,32 +293,41 @@
 
         case RPC_FC_ULONG:
         case RPC_FC_LONG:
+        case RPC_FC_FLOAT:
             size = 4;
             if (last_size != 0 && last_size < 4)
                 alignment = (4 - last_size);
             break;
 
         case RPC_FC_HYPER:
+        case RPC_FC_DOUBLE:
             size = 8;
             if (last_size != 0 && last_size < 4)
                 alignment = (4 - last_size);
             break;
 
+        case RPC_FC_IGNORE:
+            size = 0;
+            break;
+
         default:
             error("Unknown/unsupported type!");
         }
 
-        if (alignment != 0)
-            print_server("_StubMsg.Buffer += %u;\n", alignment);
+        if (size != 0)
+        {
+            if (alignment != 0)
+                print_server("_StubMsg.Buffer += %u;\n", alignment);
 
-        print_server("");
-        write_name(server, var);
-        fprintf(server, " = *((");
-        write_type(server, var->type, var, var->tname);
-        fprintf(server, " __RPC_FAR*)_StubMsg.Buffer)++;\n");
-        fprintf(server, "\n");
+            print_server("");
+            write_name(server, var);
+            fprintf(server, " = *((");
+            write_type(server, var->type, var, var->tname);
+            fprintf(server, " __RPC_FAR*)_StubMsg.Buffer)++;\n");
+            fprintf(server, "\n");
 
-        last_size = size;
+            last_size = size;
+        }
 
         var = PREV_LINK(var);
     }

Modified: trunk/reactos/tools/widl/y.tab.c
--- trunk/reactos/tools/widl/y.tab.c	2005-02-24 08:51:18 UTC (rev 13732)
+++ trunk/reactos/tools/widl/y.tab.c	2005-02-24 16:48:16 UTC (rev 13733)
@@ -100,30 +100,31 @@
 #define	tSIGNED	350
 #define	tSIZEIS	351
 #define	tSIZEOF	352
-#define	tSOURCE	353
-#define	tSTDCALL	354
-#define	tSTRING	355
-#define	tSTRUCT	356
-#define	tSWITCH	357
-#define	tSWITCHIS	358
-#define	tSWITCHTYPE	359
-#define	tTRANSMITAS	360
-#define	tTYPEDEF	361
-#define	tUNION	362
-#define	tUNIQUE	363
-#define	tUNSIGNED	364
-#define	tUUID	365
-#define	tV1ENUM	366
-#define	tVARARG	367
-#define	tVERSION	368
-#define	tVOID	369
-#define	tWCHAR	370
-#define	tWIREMARSHAL	371
-#define	tPOINTERTYPE	372
-#define	COND	373
-#define	CAST	374
-#define	PPTR	375
-#define	NEG	376
+#define	tSMALL	353
+#define	tSOURCE	354
+#define	tSTDCALL	355
+#define	tSTRING	356
+#define	tSTRUCT	357
+#define	tSWITCH	358
+#define	tSWITCHIS	359
+#define	tSWITCHTYPE	360
+#define	tTRANSMITAS	361
+#define	tTYPEDEF	362
+#define	tUNION	363
+#define	tUNIQUE	364
+#define	tUNSIGNED	365
+#define	tUUID	366
+#define	tV1ENUM	367
+#define	tVARARG	368
+#define	tVERSION	369
+#define	tVOID	370
+#define	tWCHAR	371
+#define	tWIREMARSHAL	372
+#define	tPOINTERTYPE	373
+#define	COND	374
+#define	CAST	375
+#define	PPTR	376
+#define	NEG	377
 
 #line 1 "parser.y"
 
@@ -258,26 +259,26 @@
 
 
 
-#define	YYFINAL		457
+#define	YYFINAL		459
 #define	YYFLAG		-32768
-#define	YYNTBASE	142
+#define	YYNTBASE	143
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 376 ? yytranslate[x] : 214)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 377 ? yytranslate[x] : 215)
 
 static const short yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,   122,     2,   132,
-   133,   125,   124,   119,   123,   141,   126,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,   138,   131,     2,
-   139,     2,   140,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,   123,     2,   133,
+   134,   126,   125,   120,   124,   142,   127,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,   139,   132,     2,
+   140,     2,   141,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-   136,     2,   137,     2,     2,     2,     2,     2,     2,     2,
+   137,     2,   138,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   134,   121,   135,   127,     2,     2,     2,     2,
+     2,     2,   135,   122,   136,   128,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -302,7 +303,7 @@
     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
     97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
    107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   120,   128,   129,   130
+   117,   118,   119,   121,   129,   130,   131
 };
 
 #if YYDEBUG != 0
@@ -325,123 +326,124 @@
    482,   486,   488,   493,   494,   497,   500,   504,   507,   509,
    514,   522,   523,   525,   526,   528,   530,   532,   534,   536,
    538,   540,   542,   544,   546,   549,   552,   554,   556,   558,
-   560,   562,   563,   565,   567,   570,   573,   576,   578,   580,
-   583,   586,   589,   594,   595,   598,   601,   604,   607,   610,
-   613,   617,   620,   624,   630,   631,   634,   637,   640,   643,
-   649,   657,   659,   662,   665,   668,   671,   674,   679,   682,
-   685,   687,   689,   693,   695,   699,   701,   703,   709,   711,
-   713,   715,   718,   720,   723,   725,   728,   730,   733,   738,
-   744,   755,   757
+   560,   562,   563,   565,   567,   570,   573,   576,   579,   581,
+   583,   586,   589,   592,   597,   598,   601,   604,   607,   610,
+   613,   616,   620,   623,   627,   633,   634,   637,   640,   643,
+   646,   652,   660,   662,   665,   668,   671,   674,   677,   682,
+   685,   688,   690,   692,   696,   698,   702,   704,   706,   712,
+   714,   716,   718,   721,   723,   726,   728,   731,   733,   736,
+   741,   747,   758,   760
 };
 
-static const short yyrhs[] = {   143,
-     0,     0,   143,   201,     0,   143,   200,     0,   143,   189,
-     0,   143,   204,     0,   143,   152,     0,   143,   146,     0,
-     0,   144,   201,     0,   144,   200,     0,   144,   189,     0,
-   144,   204,     0,   144,   146,     0,     0,   145,   180,   131,
-     0,   145,   146,     0,   131,     0,   166,   131,     0,   147,
-     0,   170,   131,     0,   176,   131,     0,   149,     0,   209,
-   131,     0,   211,   131,     0,   212,   131,     0,    37,   132,
-     7,   133,     0,    64,     7,   131,     0,   148,   144,     9,
-     0,    74,     3,     0,   160,   150,   134,     0,   151,   144,
-   135,     0,     0,   155,     0,   115,     0,   156,     0,   155,
-   119,   156,     0,   154,     0,   160,   210,   206,   157,     0,
-   210,   206,   157,     0,   160,   210,   206,   132,   153,   133,
-     0,   210,   206,   132,   153,   133,     0,     0,   136,   158,
-   137,     0,   136,   125,   137,     0,   172,     0,   158,   119,
-   173,     0,   158,   137,   136,   173,     0,     0,   160,     0,
-   136,   161,   137,     0,   162,     0,   161,   119,   162,     0,
-   161,   137,   136,   162,     0,    16,     0,    18,     0,    24,
-   132,   183,   133,     0,    26,   132,   174,   133,     0,    33,
+static const short yyrhs[] = {   144,
+     0,     0,   144,   202,     0,   144,   201,     0,   144,   190,
+     0,   144,   205,     0,   144,   153,     0,   144,   147,     0,
+     0,   145,   202,     0,   145,   201,     0,   145,   190,     0,
+   145,   205,     0,   145,   147,     0,     0,   146,   181,   132,
+     0,   146,   147,     0,   132,     0,   167,   132,     0,   148,
+     0,   171,   132,     0,   177,   132,     0,   150,     0,   210,
+   132,     0,   212,   132,     0,   213,   132,     0,    37,   133,
+     7,   134,     0,    64,     7,   132,     0,   149,   145,     9,
+     0,    74,     3,     0,   161,   151,   135,     0,   152,   145,
+   136,     0,     0,   156,     0,   116,     0,   157,     0,   156,
+   120,   157,     0,   155,     0,   161,   211,   207,   158,     0,
+   211,   207,   158,     0,   161,   211,   207,   133,   154,   134,
+     0,   211,   207,   133,   154,   134,     0,     0,   137,   159,
+   138,     0,   137,   126,   138,     0,   173,     0,   159,   120,
+   174,     0,   159,   138,   137,   174,     0,     0,   161,     0,
+   137,   162,   138,     0,   163,     0,   162,   120,   163,     0,
+   162,   138,   137,   163,     0,    16,     0,    18,     0,    24,
+   133,   184,   134,     0,    26,   133,   175,   134,     0,    33,
      0,    34,     0,    35,     0,    36,     0,    38,     0,    39,
-   132,   175,   133,     0,    39,   132,     7,   133,     0,    41,
-   132,     7,   133,     0,    43,     0,    44,   132,     7,   133,
-     0,    45,   132,     7,   133,     0,    45,   132,   175,   133,
-     0,    48,     0,    51,     0,    53,   132,   175,   133,     0,
-    54,   132,     7,   133,     0,    55,   132,     7,   133,     0,
-    56,   132,   175,   133,     0,    57,   132,     7,   133,     0,
-    58,     0,    60,   132,   175,   133,     0,    61,     0,    62,
-   132,   183,   133,     0,    63,   132,    52,     3,   133,     0,
-    66,     0,    69,     0,    73,   132,   171,   133,     0,    75,
+   133,   176,   134,     0,    39,   133,     7,   134,     0,    41,
+   133,     7,   134,     0,    43,     0,    44,   133,     7,   134,
+     0,    45,   133,     7,   134,     0,    45,   133,   176,   134,
+     0,    48,     0,    51,     0,    53,   133,   176,   134,     0,
+    54,   133,     7,   134,     0,    55,   133,     7,   134,     0,
+    56,   133,   176,   134,     0,    57,   133,     7,   134,     0,
+    58,     0,    60,   133,   176,   134,     0,    61,     0,    62,
+   133,   184,   134,     0,    63,   133,    52,     3,   134,     0,
+    66,     0,    69,     0,    73,   133,   172,   134,     0,    75,
      0,    79,     0,    80,     0,    81,     0,    82,     0,    83,
-     0,    84,     0,    85,   132,   208,   133,     0,    87,     0,
+     0,    84,     0,    85,   133,   209,   134,     0,    87,     0,
     88,     0,    89,     0,    90,     0,    91,     0,    93,     0,
-    94,     0,    97,   132,   171,   133,     0,    99,     0,   101,
-     0,   104,   132,   173,   133,     0,   105,   132,   210,   133,
-     0,   106,   132,   210,   133,     0,   111,   132,     8,   133,
-     0,   112,     0,   113,     0,   114,   132,   213,   133,     0,
-   117,   132,   210,   133,     0,   208,     0,     0,   100,     0,
-     0,   164,   165,     0,    26,   173,   138,   178,     0,    38,
-   138,   178,     0,    32,   210,   183,   139,   175,     0,     0,
-   168,   119,     0,   168,     0,   169,     0,   168,   119,   169,
-     0,   183,   139,   175,     0,   183,     0,    46,   182,   134,
-   167,   135,     0,   172,     0,   171,   119,   172,     0,     0,
-   173,     0,     5,     0,     6,     0,     3,     0,   173,   140,
-   173,   138,   173,     0,   173,   121,   173,     0,   173,   122,
-   173,     0,   173,   124,   173,     0,   173,   123,   173,     0,
-   173,   125,   173,     0,   173,   126,   173,     0,   173,    10,
-   173,     0,   173,    11,   173,     0,   127,   173,     0,   123,
-   173,     0,   125,   173,     0,   132,   210,   133,   173,     0,
-    98,   132,   210,   133,     0,   132,   173,   133,     0,   175,
-     0,   174,   119,   175,     0,   173,     0,    49,    32,   210,
-   183,     0,     0,   177,   178,     0,   179,   131,     0,   159,
-   212,   131,     0,   160,   131,     0,   131,     0,   159,   210,
-   206,   157,     0,   159,   210,   163,   206,   132,   153,   133,
-     0,     0,   183,     0,     0,     3,     0,     4,     0,     3,
-     0,     4,     0,    60,     0,    94,     0,   114,     0,    22,
-     0,   116,     0,   186,     0,    96,   186,     0,   110,   186,
+    94,     0,    97,   133,   172,   134,     0,   100,     0,   102,
+     0,   105,   133,   174,   134,     0,   106,   133,   211,   134,
+     0,   107,   133,   211,   134,     0,   112,   133,     8,   134,
+     0,   113,     0,   114,     0,   115,   133,   214,   134,     0,
+   118,   133,   211,   134,     0,   209,     0,     0,   101,     0,
+     0,   165,   166,     0,    26,   174,   139,   179,     0,    38,
+   139,   179,     0,    32,   211,   184,   140,   176,     0,     0,
+   169,   120,     0,   169,     0,   170,     0,   169,   120,   170,
+     0,   184,   140,   176,     0,   184,     0,    46,   183,   135,
+   168,   136,     0,   173,     0,   172,   120,   173,     0,     0,
+   174,     0,     5,     0,     6,     0,     3,     0,   174,   141,
+   174,   139,   174,     0,   174,   122,   174,     0,   174,   123,
+   174,     0,   174,   125,   174,     0,   174,   124,   174,     0,
+   174,   126,   174,     0,   174,   127,   174,     0,   174,    10,
+   174,     0,   174,    11,   174,     0,   128,   174,     0,   124,
+   174,     0,   126,   174,     0,   133,   211,   134,   174,     0,
+    98,   133,   211,   134,     0,   133,   174,   134,     0,   176,
+     0,   175,   120,   176,     0,   174,     0,    49,    32,   211,
+   184,     0,     0,   178,   179,     0,   180,   132,     0,   160,
+   213,   132,     0,   161,   132,     0,   132,     0,   160,   211,
+   207,   158,     0,   160,   211,   164,   207,   133,   154,   134,
+     0,     0,   184,     0,     0,     3,     0,     4,     0,     3,
+     0,     4,     0,    60,     0,    94,     0,   115,     0,    22,
+     0,   117,     0,   187,     0,    96,   187,     0,   111,   187,
      0,    50,     0,    42,     0,    20,     0,    47,     0,    52,
-     0,     0,    70,     0,    70,     0,    95,   185,     0,    76,
-   185,     0,    59,   185,     0,    71,     0,    28,     0,    29,
-     3,     0,    29,     4,     0,   160,   187,     0,   188,   134,
-   190,   135,     0,     0,   190,   191,     0,   159,   201,     0,
-    40,     3,     0,    40,     4,     0,   160,   192,     0,    86,
-   138,     0,   194,   179,   131,     0,    77,   138,     0,   195,
-   180,   131,     0,   193,   134,   194,   195,   135,     0,     0,
-   138,     4,     0,    72,     3,     0,    72,     4,     0,   160,
-   198,     0,   199,   197,   134,   145,   135,     0,   199,   138,
-     3,   134,   149,   145,   135,     0,   196,     0,   198,   131,
-     0,   192,   131,     0,    78,     3,     0,    78,     4,     0,
-   160,   202,     0,   203,   134,   145,   135,     0,   125,   206,
-     0,    32,   205,     0,   183,     0,   205,     0,   132,   206,
-   133,     0,   206,     0,   207,   119,   206,     0,    92,     0,
-   109,     0,   102,   182,   134,   177,   135,     0,   115,     0,
-     4,     0,   184,     0,    32,   210,     0,   170,     0,    46,
-     3,     0,   209,     0,   102,     3,     0,   212,     0,   108,
-     3,     0,   107,   159,   210,   207,     0,   108,   182,   134,
-   177,   135,     0,   108,   182,   103,   132,   179,   133,   181,
-   134,   164,   135,     0,     5,     0,     5,   141,     5,     0
+     0,     0,    70,     0,    70,     0,    99,   186,     0,    95,
+   186,     0,    76,   186,     0,    59,   186,     0,    71,     0,
+    28,     0,    29,     3,     0,    29,     4,     0,   161,   188,
+     0,   189,   135,   191,   136,     0,     0,   191,   192,     0,
+   160,   202,     0,    40,     3,     0,    40,     4,     0,   161,
+   193,     0,    86,   139,     0,   195,   180,   132,     0,    77,
+   139,     0,   196,   181,   132,     0,   194,   135,   195,   196,
+   136,     0,     0,   139,     4,     0,    72,     3,     0,    72,
+     4,     0,   161,   199,     0,   200,   198,   135,   146,   136,
+     0,   200,   139,     3,   135,   150,   146,   136,     0,   197,
+     0,   199,   132,     0,   193,   132,     0,    78,     3,     0,
+    78,     4,     0,   161,   203,     0,   204,   135,   146,   136,
+     0,   126,   207,     0,    32,   206,     0,   184,     0,   206,
+     0,   133,   207,   134,     0,   207,     0,   208,   120,   207,
+     0,    92,     0,   110,     0,   103,   183,   135,   178,   136,
+     0,   116,     0,     4,     0,   185,     0,    32,   211,     0,
+   171,     0,    46,     3,     0,   210,     0,   103,     3,     0,
+   213,     0,   109,     3,     0,   108,   160,   211,   208,     0,
+   109,   183,   135,   178,   136,     0,   109,   183,   104,   133,
+   180,   134,   182,   135,   165,   136,     0,     5,     0,     5,
+   142,     5,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   228,   231,   232,   233,   234,   235,   236,   237,   240,   241,
-   242,   243,   244,   245,   248,   249,   250,   253,   254,   255,
-   256,   257,   258,   259,   260,   261,   264,   266,   269,   272,
-   274,   276,   279,   280,   283,   286,   287,   288,   292,   296,
-   299,   305,   312,   313,   314,   317,   318,   319,   322,   323,
-   326,   330,   331,   332,   335,   337,   338,   339,   340,   341,
-   342,   343,   344,   345,   346,   347,   348,   349,   350,   351,
-   352,   353,   354,   355,   356,   357,   358,   359,   360,   361,
-   362,   363,   364,   365,   366,   367,   368,   369,   370,   371,
-   372,   373,   374,   375,   376,   377,   378,   379,   380,   381,
-   382,   383,   384,   385,   386,   387,   388,   389,   390,   391,
-   392,   393,   396,   397,   400,   401,   406,   410,   416,   423,
-   424,   425,   428,   429,   435,   440,   446,   454,   455,   468,
-   469,   472,   473,   474,   475,   476,   477,   478,   479,   480,
-   481,   482,   483,   484,   485,   486,   487,   488,   489,   492,
-   493,   496,   502,   507,   508,   513,   514,   515,   516,   519,
-   522,   533,   534,   537,   538,   539,   542,   544,   545,   546,
-   547,   550,   551,   552,   553,   554,   566,   567,   568,   569,
-   570,   573,   574,   577,   578,   579,   580,   581,   582,   585,
-   586,   589,   595,   600,   601,   604,   608,   609,   612,   624,
-   625,   628,   629,   632,   647,   648,   651,   652,   655,   663,
-   671,   678,   681,   683,   686,   687,   690,   695,   701,   702,
-   705,   706,   707,   710,   712,   715,   717,   720,   730,   731,
-   732,   733,   734,   735,   736,   737,   738,   739,   742,   754,
-   758,   771,   773
+   229,   232,   233,   234,   235,   236,   237,   238,   241,   242,
+   243,   244,   245,   246,   249,   250,   251,   254,   255,   256,
+   257,   258,   259,   260,   261,   262,   265,   267,   270,   273,
+   275,   277,   280,   281,   284,   287,   288,   289,   293,   297,
+   300,   306,   313,   314,   315,   318,   319,   320,   323,   324,
+   327,   331,   332,   333,   336,   338,   339,   340,   341,   342,
+   343,   344,   345,   346,   347,   348,   349,   350,   351,   352,
+   353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
+   363,   364,   365,   366,   367,   368,   369,   370,   371,   372,
+   373,   374,   375,   376,   377,   378,   379,   380,   381,   382,
+   383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
+   393,   394,   397,   398,   401,   402,   407,   411,   417,   424,
+   425,   426,   429,   430,   436,   441,   447,   455,   456,   469,
+   470,   473,   474,   475,   476,   477,   478,   479,   480,   481,
+   482,   483,   484,   485,   486,   487,   488,   489,   490,   493,
+   494,   497,   503,   508,   509,   514,   515,   516,   517,   520,
+   523,   534,   535,   538,   539,   540,   543,   545,   546,   547,
+   548,   551,   552,   553,   554,   555,   567,   568,   569,   570,
+   571,   574,   575,   578,   579,   580,   581,   582,   583,   584,
+   587,   588,   591,   597,   602,   603,   606,   610,   611,   614,
+   626,   627,   630,   631,   634,   649,   650,   653,   654,   657,
+   665,   673,   680,   683,   685,   688,   689,   692,   697,   703,
+   704,   707,   708,   709,   712,   714,   717,   719,   722,   732,
+   733,   734,   735,   736,   737,   738,   739,   740,   741,   744,
+   756,   760,   773,   775
 };
 #endif
 
@@ -462,50 +464,50 @@
 "tLONG","tMETHODS","tMODULE","tNONCREATABLE","tOBJECT","tODL","tOLEAUTOMATION",
 "tOPTIONAL","tOUT","tPOINTERDEFAULT","tPROPERTIES","tPROPGET","tPROPPUT","tPROPPUTREF",
 "tPUBLIC","tREADONLY","tREF","tRESTRICTED","tRETVAL","tSHORT","tSIGNED","tSIZEIS",
-"tSIZEOF","tSOURCE","tSTDCALL","tSTRING","tSTRUCT","tSWITCH","tSWITCHIS","tSWITCHTYPE",
-"tTRANSMITAS","tTYPEDEF","tUNION","tUNIQUE","tUNSIGNED","tUUID","tV1ENUM","tVARARG",
-"tVERSION","tVOID","tWCHAR","tWIREMARSHAL","tPOINTERTYPE","','","COND","'|'",
-"'&'","'-'","'+'","'*'","'/'","'~'","CAST","PPTR","NEG","';'","'('","')'","'{'",
-"'}'","'['","']'","':'","'='","'?'","'.'","input","gbl_statements","imp_statements",
-"int_statements","statement","cppquote","import_start","import","libraryhdr",
-"library_start","librarydef","m_args","no_args","args","arg","array","array_list",
-"m_attributes","attributes","attrib_list","attribute","callconv","cases","case",
-"constdef","enums","enum_list","enum","enumdef","m_exprs","m_expr","expr","expr_list_const",
-"expr_const","externdef","fields","field","s_field","funcdef","m_ident","t_ident",
-"ident","base_type","m_int","int_std","coclass","coclasshdr","coclassdef","coclass_ints",
-"coclass_int","dispinterface","dispinterfacehdr","dispint_props","dispint_meths",
-"dispinterfacedef","inherit","interface","interfacehdr","interfacedef","interfacedec",
-"module","modulehdr","moduledef","p_ident","pident","pident_list","pointer_type",
-"structdef","type","typedef","uniondef","version", NULL
+"tSIZEOF","tSMALL","tSOURCE","tSTDCALL","tSTRING","tSTRUCT","tSWITCH","tSWITCHIS",
+"tSWITCHTYPE","tTRANSMITAS","tTYPEDEF","tUNION","tUNIQUE","tUNSIGNED","tUUID",
+"tV1ENUM","tVARARG","tVERSION","tVOID","tWCHAR","tWIREMARSHAL","tPOINTERTYPE",
+"','","COND","'|'","'&'","'-'","'+'","'*'","'/'","'~'","CAST","PPTR","NEG","';'",
+"'('","')'","'{'","'}'","'['","']'","':'","'='","'?'","'.'","input","gbl_statements",
+"imp_statements","int_statements","statement","cppquote","import_start","import",
+"libraryhdr","library_start","librarydef","m_args","no_args","args","arg","array",
+"array_list","m_attributes","attributes","attrib_list","attribute","callconv",
+"cases","case","constdef","enums","enum_list","enum","enumdef","m_exprs","m_expr",
+"expr","expr_list_const","expr_const","externdef","fields","field","s_field",
+"funcdef","m_ident","t_ident","ident","base_type","m_int","int_std","coclass",
+"coclasshdr","coclassdef","coclass_ints","coclass_int","dispinterface","dispinterfacehdr",
+"dispint_props","dispint_meths","dispinterfacedef","inherit","interface","interfacehdr",
+"interfacedef","interfacedec","module","modulehdr","moduledef","p_ident","pident",
+"pident_list","pointer_type","structdef","type","typedef","uniondef","version", NULL
 };
 #endif
 
 static const short yyr1[] = {     0,
-   142,   143,   143,   143,   143,   143,   143,   143,   144,   144,
-   144,   144,   144,   144,   145,   145,   145,   146,   146,   146,
-   146,   146,   146,   146,   146,   146,   147,   148,   149,   150,
-   151,   152,   153,   153,   154,   155,   155,   155,   156,   156,
-   156,   156,   157,   157,   157,   158,   158,   158,   159,   159,
-   160,   161,   161,   161,   162,   162,   162,   162,   162,   162,
-   162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-   162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-   162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-   162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-   162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-   162,   162,   163,   163,   164,   164,   165,   165,   166,   167,
-   167,   167,   168,   168,   169,   169,   170,   171,   171,   172,
-   172,   173,   173,   173,   173,   173,   173,   173,   173,   173,
-   173,   173,   173,   173,   173,   173,   173,   173,   173,   174,
-   174,   175,   176,   177,   177,   178,   178,   178,   178,   179,
-   180,   181,   181,   182,   182,   182,   183,   183,   183,   183,
-   183,   184,   184,   184,   184,   184,   184,   184,   184,   184,
-   184,   185,   185,   186,   186,   186,   186,   186,   186,   187,
-   187,   188,   189,   190,   190,   191,   192,   192,   193,   194,
-   194,   195,   195,   196,   197,   197,   198,   198,   199,   200,
-   200,   200,   201,   201,   202,   202,   203,   204,   205,   205,
-   206,   206,   206,   207,   207,   208,   208,   209,   210,   210,
-   210,   210,   210,   210,   210,   210,   210,   210,   211,   212,
-   212,   213,   213
+   143,   144,   144,   144,   144,   144,   144,   144,   145,   145,
+   145,   145,   145,   145,   146,   146,   146,   147,   147,   147,
+   147,   147,   147,   147,   147,   147,   148,   149,   150,   151,
+   152,   153,   154,   154,   155,   156,   156,   156,   157,   157,
+   157,   157,   158,   158,   158,   159,   159,   159,   160,   160,
+   161,   162,   162,   162,   163,   163,   163,   163,   163,   163,
[truncated at 1000 lines; 1997 more skipped]