Support remaining basic types (float, double, small, wchar_t and handle_t).
authorEric Kohl <eric.kohl@reactos.org>
Thu, 24 Feb 2005 16:48:16 +0000 (16:48 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Thu, 24 Feb 2005 16:48:16 +0000 (16:48 +0000)
svn path=/trunk/; revision=13733

reactos/include/wine/rpcfc.h
reactos/tools/widl/ChangeLog [new file with mode: 0644]
reactos/tools/widl/client.c
reactos/tools/widl/header.c
reactos/tools/widl/lex.yy.c
reactos/tools/widl/parser.l
reactos/tools/widl/parser.y
reactos/tools/widl/server.c
reactos/tools/widl/y.tab.c
reactos/tools/widl/y.tab.h

index 073f32b..803ae2b 100644 (file)
@@ -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 */
diff --git a/reactos/tools/widl/ChangeLog b/reactos/tools/widl/ChangeLog
new file mode 100644 (file)
index 0000000..cff8668
--- /dev/null
@@ -0,0 +1,11 @@
+ChangeLog\r
+\r
+2005-02-24 ekohl\r
+  include/wine/rpcfc.h\r
+  tools/widl/client.c\r
+  tools/widl/header.c\r
+  tools/widl/parser.l\r
+  tools/widl/parser.y\r
+  tools/widl/server.c\r
+\r
+Support remaining basic types (float, double, small, wchar_t and handle_t).\r
index 1be77f6..e3a01bc 100644 (file)
@@ -82,38 +82,49 @@ static void write_procformatstring(type_t *iface)
                 {\r
                 case RPC_FC_BYTE:\r
                     print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_client("0x%02x,    /* RPC_FC_BYTE */\n", var->type->type);\r
+                    print_client("0x%02x,    /* FC_BYTE */\n", RPC_FC_BYTE);\r
                     break;\r
                 case RPC_FC_CHAR:\r
                     print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_client("0x%02x,    /* RPC_FC_CHAR */\n", var->type->type);\r
+                    print_client("0x%02x,    /* FC_CHAR */\n", RPC_FC_CHAR);\r
                     break;\r
                 case RPC_FC_WCHAR:\r
                     print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_client("0x%02x,    /* RPC_FC_WCHAR */\n", var->type->type);\r
+                    print_client("0x%02x,    /* FC_WCHAR */\n", RPC_FC_WCHAR);\r
                     break;\r
                 case RPC_FC_USHORT:\r
-                    print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_client("0x%02x,    /* RPC_FC_USHORT */\n", var->type->type);\r
-                    break;\r
                 case RPC_FC_SHORT:\r
                     print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_client("0x%02x,    /* RPC_FC_SHORT */\n", var->type->type);\r
+                    print_client("0x%02x,    /* FC_USHORT */\n", RPC_FC_SHORT);\r
                     break;\r
                 case RPC_FC_ULONG:\r
-                    print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_client("0x%02x,    /* RPC_FC_ULONG */\n", var->type->type);\r
-                    break;\r
                 case RPC_FC_LONG:\r
                     print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_client("0x%02x,    /* RPC_FC_LONG */\n", var->type->type);\r
+                    print_client("0x%02x,    /* FC_LONG */\n", RPC_FC_LONG);\r
                     break;\r
                 case RPC_FC_HYPER:\r
                     print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_client("0x%02x,    /* RPC_FC_HYPER */\n", var->type->type);\r
+                    print_client("0x%02x,    /* FC_HYPER */\n", RPC_FC_HYPER);\r
+                    break;\r
+                case RPC_FC_IGNORE:\r
+                    print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
+                    print_client("0x%02x,    /* FC_IGNORE */\n", RPC_FC_IGNORE);\r
+                    break;\r
+                case RPC_FC_SMALL:\r
+                    print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
+                    print_client("0x%02x,    /* FC_SMALL */\n", RPC_FC_SMALL);\r
+                    break;\r
+                case RPC_FC_FLOAT:\r
+                    print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
+                    print_client("0x%02x,    /* FC_FLOAT */\n", RPC_FC_FLOAT);\r
+                    break;\r
+                case RPC_FC_DOUBLE:\r
+                    print_client("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
+                    print_client("0x%02x,    /* FC_DOUBLE */\n", RPC_FC_DOUBLE);\r
                     break;\r
                 default:\r
                     error("Unknown/unsupported type\n");\r
+                    return;\r
                 }\r
 \r
                 var = PREV_LINK(var);\r
@@ -133,38 +144,51 @@ static void write_procformatstring(type_t *iface)
             {\r
             case RPC_FC_BYTE:\r
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_client("0x%02x,    /* RPC_FC_BYTE */\n", var->type->type);\r
+                print_client("0x%02x,    /* FC_BYTE */\n", var->type->type);\r
                 break;\r
             case RPC_FC_CHAR:\r
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_client("0x%02x,    /* RPC_FC_CHAR */\n", var->type->type);\r
+                print_client("0x%02x,    /* FC_CHAR */\n", var->type->type);\r
                 break;\r
             case RPC_FC_WCHAR:\r
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_client("0x%02x,    /* RPC_FC_WCHAR */\n", var->type->type);\r
+                print_client("0x%02x,    /* FC_WCHAR */\n", var->type->type);\r
                 break;\r
             case RPC_FC_USHORT:\r
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_client("0x%02x,    /* RPC_FC_USHORT */\n", var->type->type);\r
+                print_client("0x%02x,    /* FC_USHORT */\n", var->type->type);\r
                 break;\r
             case RPC_FC_SHORT:\r
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_client("0x%02x,    /* RPC_FC_SHORT */\n", var->type->type);\r
+                print_client("0x%02x,    /* FC_SHORT */\n", var->type->type);\r
                 break;\r
             case RPC_FC_ULONG:\r
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_client("0x%02x,    /* RPC_FC_ULONG */\n", var->type->type);\r
+                print_client("0x%02x,    /* FC_ULONG */\n", var->type->type);\r
                 break;\r
             case RPC_FC_LONG:\r
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_client("0x%02x,    /* RPC_FC_LONG */\n", var->type->type);\r
+                print_client("0x%02x,    /* FC_LONG */\n", var->type->type);\r
                 break;\r
             case RPC_FC_HYPER:\r
                 print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_client("0x%02x,    /* RPC_FC_HYPER */\n", var->type->type);\r
+                print_client("0x%02x,    /* FC_HYPER */\n", var->type->type);\r
+                break;\r
+            case RPC_FC_SMALL:\r
+                print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
+                print_client("0x%02x,    /* FC_SMALL */\n", RPC_FC_SMALL);\r
+                break;\r
+            case RPC_FC_FLOAT:\r
+                print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
+                print_client("0x%02x,    /* FC_FLOAT */\n", RPC_FC_FLOAT);\r
+                break;\r
+            case RPC_FC_DOUBLE:\r
+                print_client("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
+                print_client("0x%02x,    /* FC_DOUBLE */\n", RPC_FC_DOUBLE);\r
                 break;\r
             default:\r
                 error("Unknown/unsupported type\n");\r
+                return;\r
             }\r
         }\r
 \r
@@ -220,6 +244,7 @@ static void print_message_buffer_size(func_t *func)
         {\r
         case RPC_FC_BYTE:\r
         case RPC_FC_CHAR:\r
+        case RPC_FC_SMALL:\r
             size = 1;\r
             alignment = 0;\r
             break;\r
@@ -234,26 +259,42 @@ static void print_message_buffer_size(func_t *func)
 \r
         case RPC_FC_ULONG:\r
         case RPC_FC_LONG:\r
+        case RPC_FC_FLOAT:\r
             size = 4;\r
             if (last_size != 0 && last_size < 4)\r
                 alignment += (4 - last_size);\r
             break;\r
 \r
         case RPC_FC_HYPER:\r
+        case RPC_FC_DOUBLE:\r
             size = 8;\r
             if (last_size != 0 && last_size < 4)\r
                 alignment += (4 - last_size);\r
             break;\r
 \r
+        case RPC_FC_IGNORE:\r
+            size = 0;\r
+            break;\r
+\r
         default:\r
             error("Unknown/unsupported type!");\r
         }\r
 \r
-        if (last_size != 0)\r
-            fprintf(client, " +");\r
-        fprintf(client, " %uU", size + alignment);\r
+        if (size == 0)\r
+        {\r
+            if (last_size != 0)\r
+                fprintf(client, " +");\r
+            fprintf(client, " 0U");\r
+        }\r
+        else\r
+        {\r
+            if (last_size != 0)\r
+                fprintf(client, " +");\r
+            fprintf(client, " %uU", size + alignment);\r
 \r
-        last_size = size;\r
+            last_size = size;\r
+        }\r
+        \r
 \r
         var = PREV_LINK(var);\r
     }\r
@@ -279,6 +320,7 @@ static void marshall_arguments(func_t *func)
         {\r
         case RPC_FC_BYTE:\r
         case RPC_FC_CHAR:\r
+        case RPC_FC_SMALL:\r
             size = 1;\r
             alignment = 0;\r
             break;\r
@@ -293,32 +335,41 @@ static void marshall_arguments(func_t *func)
 \r
         case RPC_FC_ULONG:\r
         case RPC_FC_LONG:\r
+        case RPC_FC_FLOAT:\r
             size = 4;\r
             if (last_size != 0 && last_size < 4)\r
                 alignment = (4 - last_size);\r
             break;\r
 \r
         case RPC_FC_HYPER:\r
+        case RPC_FC_DOUBLE:\r
             size = 8;\r
             if (last_size != 0 && last_size < 4)\r
                 alignment = (4 - last_size);\r
             break;\r
 \r
+        case RPC_FC_IGNORE:\r
+            size = 0;\r
+            break;\r
+\r
         default:\r
             error("Unknown/unsupported type!");\r
         }\r
 \r
-        if (alignment != 0)\r
-            print_client("_StubMsg.Buffer += %u;\n", alignment);\r
-\r
-        print_client("*((");\r
-        write_type(client, var->type, var, var->tname);\r
-        fprintf(client, " __RPC_FAR*)_StubMsg.Buffer)++ = ");\r
-        write_name(client, var);\r
-        fprintf(client, ";\n");\r
-        fprintf(client, "\n");\r
+        if (size != 0)\r
+        {\r
+            if (alignment != 0)\r
+                print_client("_StubMsg.Buffer += %u;\n", alignment);\r
+\r
+            print_client("*((");\r
+            write_type(client, var->type, var, var->tname);\r
+            fprintf(client, " __RPC_FAR*)_StubMsg.Buffer)++ = ");\r
+            write_name(client, var);\r
+            fprintf(client, ";\n");\r
+            fprintf(client, "\n");\r
 \r
-        last_size = size;\r
+            last_size = size;\r
+        }\r
 \r
         var = PREV_LINK(var);\r
     }\r
@@ -328,6 +379,7 @@ static void marshall_arguments(func_t *func)
 static void write_function_stubs(type_t *iface)\r
 {\r
     char *implicit_handle = get_attrp(iface->attrs, ATTR_IMPLICIT_HANDLE);\r
+    int explitit_handle = is_attr(iface->attrs, ATTR_IMPLICIT_HANDLE);\r
     func_t *func = iface->funcs;\r
     var_t* var;\r
     int method_count = 0;\r
@@ -343,10 +395,7 @@ static void write_function_stubs(type_t *iface)
         write_name(client, def);\r
         fprintf(client, "(\n");\r
         indent++;\r
-        if (func->args)\r
-            write_args(client, func->args, iface->name, 0, TRUE);\r
-        else\r
-            print_client("void");\r
+        write_args(client, func->args, iface->name, 0, TRUE);\r
         fprintf(client, ")\n");\r
         indent--;\r
 \r
index f64f3f9..f8db956 100644 (file)
@@ -245,7 +245,7 @@ void write_type(FILE *h, type_t *t, var_t *v, char *n)
         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 @@ void write_args(FILE *h, var_t *arg, char *name, int method, int do_indent)
     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 @@ static void write_function_proto(type_t *iface)
     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);
index f0a0a34..419d757 100644 (file)
@@ -4568,6 +4568,7 @@ static struct keyword {
        {"size_is",                     tSIZEIS},\r
        {"sizeof",                      tSIZEOF},\r
 /* ... */\r
+       {"small",                       tSMALL},\r
        {"source",                      tSOURCE},\r
 /* ... */      \r
        {"string",                      tSTRING},\r
index f943cf0..f41af6b 100644 (file)
@@ -288,6 +288,7 @@ static struct keyword {
        {"size_is",                     tSIZEIS},
        {"sizeof",                      tSIZEOF},
 /* ... */
+       {"small",                       tSMALL},
        {"source",                      tSOURCE},
 /* ... */      
        {"string",                      tSTRING},
index ff97fe6..f0f3af9 100644 (file)
@@ -172,6 +172,7 @@ static type_t std_uhyper = { "MIDL_uhyper" };
 %token tSHORT
 %token tSIGNED
 %token tSIZEIS tSIZEOF
+%token tSMALL
 %token tSOURCE
 %token tSTDCALL
 %token tSTRING tSTRUCT
@@ -553,7 +554,7 @@ base_type: tBYTE                            { $$ = make_type(RPC_FC_BYTE, NULL); }
        | 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 @@ base_type: tBYTE                            { $$ = make_type(RPC_FC_BYTE, NULL); }
                                                }
        | 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 @@ m_int:
        ;
 
 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); }
index 7a542b4..2520a3b 100644 (file)
@@ -87,35 +87,51 @@ static void write_procformatstring(type_t *iface)
                 {\r
                 case RPC_FC_BYTE:\r
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_server("0x%02x,    /* RPC_FC_BYTE */\n", var->type->type);\r
+                    print_server("0x%02x,    /* FC_BYTE */\n", var->type->type);\r
                     break;\r
                 case RPC_FC_CHAR:\r
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_server("0x%02x,    /* RPC_FC_CHAR */\n", var->type->type);\r
+                    print_server("0x%02x,    /* FC_CHAR */\n", var->type->type);\r
                     break;\r
                 case RPC_FC_WCHAR:\r
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_server("0x%02x,    /* RPC_FC_WCHAR */\n", var->type->type);\r
+                    print_server("0x%02x,    /* FC_WCHAR */\n", var->type->type);\r
                     break;\r
                 case RPC_FC_USHORT:\r
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_server("0x%02x,    /* RPC_FC_USHORT */\n", var->type->type);\r
+                    print_server("0x%02x,    /* FC_USHORT */\n", var->type->type);\r
                     break;\r
                 case RPC_FC_SHORT:\r
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_server("0x%02x,    /* RPC_FC_SHORT */\n", var->type->type);\r
+                    print_server("0x%02x,    /* FC_SHORT */\n", var->type->type);\r
                     break;\r
                 case RPC_FC_ULONG:\r
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_server("0x%02x,    /* RPC_FC_ULONG */\n", var->type->type);\r
+                    print_server("0x%02x,    /* FC_ULONG */\n", var->type->type);\r
                     break;\r
                 case RPC_FC_LONG:\r
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_server("0x%02x,    /* RPC_FC_LONG */\n", var->type->type);\r
+                    print_server("0x%02x,    /* FC_LONG */\n", var->type->type);\r
                     break;\r
                 case RPC_FC_HYPER:\r
                     print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
-                    print_server("0x%02x,    /* RPC_FC_HYPER */\n", var->type->type);\r
+                    print_server("0x%02x,    /* FC_HYPER */\n", var->type->type);\r
+                    break;\r
+                case RPC_FC_IGNORE:\r
+                    print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
+                    print_server("0x%02x,    /* FC_IGNORE */\n", var->type->type);\r
+                    break;\r
+                case RPC_FC_SMALL:\r
+                    print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
+                    print_server("0x%02x,    /* FC_SMALL */\n", RPC_FC_SMALL);\r
+                    break;\r
+                case RPC_FC_FLOAT:\r
+                    print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
+                    print_server("0x%02x,    /* FC_FLOAT */\n", RPC_FC_FLOAT);\r
+                    break;\r
+                case RPC_FC_DOUBLE:\r
+                    print_server("0x4e,    /* FC_IN_PARAM_BASETYPE */\n");\r
+                    print_server("0x%02x,    /* FC_DOUBLE */\n", RPC_FC_DOUBLE);\r
                     break;\r
                 default:\r
                     error("Unknown/unsupported type\n");\r
@@ -138,35 +154,47 @@ static void write_procformatstring(type_t *iface)
             {\r
             case RPC_FC_BYTE:\r
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_server("0x%02x,    /* RPC_FC_BYTE */\n", var->type->type);\r
+                print_server("0x%02x,    /* FC_BYTE */\n", var->type->type);\r
                 break;\r
             case RPC_FC_CHAR:\r
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_server("0x%02x,    /* RPC_FC_CHAR */\n", var->type->type);\r
+                print_server("0x%02x,    /* FC_CHAR */\n", var->type->type);\r
                 break;\r
             case RPC_FC_WCHAR:\r
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_server("0x%02x,    /* RPC_FC_WCHAR */\n", var->type->type);\r
+                print_server("0x%02x,    /* FC_WCHAR */\n", var->type->type);\r
                 break;\r
             case RPC_FC_USHORT:\r
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_server("0x%02x,    /* RPC_FC_USHORT */\n", var->type->type);\r
+                print_server("0x%02x,    /* FC_USHORT */\n", var->type->type);\r
                 break;\r
             case RPC_FC_SHORT:\r
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_server("0x%02x,    /* RPC_FC_SHORT */\n", var->type->type);\r
+                print_server("0x%02x,    /* FC_SHORT */\n", var->type->type);\r
                 break;\r
             case RPC_FC_ULONG:\r
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_server("0x%02x,    /* RPC_FC_ULONG */\n", var->type->type);\r
+                print_server("0x%02x,    /* FC_ULONG */\n", var->type->type);\r
                 break;\r
             case RPC_FC_LONG:\r
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_server("0x%02x,    /* RPC_FC_LONG */\n", var->type->type);\r
+                print_server("0x%02x,    /* FC_LONG */\n", var->type->type);\r
                 break;\r
             case RPC_FC_HYPER:\r
                 print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
-                print_server("0x%02x,    /* RPC_FC_HYPER */\n", var->type->type);\r
+                print_server("0x%02x,    /* FC_HYPER */\n", var->type->type);\r
+                break;\r
+            case RPC_FC_SMALL:\r
+                print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
+                print_server("0x%02x,    /* FC_SMALL */\n", RPC_FC_SMALL);\r
+                break;\r
+            case RPC_FC_FLOAT:\r
+                print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
+                print_server("0x%02x,    /* FC_FLOAT */\n", RPC_FC_FLOAT);\r
+                break;\r
+            case RPC_FC_DOUBLE:\r
+                print_server("0x53,    /* FC_RETURN_PARAM_BASETYPE */\n");\r
+                print_server("0x%02x,    /* FC_DOUBLE */\n", RPC_FC_DOUBLE);\r
                 break;\r
             default:\r
                 error("Unknown/unsupported type\n");\r
@@ -208,17 +236,23 @@ unsigned int get_required_buffer_size(type_t *type)
     switch(type->type)\r
     {\r
         case RPC_FC_BYTE:\r
+        case RPC_FC_SMALL:\r
         case RPC_FC_CHAR:\r
         case RPC_FC_WCHAR:\r
         case RPC_FC_USHORT:\r
         case RPC_FC_SHORT:\r
         case RPC_FC_ULONG:\r
         case RPC_FC_LONG:\r
+        case RPC_FC_FLOAT:\r
             return 4;\r
 \r
-      case RPC_FC_HYPER:\r
+        case RPC_FC_HYPER:\r
+        case RPC_FC_DOUBLE:\r
             return 8;\r
 \r
+        case RPC_FC_IGNORE:\r
+            return 0;\r
+\r
         default:\r
             error("Unknown/unsupported type: %s\n", type->name);\r
     }\r
@@ -244,6 +278,7 @@ static void unmarshall_arguments(func_t *func)
         {\r
         case RPC_FC_BYTE:\r
         case RPC_FC_CHAR:\r
+        case RPC_FC_SMALL:\r
             size = 1;\r
             alignment = 0;\r
             break;\r
@@ -258,32 +293,41 @@ static void unmarshall_arguments(func_t *func)
 \r
         case RPC_FC_ULONG:\r
         case RPC_FC_LONG:\r
+        case RPC_FC_FLOAT:\r
             size = 4;\r
             if (last_size != 0 && last_size < 4)\r
                 alignment = (4 - last_size);\r
             break;\r
 \r
         case RPC_FC_HYPER:\r
+        case RPC_FC_DOUBLE:\r
             size = 8;\r
             if (last_size != 0 && last_size < 4)\r
                 alignment = (4 - last_size);\r
             break;\r
 \r
+        case RPC_FC_IGNORE:\r
+            size = 0;\r
+            break;\r
+\r
         default:\r
             error("Unknown/unsupported type!");\r
         }\r
 \r
-        if (alignment != 0)\r
-            print_server("_StubMsg.Buffer += %u;\n", alignment);\r
+        if (size != 0)\r
+        {\r
+            if (alignment != 0)\r
+                print_server("_StubMsg.Buffer += %u;\n", alignment);\r
 \r
-        print_server("");\r
-        write_name(server, var);\r
-        fprintf(server, " = *((");\r
-        write_type(server, var->type, var, var->tname);\r
-        fprintf(server, " __RPC_FAR*)_StubMsg.Buffer)++;\n");\r
-        fprintf(server, "\n");\r
+            print_server("");\r
+            write_name(server, var);\r
+            fprintf(server, " = *((");\r
+            write_type(server, var->type, var, var->tname);\r
+            fprintf(server, " __RPC_FAR*)_StubMsg.Buffer)++;\n");\r
+            fprintf(server, "\n");\r
 \r
-        last_size = size;\r
+            last_size = size;\r
+        }\r
 \r
         var = PREV_LINK(var);\r
     }\r
index 6f40b48..ac3867e 100644 (file)
 #define        tSIGNED 350\r
 #define        tSIZEIS 351\r
 #define        tSIZEOF 352\r
-#define        tSOURCE 353\r
-#define        tSTDCALL        354\r
-#define        tSTRING 355\r
-#define        tSTRUCT 356\r
-#define        tSWITCH 357\r
-#define        tSWITCHIS       358\r
-#define        tSWITCHTYPE     359\r
-#define        tTRANSMITAS     360\r
-#define        tTYPEDEF        361\r
-#define        tUNION  362\r
-#define        tUNIQUE 363\r
-#define        tUNSIGNED       364\r
-#define        tUUID   365\r
-#define        tV1ENUM 366\r
-#define        tVARARG 367\r
-#define        tVERSION        368\r
-#define        tVOID   369\r
-#define        tWCHAR  370\r
-#define        tWIREMARSHAL    371\r
-#define        tPOINTERTYPE    372\r
-#define        COND    373\r
-#define        CAST    374\r
-#define        PPTR    375\r
-#define        NEG     376\r
+#define        tSMALL  353\r
+#define        tSOURCE 354\r
+#define        tSTDCALL        355\r
+#define        tSTRING 356\r
+#define        tSTRUCT 357\r
+#define        tSWITCH 358\r
+#define        tSWITCHIS       359\r
+#define        tSWITCHTYPE     360\r
+#define        tTRANSMITAS     361\r
+#define        tTYPEDEF        362\r
+#define        tUNION  363\r
+#define        tUNIQUE 364\r
+#define        tUNSIGNED       365\r
+#define        tUUID   366\r
+#define        tV1ENUM 367\r
+#define        tVARARG 368\r
+#define        tVERSION        369\r
+#define        tVOID   370\r
+#define        tWCHAR  371\r
+#define        tWIREMARSHAL    372\r
+#define        tPOINTERTYPE    373\r
+#define        COND    374\r
+#define        CAST    375\r
+#define        PPTR    376\r
+#define        NEG     377\r
 \r
 #line 1 "parser.y"\r
 \r
@@ -258,26 +259,26 @@ typedef union {
 \r
 \r
 \r
-#define        YYFINAL         457\r
+#define        YYFINAL         459\r
 #define        YYFLAG          -32768\r
-#define        YYNTBASE        142\r
+#define        YYNTBASE        143\r
 \r
-#define YYTRANSLATE(x) ((unsigned)(x) <= 376 ? yytranslate[x] : 214)\r
+#define YYTRANSLATE(x) ((unsigned)(x) <= 377 ? yytranslate[x] : 215)\r
 \r
 static const short yytranslate[] = {     0,\r
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,   122,     2,   132,\r
-   133,   125,   124,   119,   123,   141,   126,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,   138,   131,     2,\r
-   139,     2,   140,     2,     2,     2,     2,     2,     2,     2,\r
+     2,     2,     2,     2,     2,     2,     2,   123,     2,   133,\r
+   134,   126,   125,   120,   124,   142,   127,     2,     2,     2,\r
+     2,     2,     2,     2,     2,     2,     2,   139,   132,     2,\r
+   140,     2,   141,     2,     2,     2,     2,     2,     2,     2,\r
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-   136,     2,   137,     2,     2,     2,     2,     2,     2,     2,\r
+   137,     2,   138,     2,     2,     2,     2,     2,     2,     2,\r
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,   134,   121,   135,   127,     2,     2,     2,     2,\r
+     2,     2,   135,   122,   136,   128,     2,     2,     2,     2,\r
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
@@ -302,7 +303,7 @@ static const short yytranslate[] = {     0,
     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,\r
     97,    98,    99,   100,   101,   102,   103,   104,   105,   106,\r
    107,   108,   109,   110,   111,   112,   113,   114,   115,   116,\r
-   117,   118,   120,   128,   129,   130\r
+   117,   118,   119,   121,   129,   130,   131\r
 };\r
 \r
 #if YYDEBUG != 0\r
@@ -325,123 +326,124 @@ static const short yyprhs[] = {     0,
    482,   486,   488,   493,   494,   497,   500,   504,   507,   509,\r
    514,   522,   523,   525,   526,   528,   530,   532,   534,   536,\r
    538,   540,   542,   544,   546,   549,   552,   554,   556,   558,\r
-   560,   562,   563,   565,   567,   570,   573,   576,   578,   580,\r
-   583,   586,   589,   594,   595,   598,   601,   604,   607,   610,\r
-   613,   617,   620,   624,   630,   631,   634,   637,   640,   643,\r
-   649,   657,   659,   662,   665,   668,   671,   674,   679,   682,\r
-   685,   687,   689,   693,   695,   699,   701,   703,   709,   711,\r
-   713,   715,   718,   720,   723,   725,   728,   730,   733,   738,\r
-   744,   755,   757\r
+   560,   562,   563,   565,   567,   570,   573,   576,   579,   581,\r
+   583,   586,   589,   592,   597,   598,   601,   604,   607,   610,\r
+   613,   616,   620,   623,   627,   633,   634,   637,   640,   643,\r
+   646,   652,   660,   662,   665,   668,   671,   674,   677,   682,\r
+   685,   688,   690,   692,   696,   698,   702,   704,   706,   712,\r
+   714,   716,   718,   721,   723,   726,   728,   731,   733,   736,\r
+   741,   747,   758,   760\r
 };\r
 \r
-static const short yyrhs[] = {   143,\r
-     0,     0,   143,   201,     0,   143,   200,     0,   143,   189,\r
-     0,   143,   204,     0,   143,   152,     0,   143,   146,     0,\r
-     0,   144,   201,     0,   144,   200,     0,   144,   189,     0,\r
-   144,   204,     0,   144,   146,     0,     0,   145,   180,   131,\r
-     0,   145,   146,     0,   131,     0,   166,   131,     0,   147,\r
-     0,   170,   131,     0,   176,   131,     0,   149,     0,   209,\r
-   131,     0,   211,   131,     0,   212,   131,     0,    37,   132,\r
-     7,   133,     0,    64,     7,   131,     0,   148,   144,     9,\r
-     0,    74,     3,     0,   160,   150,   134,     0,   151,   144,\r
-   135,     0,     0,   155,     0,   115,     0,   156,     0,   155,\r
-   119,   156,     0,   154,     0,   160,   210,   206,   157,     0,\r
-   210,   206,   157,     0,   160,   210,   206,   132,   153,   133,\r
-     0,   210,   206,   132,   153,   133,     0,     0,   136,   158,\r
-   137,     0,   136,   125,   137,     0,   172,     0,   158,   119,\r
-   173,     0,   158,   137,   136,   173,     0,     0,   160,     0,\r
-   136,   161,   137,     0,   162,     0,   161,   119,   162,     0,\r
-   161,   137,   136,   162,     0,    16,     0,    18,     0,    24,\r
-   132,   183,   133,     0,    26,   132,   174,   133,     0,    33,\r
+static const short yyrhs[] = {   144,\r
+     0,     0,   144,   202,     0,   144,   201,     0,   144,   190,\r
+     0,   144,   205,     0,   144,   153,     0,   144,   147,     0,\r
+     0,   145,   202,     0,   145,   201,     0,   145,   190,     0,\r
+   145,   205,     0,   145,   147,     0,     0,   146,   181,   132,\r
+     0,   146,   147,     0,   132,     0,   167,   132,     0,   148,\r
+     0,   171,   132,     0,   177,   132,     0,   150,     0,   210,\r
+   132,     0,   212,   132,     0,   213,   132,     0,    37,   133,\r
+     7,   134,     0,    64,     7,   132,     0,   149,   145,     9,\r
+     0,    74,     3,     0,   161,   151,   135,     0,   152,   145,\r
+   136,     0,     0,   156,     0,   116,     0,   157,     0,   156,\r
+   120,   157,     0,   155,     0,   161,   211,   207,   158,     0,\r
+   211,   207,   158,     0,   161,   211,   207,   133,   154,   134,\r
+     0,   211,   207,   133,   154,   134,     0,     0,   137,   159,\r
+   138,     0,   137,   126,   138,     0,   173,     0,   159,   120,\r
+   174,     0,   159,   138,   137,   174,     0,     0,   161,     0,\r
+   137,   162,   138,     0,   163,     0,   162,   120,   163,     0,\r
+   162,   138,   137,   163,     0,    16,     0,    18,     0,    24,\r
+   133,   184,   134,     0,    26,   133,   175,   134,     0,    33,\r
      0,    34,     0,    35,     0,    36,     0,    38,     0,    39,\r
-   132,   175,   133,     0,    39,   132,     7,   133,     0,    41,\r
-   132,     7,   133,     0,    43,     0,    44,   132,     7,   133,\r
-     0,    45,   132,     7,   133,     0,    45,   132,   175,   133,\r
-     0,    48,     0,    51,     0,    53,   132,   175,   133,     0,\r
-    54,   132,     7,   133,     0,    55,   132,     7,   133,     0,\r
-    56,   132,   175,   133,     0,    57,   132,     7,   133,     0,\r
-    58,     0,    60,   132,   175,   133,     0,    61,     0,    62,\r
-   132,   183,   133,     0,    63,   132,    52,     3,   133,     0,\r
-    66,     0,    69,     0,    73,   132,   171,   133,     0,    75,\r
+   133,   176,   134,     0,    39,   133,     7,   134,     0,    41,\r
+   133,     7,   134,     0,    43,     0,    44,   133,     7,   134,\r
+     0,    45,   133,     7,   134,     0,    45,   133,   176,   134,\r
+     0,    48,     0,    51,     0,    53,   133,   176,   134,     0,\r
+    54,   133,     7,   134,     0,    55,   133,     7,   134,     0,\r
+    56,   133,   176,   134,     0,    57,   133,     7,   134,     0,\r
+    58,     0,    60,   133,   176,   134,     0,    61,     0,    62,\r
+   133,   184,   134,     0,    63,   133,    52,     3,   134,     0,\r
+    66,     0,    69,     0,    73,   133,   172,   134,     0,    75,\r
      0,    79,     0,    80,     0,    81,     0,    82,     0,    83,\r
-     0,    84,     0,    85,   132,   208,   133,     0,    87,     0,\r
+     0,    84,     0,    85,   133,   209,   134,     0,    87,     0,\r
     88,     0,    89,     0,    90,     0,    91,     0,    93,     0,\r
-    94,     0,    97,   132,   171,   133,     0,    99,     0,   101,\r
-     0,   104,   132,   173,   133,     0,   105,   132,   210,   133,\r
-     0,   106,   132,   210,   133,     0,   111,   132,     8,   133,\r
-     0,   112,     0,   113,     0,   114,   132,   213,   133,     0,\r
-   117,   132,   210,   133,     0,   208,     0,     0,   100,     0,\r
-     0,   164,   165,     0,    26,   173,   138,   178,     0,    38,\r
-   138,   178,     0,    32,   210,   183,   139,   175,     0,     0,\r
-   168,   119,     0,   168,     0,   169,     0,   168,   119,   169,\r
-     0,   183,   139,   175,     0,   183,     0,    46,   182,   134,\r
-   167,   135,     0,   172,     0,   171,   119,   172,     0,     0,\r
-   173,     0,     5,     0,     6,     0,     3,     0,   173,   140,\r
-   173,   138,   173,     0,   173,   121,   173,     0,   173,   122,\r
-   173,     0,   173,   124,   173,     0,   173,   123,   173,     0,\r
-   173,   125,   173,     0,   173,   126,   173,     0,   173,    10,\r
-   173,     0,   173,    11,   173,     0,   127,   173,     0,   123,\r
-   173,     0,   125,   173,     0,   132,   210,   133,   173,     0,\r
-    98,   132,   210,   133,     0,   132,   173,   133,     0,   175,\r
-     0,   174,   119,   175,     0,   173,     0,    49,    32,   210,\r
-   183,     0,     0,   177,   178,     0,   179,   131,     0,   159,\r
-   212,   131,     0,   160,   131,     0,   131,     0,   159,   210,\r
-   206,   157,     0,   159,   210,   163,   206,   132,   153,   133,\r
-     0,     0,   183,     0,     0,     3,     0,     4,     0,     3,\r
-     0,     4,     0,    60,     0,    94,     0,   114,     0,    22,\r
-     0,   116,     0,   186,     0,    96,   186,     0,   110,   186,\r
+    94,     0,    97,   133,   172,   134,     0,   100,     0,   102,\r
+     0,   105,   133,   174,   134,     0,   106,   133,   211,   134,\r
+     0,   107,   133,   211,   134,     0,   112,   133,     8,   134,\r
+     0,   113,     0,   114,     0,   115,   133,   214,   134,     0,\r
+   118,   133,   211,   134,     0,   209,     0,     0,   101,     0,\r
+     0,   165,   166,     0,    26,   174,   139,   179,     0,    38,\r
+   139,   179,     0,    32,   211,   184,   140,   176,     0,     0,\r
+   169,   120,     0,   169,     0,   170,     0,   169,   120,   170,\r
+     0,   184,   140,   176,     0,   184,     0,    46,   183,   135,\r
+   168,   136,     0,   173,     0,   172,   120,   173,     0,     0,\r
+   174,     0,     5,     0,     6,     0,     3,     0,   174,   141,\r
+   174,   139,   174,     0,   174,   122,   174,     0,   174,   123,\r
+   174,     0,   174,   125,   174,     0,   174,   124,   174,     0,\r
+   174,   126,   174,     0,   174,   127,   174,     0,   174,    10,\r
+   174,     0,   174,    11,   174,     0,   128,   174,     0,   124,\r
+   174,     0,   126,   174,     0,   133,   211,   134,   174,     0,\r
+    98,   133,   211,   134,     0,   133,   174,   134,     0,   176,\r
+     0,   175,   120,   176,     0,   174,     0,    49,    32,   211,\r
+   184,     0,     0,   178,   179,     0,   180,   132,     0,   160,\r
+   213,   132,     0,   161,   132,     0,   132,     0,   160,   211,\r
+   207,   158,     0,   160,   211,   164,   207,   133,   154,   134,\r
+     0,     0,   184,     0,     0,     3,     0,     4,     0,     3,\r
+     0,     4,     0,    60,     0,    94,     0,   115,     0,    22,\r
+     0,   117,     0,   187,     0,    96,   187,     0,   111,   187,\r
      0,    50,     0,    42,     0,    20,     0,    47,     0,    52,\r
-     0,     0,    70,     0,    70,     0,    95,   185,     0,    76,\r
-   185,     0,    59,   185,     0,    71,     0,    28,     0,    29,\r
-     3,     0,    29,     4,     0,   160,   187,     0,   188,   134,\r
-   190,   135,     0,     0,   190,   191,     0,   159,   201,     0,\r
-    40,     3,     0,    40,     4,     0,   160,   192,     0,    86,\r
-   138,     0,   194,   179,   131,     0,    77,   138,     0,   195,\r
-   180,   131,     0,   193,   134,   194,   195,   135,     0,     0,\r
-   138,     4,     0,    72,     3,     0,    72,     4,     0,   160,\r
-   198,     0,   199,   197,   134,   145,   135,     0,   199,   138,\r
-     3,   134,   149,   145,   135,     0,   196,     0,   198,   131,\r
-     0,   192,   131,     0,    78,     3,     0,    78,     4,     0,\r
-   160,   202,     0,   203,   134,   145,   135,     0,   125,   206,\r
-     0,    32,   205,     0,   183,     0,   205,     0,   132,   206,\r
-   133,     0,   206,     0,   207,   119,   206,     0,    92,     0,\r
-   109,     0,   102,   182,   134,   177,   135,     0,   115,     0,\r
-     4,     0,   184,     0,    32,   210,     0,   170,     0,    46,\r
-     3,     0,   209,     0,   102,     3,     0,   212,     0,   108,\r
-     3,     0,   107,   159,   210,   207,     0,   108,   182,   134,\r
-   177,   135,     0,   108,   182,   103,   132,   179,   133,   181,\r
-   134,   164,   135,     0,     5,     0,     5,   141,     5,     0\r
+     0,     0,    70,     0,    70,     0,    99,   186,     0,    95,\r
+   186,     0,    76,   186,     0,    59,   186,     0,    71,     0,\r
+    28,     0,    29,     3,     0,    29,     4,     0,   161,   188,\r
+     0,   189,   135,   191,   136,     0,     0,   191,   192,     0,\r
+   160,   202,     0,    40,     3,     0,    40,     4,     0,   161,\r
+   193,     0,    86,   139,     0,   195,   180,   132,     0,    77,\r
+   139,     0,   196,   181,   132,     0,   194,   135,   195,   196,\r
+   136,     0,     0,   139,     4,     0,    72,     3,     0,    72,\r
+     4,     0,   161,   199,     0,   200,   198,   135,   146,   136,\r
+     0,   200,   139,     3,   135,   150,   146,   136,     0,   197,\r
+     0,   199,   132,     0,   193,   132,     0,    78,     3,     0,\r
+    78,     4,     0,   161,   203,     0,   204,   135,   146,   136,\r
+     0,   126,   207,     0,    32,   206,     0,   184,     0,   206,\r
+     0,   133,   207,   134,     0,   207,     0,   208,   120,   207,\r
+     0,    92,     0,   110,     0,   103,   183,   135,   178,   136,\r
+     0,   116,     0,     4,     0,   185,     0,    32,   211,     0,\r
+   171,     0,    46,     3,     0,   210,     0,   103,     3,     0,\r
+   213,     0,   109,     3,     0,   108,   160,   211,   208,     0,\r
+   109,   183,   135,   178,   136,     0,   109,   183,   104,   133,\r
+   180,   134,   182,   135,   165,   136,     0,     5,     0,     5,\r
+   142,     5,     0\r
 };\r
 \r
 #endif\r
 \r
 #if YYDEBUG != 0\r
 static const short yyrline[] = { 0,\r
-   228,   231,   232,   233,   234,   235,   236,   237,   240,   241,\r
-   242,   243,   244,   245,   248,   249,   250,   253,   254,   255,\r
-   256,   257,   258,   259,   260,   261,   264,   266,   269,   272,\r
-   274,   276,   279,   280,   283,   286,   287,   288,   292,   296,\r
-   299,   305,   312,   313,   314,   317,   318,   319,   322,   323,\r
-   326,   330,   331,   332,   335,   337,   338,   339,   340,   341,\r
-   342,   343,   344,   345,   346,   347,   348,   349,   350,   351,\r
-   352,   353,   354,   355,   356,   357,   358,   359,   360,   361,\r
-   362,   363,   364,   365,   366,   367,   368,   369,   370,   371,\r
-   372,   373,   374,   375,   376,   377,   378,   379,   380,   381,\r
-   382,   383,   384,   385,   386,   387,   388,   389,   390,   391,\r
-   392,   393,   396,   397,   400,   401,   406,   410,   416,   423,\r
-   424,   425,   428,   429,   435,   440,   446,   454,   455,   468,\r
-   469,   472,   473,   474,   475,   476,   477,   478,   479,   480,\r
-   481,   482,   483,   484,   485,   486,   487,   488,   489,   492,\r
-   493,   496,   502,   507,   508,   513,   514,   515,   516,   519,\r
-   522,   533,   534,   537,   538,   539,   542,   544,   545,   546,\r
-   547,   550,   551,   552,   553,   554,   566,   567,   568,   569,\r
-   570,   573,   574,   577,   578,   579,   580,   581,   582,   585,\r
-   586,   589,   595,   600,   601,   604,   608,   609,   612,   624,\r
-   625,   628,   629,   632,   647,   648,   651,   652,   655,   663,\r
-   671,   678,   681,   683,   686,   687,   690,   695,   701,   702,\r
-   705,   706,   707,   710,   712,   715,   717,   720,   730,   731,\r
-   732,   733,   734,   735,   736,   737,   738,   739,   742,   754,\r
-   758,   771,   773\r
+   229,   232,   233,   234,   235,   236,   237,   238,   241,   242,\r
+   243,   244,   245,   246,   249,   250,   251,   254,   255,   256,\r
+   257,   258,   259,   260,   261,   262,   265,   267,   270,   273,\r
+   275,   277,   280,   281,   284,   287,   288,   289,   293,   297,\r
+   300,   306,   313,   314,   315,   318,   319,   320,   323,   324,\r
+   327,   331,   332,   333,   336,   338,   339,   340,   341,   342,\r
+   343,   344,   345,   346,   347,   348,   349,   350,   351,   352,\r
+   353,   354,   355,   356,   357,   358,   359,   360,   361,   362,\r
+   363,   364,   365,   366,   367,   368,   369,   370,   371,   372,\r
+   373,   374,   375,   376,   377,   378,   379,   380,   381,   382,\r
+   383,   384,   385,   386,   387,   388,   389,   390,   391,   392,\r
+   393,   394,   397,   398,   401,   402,   407,   411,   417,   424,\r
+   425,   426,   429,   430,   436,   441,   447,   455,   456,   469,\r
+   470,   473,   474,   475,   476,   477,   478,   479,   480,   481,\r
+   482,   483,   484,   485,   486,   487,   488,   489,   490,   493,\r
+   494,   497,   503,   508,   509,   514,   515,   516,   517,   520,\r
+   523,   534,   535,   538,   539,   540,   543,   545,   546,   547,\r
+   548,   551,   552,   553,   554,   555,   567,   568,   569,   570,\r
+   571,   574,   575,   578,   579,   580,   581,   582,   583,   584,\r
+   587,   588,   591,   597,   602,   603,   606,   610,   611,   614,\r
+   626,   627,   630,   631,   634,   649,   650,   653,   654,   657,\r
+   665,   673,   680,   683,   685,   688,   689,   692,   697,   703,\r
+   704,   707,   708,   709,   712,   714,   717,   719,   722,   732,\r
+   733,   734,   735,   736,   737,   738,   739,   740,   741,   744,\r
+   756,   760,   773,   775\r
 };\r
 #endif\r
 \r
@@ -462,50 +464,50 @@ static const char * const yytname[] = {   "$","error","$undefined.","aIDENTIFIER
 "tLONG","tMETHODS","tMODULE","tNONCREATABLE","tOBJECT","tODL","tOLEAUTOMATION",\r
 "tOPTIONAL","tOUT","tPOINTERDEFAULT","tPROPERTIES","tPROPGET","tPROPPUT","tPROPPUTREF",\r
 "tPUBLIC","tREADONLY","tREF","tRESTRICTED","tRETVAL","tSHORT","tSIGNED","tSIZEIS",\r
-"tSIZEOF","tSOURCE","tSTDCALL","tSTRING","tSTRUCT","tSWITCH","tSWITCHIS","tSWITCHTYPE",\r
-"tTRANSMITAS","tTYPEDEF","tUNION","tUNIQUE","tUNSIGNED","tUUID","tV1ENUM","tVARARG",\r
-"tVERSION","tVOID","tWCHAR","tWIREMARSHAL","tPOINTERTYPE","','","COND","'|'",\r
-"'&'","'-'","'+'","'*'","'/'","'~'","CAST","PPTR","NEG","';'","'('","')'","'{'",\r
-"'}'","'['","']'","':'","'='","'?'","'.'","input","gbl_statements","imp_statements",\r
-"int_statements","statement","cppquote","import_start","import","libraryhdr",\r
-"library_start","librarydef","m_args","no_args","args","arg","array","array_list",\r
-"m_attributes","attributes","attrib_list","attribute","callconv","cases","case",\r
-"constdef","enums","enum_list","enum","enumdef","m_exprs","m_expr","expr","expr_list_const",\r
-"expr_const","externdef","fields","field","s_field","funcdef","m_ident","t_ident",\r
-"ident","base_type","m_int","int_std","coclass","coclasshdr","coclassdef","coclass_ints",\r
-"coclass_int","dispinterface","dispinterfacehdr","dispint_props","dispint_meths",\r
-"dispinterfacedef","inherit","interface","interfacehdr","interfacedef","interfacedec",\r
-"module","modulehdr","moduledef","p_ident","pident","pident_list","pointer_type",\r
-"structdef","type","typedef","uniondef","version", NULL\r
+"tSIZEOF","tSMALL","tSOURCE","tSTDCALL","tSTRING","tSTRUCT","tSWITCH","tSWITCHIS",\r
+"tSWITCHTYPE","tTRANSMITAS","tTYPEDEF","tUNION","tUNIQUE","tUNSIGNED","tUUID",\r
+"tV1ENUM","tVARARG","tVERSION","tVOID","tWCHAR","tWIREMARSHAL","tPOINTERTYPE",\r
+"','","COND","'|'","'&'","'-'","'+'","'*'","'/'","'~'","CAST","PPTR","NEG","';'",\r
+"'('","')'","'{'","'}'","'['","']'","':'","'='","'?'","'.'","input","gbl_statements",\r
+"imp_statements","int_statements","statement","cppquote","import_start","import",\r
+"libraryhdr","library_start","librarydef","m_args","no_args","args","arg","array",\r
+"array_list","m_attributes","attributes","attrib_list","attribute","callconv",\r
+"cases","case","constdef","enums","enum_list","enum","enumdef","m_exprs","m_expr",\r
+"expr","expr_list_const","expr_const","externdef","fields","field","s_field",\r
+"funcdef","m_ident","t_ident","ident","base_type","m_int","int_std","coclass",\r
+"coclasshdr","coclassdef","coclass_ints","coclass_int","dispinterface","dispinterfacehdr",\r
+"dispint_props","dispint_meths","dispinterfacedef","inherit","interface","interfacehdr",\r
+"interfacedef","interfacedec","module","modulehdr","moduledef","p_ident","pident",\r
+"pident_list","pointer_type","structdef","type","typedef","uniondef","version", NULL\r
 };\r
 #endif\r
 \r
 static const short yyr1[] = {     0,\r
-   142,   143,   143,   143,   143,   143,   143,   143,   144,   144,\r
-   144,   144,   144,   144,   145,   145,   145,   146,   146,   146,\r
-   146,   146,   146,   146,   146,   146,   147,   148,   149,   150,\r
-   151,   152,   153,   153,   154,   155,   155,   155,   156,   156,\r
-   156,   156,   157,   157,   157,   158,   158,   158,   159,   159,\r
-   160,   161,   161,   161,   162,   162,   162,   162,   162,   162,\r
-   162,   162,   162,   162,   162,   162,   162,   162,   162,   162,\r
-   162,   162,   162,   162,   162,   162,   162,   162,   162,   162,\r
-   162,   162,   162,   162,   162,   162,   162,   162,   162,   162,\r
-   162,   162,   162,   162,   162,   162,   162,   162,   162,   162,\r
-   162,   162,   162,   162,   162,   162,   162,   162,   162,   162,\r
-   162,   162,   163,   163,   164,   164,   165,   165,   166,   167,\r
-   167,   167,   168,   168,   169,   169,   170,   171,   171,   172,\r
-   172,   173,   173,   173,   173,   173,   173,   173,   173,   173,\r
-   173,   173,   173,   173,   173,   173,   173,   173,   173,   174,\r
-   174,   175,   176,   177,   177,   178,   178,   178,   178,   179,\r
-   180,   181,   181,   182,   182,   182,   183,   183,   183,   183,\r
-   183,   184,   184,   184,   184,   184,   184,   184,   184,   184,\r
-   184,   185,   185,   186,   186,   186,   186,   186,   186,   187,\r
-   187,   188,   189,   190,   190,   191,   192,   192,   193,   194,\r
-   194,   195,   195,   196,   197,   197,   198,   198,   199,   200,\r
-   200,   200,   201,   201,   202,   202,   203,   204,   205,   205,\r
-   206,   206,   206,   207,   207,   208,   208,   209,   210,   210,\r
-   210,   210,   210,   210,   210,   210,   210,   210,   211,   212,\r
-   212,   213,   213\r
+   143,   144,   144,   144,   144,   144,   144,   144,   145,   145,\r
+   145,   145,   145,   145,   146,   146,   146,   147,   147,   147,\r
+   147,   147,   147,   147,   147,   147,   148,   149,   150,   151,\r
+   152,   153,   154,   154,   155,   156,   156,   156,   157,   157,\r
+   157,   157,   158,   158,   158,   159,   159,   159,   160,   160,\r
+   161,   162,   162,   162,   163,   163,   163,   163,   163,   163,\r
+   163,   163,   163,   163,   163,   163,   163,   163,   163,   163,\r
+   163,   163,   163,   163,   163,   163,   163,   163,   163,   163,\r
+   163,   163,   163,   163,   163,   163,   163,   163,   163,   163,\r
+   163,   163,   163,   163,   163,   163,   163,   163,   163,   163,\r
+   163,   163,   163,   163,   163,   163,   163,   163,   163,   163,\r
+   163,   163,   164,   164,   165,   165,   166,   166,   167,   168,\r
+   168,   168,   169,   169,   170,   170,   171,   172,   172,   173,\r
+   173,   174,   174,   174,   174,   174,   174,   174,   174,   174,\r
+   174,   174,   174,   174,   174,   174,   174,   174,   174,   175,\r
+   175,   176,   177,   178,   178,   179,   179,   179,   179,   180,\r
+   181,   182,   182,   183,   183,   183,   184,   184,   184,   184,\r
+   184,   185,   185,   185,   185,   185,   185,   185,   185,   185,\r
+   185,   186,   186,   187,   187,   187,   187,   187,   187,   187,\r
+   188,   188,   189,   190,   191,   191,   192,   193,   193,   194,\r
+   195,   195,   196,   196,   197,   198,   198,   199,   199,   200,\r
+   201,   201,   201,   202,   202,   203,   203,   204,   205,   206,\r
+   206,   207,   207,   207,   208,   208,   209,   209,   210,   211,\r
+   211,   211,   211,   211,   211,   211,   211,   211,   211,   212,\r
+   213,   213,   214,   214\r
 };\r
 \r
 static const short yyr2[] = {     0,\r
@@ -527,325 +529,325 @@ static const short yyr2[] = {     0,
      3,     1,     4,     0,     2,     2,     3,     2,     1,     4,\r
      7,     0,     1,     0,     1,     1,     1,     1,     1,     1,\r
      1,     1,     1,     1,     2,     2,     1,     1,     1,     1,\r
-     1,     0,     1,     1,     2,     2,     2,     1,     1,     2,\r
-     2,     2,     4,     0,     2,     2,     2,     2,     2,     2,\r
-     3,     2,     3,     5,     0,     2,     2,     2,     2,     5,\r
-     7,     1,     2,     2,     2,     2,     2,     4,     2,     2,\r
-     1,     1,     3,     1,     3,     1,     1,     5,     1,     1,\r
-     1,     2,     1,     2,     1,     2,     1,     2,     4,     5,\r
-    10,     1,     3\r
+     1,     0,     1,     1,     2,     2,     2,     2,     1,     1,\r
+     2,     2,     2,     4,     0,     2,     2,     2,     2,     2,\r
+     2,     3,     2,     3,     5,     0,     2,     2,     2,     2,\r
+     5,     7,     1,     2,     2,     2,     2,     2,     4,     2,\r
+     2,     1,     1,     3,     1,     3,     1,     1,     5,     1,\r
+     1,     1,     2,     1,     2,     1,     2,     1,     2,     4,\r
+     5,    10,     1,     3\r
 };\r
 \r
 static const short yydefact[] = {     2,\r
      1,     0,     0,     0,   164,     0,     0,     0,   164,    49,\r
    164,    18,     0,     8,    20,     9,    23,     9,     7,     0,\r
-     0,     0,     0,     0,     5,     0,     0,   212,     0,   205,\r
-     4,     3,     0,     6,     0,     0,     0,   230,   179,   172,\r
-   189,     0,   178,   164,   180,   177,   181,   182,   184,   188,\r
-   182,   182,     0,   164,   164,     0,   229,   173,   233,   231,\r
-   174,   235,     0,   237,     0,   197,   198,   165,   166,     0,\r
-     0,     0,   207,   208,     0,     0,    50,     0,    55,    56,\r
-     0,     0,    59,    60,    61,    62,    63,     0,     0,    67,\r
-     0,     0,    71,    72,     0,     0,     0,     0,     0,    78,\r
-     0,    80,     0,     0,    83,    84,     0,    86,    87,    88,\r
-    89,    90,    91,    92,     0,    94,    95,    96,    97,    98,\r
-   226,    99,   100,     0,   102,   103,     0,     0,     0,   227,\r
-     0,   108,   109,     0,     0,     0,    52,   112,     0,     0,\r
-     0,     0,     0,     0,   192,   199,   209,   217,    19,    21,\r
-    22,   194,   214,     0,   213,     0,     0,    15,    24,    25,\r
-    26,   232,   234,   183,   187,   186,   185,   175,   236,   238,\r
-   176,   167,   168,   169,   170,   171,     0,     0,   120,     0,\r
-    28,   154,     0,     0,   154,     0,     0,     0,     0,     0,\r
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   130,\r
-     0,   130,     0,     0,     0,     0,     0,     0,     0,    51,\r
-    29,    14,     0,    12,    11,    10,    13,    32,   190,   191,\r
-    30,   215,   216,    31,    49,     0,    49,     0,   206,    15,\r
-    49,     0,    27,     0,   122,   123,   126,   153,    49,     0,\r
-     0,     0,   221,   222,   224,   239,    49,    49,     0,   134,\r
-   132,   133,     0,     0,     0,     0,     0,   152,     0,   150,\r
+     0,     0,     0,     0,     5,     0,     0,   213,     0,   206,\r
+     4,     3,     0,     6,     0,     0,     0,   231,   179,   172,\r
+   190,     0,   178,   164,   180,   177,   181,   182,   184,   189,\r
+   182,   182,     0,   182,   164,   164,     0,   230,   173,   234,\r
+   232,   174,   236,     0,   238,     0,   198,   199,   165,   166,\r
+     0,     0,     0,   208,   209,     0,     0,    50,     0,    55,\r
+    56,     0,     0,    59,    60,    61,    62,    63,     0,     0,\r
+    67,     0,     0,    71,    72,     0,     0,     0,     0,     0,\r
+    78,     0,    80,     0,     0,    83,    84,     0,    86,    87,\r
+    88,    89,    90,    91,    92,     0,    94,    95,    96,    97,\r
+    98,   227,    99,   100,     0,   102,   103,     0,     0,     0,\r
+   228,     0,   108,   109,     0,     0,     0,    52,   112,     0,\r
+     0,     0,     0,     0,     0,   193,   200,   210,   218,    19,\r
+    21,    22,   195,   215,     0,   214,     0,     0,    15,    24,\r
+    25,    26,   233,   235,   183,   188,   187,   186,   175,   185,\r
+   237,   239,   176,   167,   168,   169,   170,   171,     0,     0,\r
+   120,     0,    28,   154,     0,     0,   154,     0,     0,     0,\r
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,\r
-     0,     0,     0,     0,     0,   128,   131,     0,     0,     0,\r
-     0,     0,     0,   242,     0,     0,    53,     0,   193,     0,\r
-   195,   200,     0,     0,     0,    49,     0,    49,   218,    17,\r
-     0,     0,   119,   127,   121,     0,   159,   228,     0,    50,\r
-   155,     0,   220,   219,     0,     0,     0,   240,    57,     0,\r
-   145,   146,   144,     0,     0,     0,     0,     0,     0,     0,\r
-     0,     0,     0,     0,     0,    58,    65,    64,    66,    68,\r
-    69,    70,    73,    74,    75,    76,    77,    79,    81,     0,\r
-   130,    85,    93,   101,   104,   105,   106,   107,     0,   110,\r
-   111,    54,   196,   202,     0,   201,   204,     0,    15,   210,\r
-   113,    16,   124,   125,   237,   158,   156,   223,   225,   162,\r
-     0,   149,     0,   142,   143,   136,   137,   139,   138,   140,\r
-   141,     0,   151,    82,   129,   243,    43,   203,    49,   114,\r
-     0,   157,     0,   163,   148,   147,     0,   130,   160,   211,\r
-     0,   115,   135,     0,     0,    46,    33,     0,    45,     0,\r
-    44,   229,     0,    38,    34,    36,     0,     0,     0,     0,\r
-   241,   116,    47,     0,   161,     0,     0,    43,     0,    49,\r
-    48,    37,    43,    33,    40,    49,   118,    33,    39,     0,\r
-   117,     0,    42,    41,     0,     0,     0\r
+     0,   130,     0,   130,     0,     0,     0,     0,     0,     0,\r
+     0,    51,    29,    14,     0,    12,    11,    10,    13,    32,\r
+   191,   192,    30,   216,   217,    31,    49,     0,    49,     0,\r
+   207,    15,    49,     0,    27,     0,   122,   123,   126,   153,\r
+    49,     0,     0,     0,   222,   223,   225,   240,    49,    49,\r
+     0,   134,   132,   133,     0,     0,     0,     0,     0,   152,\r
+     0,   150,     0,     0,     0,     0,     0,     0,     0,     0,\r
+     0,     0,     0,     0,     0,     0,     0,   128,   131,     0,\r
+     0,     0,     0,     0,     0,   243,     0,     0,    53,     0,\r
+   194,     0,   196,   201,     0,     0,     0,    49,     0,    49,\r
+   219,    17,     0,     0,   119,   127,   121,     0,   159,   229,\r
+     0,    50,   155,     0,   221,   220,     0,     0,     0,   241,\r
+    57,     0,   145,   146,   144,     0,     0,     0,     0,     0,\r
+     0,     0,     0,     0,     0,     0,     0,    58,    65,    64,\r
+    66,    68,    69,    70,    73,    74,    75,    76,    77,    79,\r
+    81,     0,   130,    85,    93,   101,   104,   105,   106,   107,\r
+     0,   110,   111,    54,   197,   203,     0,   202,   205,     0,\r
+    15,   211,   113,    16,   124,   125,   238,   158,   156,   224,\r
+   226,   162,     0,   149,     0,   142,   143,   136,   137,   139,\r
+   138,   140,   141,     0,   151,    82,   129,   244,    43,   204,\r
+    49,   114,     0,   157,     0,   163,   148,   147,     0,   130,\r
+   160,   212,     0,   115,   135,     0,     0,    46,    33,     0,\r
+    45,     0,    44,   230,     0,    38,    34,    36,     0,     0,\r
+     0,     0,   242,   116,    47,     0,   161,     0,     0,    43,\r
+     0,    49,    48,    37,    43,    33,    40,    49,   118,    33,\r
+    39,     0,   117,     0,    42,    41,     0,     0,     0\r
 };\r
 \r
-static const short yydefgoto[] = {   455,\r
-     1,   139,   231,   300,    15,    16,    17,   144,    18,    19,\r
-   423,   424,   425,   426,   409,   415,   301,    77,   136,   137,\r
-   401,   418,   432,    21,   234,   235,   236,    59,   275,   276,\r
-   258,   259,   260,    23,   239,   311,   312,   302,   403,    70,\r
-   243,    60,   165,    61,   145,    24,   214,   225,   291,    26,\r
-    27,   227,   296,    28,   157,    29,    30,   215,   216,   148,\r
-    33,   217,   244,   245,   246,   138,    62,   428,    36,    64,\r
-   285\r
+static const short yydefgoto[] = {   457,\r
+     1,   140,   233,   302,    15,    16,    17,   145,    18,    19,\r
+   425,   426,   427,   428,   411,   417,   303,    78,   137,   138,\r
+   403,   420,   434,    21,   236,   237,   238,    60,   277,   278,\r
+   260,   261,   262,    23,   241,   313,   314,   304,   405,    71,\r
+   245,    61,   166,    62,   146,    24,   216,   227,   293,    26,\r
+    27,   229,   298,    28,   158,    29,    30,   217,   218,   149,\r
+    33,   219,   246,   247,   248,   139,    63,   430,    36,    65,\r
+   287\r
 };\r
 \r
 static const short yypact[] = {-32768,\r
-   634,   592,   -72,    85,   119,    88,   130,   176,   119,    12,\r
-   119,-32768,   788,-32768,-32768,-32768,-32768,-32768,-32768,   239,\r
-    42,    73,    76,    63,-32768,    82,    84,-32768,    93,    92,\r
--32768,-32768,   112,-32768,    95,   118,   134,-32768,-32768,-32768,\r
--32768,   592,-32768,   186,-32768,-32768,-32768,   189,-32768,-32768,\r
-   189,   189,     8,   208,   212,     8,-32768,-32768,-32768,-32768,\r
--32768,-32768,    16,-32768,   139,-32768,-32768,-32768,-32768,   133,\r
-   592,   138,-32768,-32768,   147,   592,-32768,   -61,-32768,-32768,\r
-   150,   151,-32768,-32768,-32768,-32768,-32768,   152,   164,-32768,\r
-   165,   173,-32768,-32768,   174,   177,   183,   184,   187,-32768,\r
-   190,-32768,   193,   194,-32768,-32768,   195,-32768,-32768,-32768,\r
--32768,-32768,-32768,-32768,   197,-32768,-32768,-32768,-32768,-32768,\r
--32768,-32768,-32768,   199,-32768,-32768,   200,   201,   202,-32768,\r
-   203,-32768,-32768,   205,   209,   -78,-32768,-32768,   546,   603,\r
-   218,   337,   249,   214,-32768,-32768,-32768,-32768,-32768,-32768,\r
--32768,-32768,-32768,   260,-32768,   258,   216,-32768,-32768,-32768,\r
--32768,-32768,   217,-32768,-32768,-32768,-32768,-32768,   217,   -47,\r
--32768,-32768,-32768,-32768,-32768,-32768,   213,   220,    16,    16,\r
--32768,-32768,   282,   223,-32768,    16,   110,   222,   349,   351,\r
-   414,   110,   352,   355,   110,   356,   110,    16,   320,   110,\r
-   -35,   110,   110,   592,   592,   366,   373,   592,   788,   243,\r
--32768,-32768,   299,-32768,-32768,-32768,-32768,-32768,-32768,-32768,\r
--32768,-32768,-32768,-32768,   -87,   242,   -54,   252,-32768,-32768,\r
-    -2,   110,-32768,   248,   274,-32768,   255,-32768,   -24,   -11,\r
-   282,   282,-32768,-32768,-32768,   278,    12,   -10,   265,-32768,\r
--32768,-32768,   269,   110,   110,   110,   474,   266,   -95,-32768,\r
-   275,   277,   280,   285,   289,   292,   293,   294,   297,   298,\r
-   300,   307,   308,   408,   -58,-32768,   266,   309,   -48,    70,\r
-   311,   313,   317,   310,   319,   321,-32768,   788,-32768,    -6,\r
--32768,-32768,   315,   592,   284,   128,   392,   667,-32768,-32768,\r
-   592,   326,-32768,-32768,    16,   110,-32768,-32768,   592,   327,\r
--32768,   328,-32768,-32768,   329,   282,   331,-32768,-32768,   592,\r
-   325,   325,   325,   167,   333,   110,   110,   110,   110,   110,\r
-   110,   110,   110,   110,   110,-32768,-32768,-32768,-32768,-32768,\r
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   334,\r
-   110,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   455,-32768,\r
--32768,-32768,-32768,-32768,   282,-32768,-32768,   339,-32768,-32768,\r
-   381,-32768,-32768,-32768,   354,-32768,-32768,-32768,-32768,    16,\r
-   358,-32768,   110,   325,   325,    35,    59,    15,    15,    22,\r
-    22,   244,-32768,-32768,-32768,-32768,   346,-32768,   680,-32768,\r
-   282,-32768,   359,-32768,-32768,   325,   110,   431,-32768,-32768,\r
-   360,-32768,   266,    49,   -69,-32768,   228,   -16,-32768,   110,\r
-   347,   -36,   362,-32768,   365,-32768,   592,   282,   110,   348,\r
--32768,-32768,   266,   110,-32768,   353,   282,    -4,   350,   -41,\r
-   266,-32768,    66,   228,-32768,   -41,-32768,   228,-32768,   364,\r
--32768,   367,-32768,-32768,   487,   498,-32768\r
+   609,   598,   -98,   138,   144,    22,    30,   172,   144,   -61,\r
+   144,-32768,   791,-32768,-32768,-32768,-32768,-32768,-32768,    35,\r
+   -49,   -42,   -32,   -14,-32768,   -24,    -5,-32768,    32,    -3,\r
+-32768,-32768,    44,-32768,    49,    59,    68,-32768,-32768,-32768,\r
+-32768,   598,-32768,   185,-32768,-32768,-32768,    63,-32768,-32768,\r
+    63,    63,    27,    63,   220,   260,    27,-32768,-32768,-32768,\r
+-32768,-32768,-32768,    17,-32768,   176,-32768,-32768,-32768,-32768,\r
+    69,   598,    74,-32768,-32768,    85,   598,-32768,   -73,-32768,\r
+-32768,    53,    76,-32768,-32768,-32768,-32768,-32768,   102,   106,\r
+-32768,   115,   118,-32768,-32768,   121,   124,   134,   136,   148,\r
+-32768,   157,-32768,   158,   159,-32768,-32768,   160,-32768,-32768,\r
+-32768,-32768,-32768,-32768,-32768,   161,-32768,-32768,-32768,-32768,\r
+-32768,-32768,-32768,-32768,   162,-32768,-32768,   165,   169,   178,\r
+-32768,   180,-32768,-32768,   182,   183,   -87,-32768,-32768,   505,\r
+   587,   271,   234,   275,   174,-32768,-32768,-32768,-32768,-32768,\r
+-32768,-32768,-32768,-32768,   231,-32768,   280,   186,-32768,-32768,\r
+-32768,-32768,-32768,   187,-32768,-32768,-32768,-32768,-32768,-32768,\r
+   187,   -72,-32768,-32768,-32768,-32768,-32768,-32768,   184,   194,\r
+    17,    17,-32768,-32768,   267,   197,-32768,    17,   389,   329,\r
+   311,   313,   337,   389,   324,   330,   389,   331,   389,    17,\r
+   293,   389,   -58,   389,   389,   598,   598,   340,   344,   598,\r
+   791,   213,-32768,-32768,    51,-32768,-32768,-32768,-32768,-32768,\r
+-32768,-32768,-32768,-32768,-32768,-32768,   149,   212,   -50,   217,\r
+-32768,-32768,   634,   389,-32768,   218,   233,-32768,   215,-32768,\r
+   -20,    -6,   267,   267,-32768,-32768,-32768,   236,   -61,   129,\r
+   223,-32768,-32768,-32768,   225,   389,   389,   389,   477,   104,\r
+   -90,-32768,   226,   232,   239,   240,   242,   244,   246,   247,\r
+   250,   251,   254,   255,   256,   361,   -64,-32768,   104,   257,\r
+   -62,    71,   262,   264,   265,   237,   269,   274,-32768,   791,\r
+-32768,   -11,-32768,-32768,   270,   598,   278,   151,   301,   676,\r
+-32768,-32768,   598,   281,-32768,-32768,    17,   389,-32768,-32768,\r
+   598,   283,-32768,   284,-32768,-32768,   294,   267,   295,-32768,\r
+-32768,   598,   276,   276,   276,    91,   298,   389,   389,   389,\r
+   389,   389,   389,   389,   389,   389,   389,-32768,-32768,-32768,\r
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,\r
+-32768,   299,   389,-32768,-32768,-32768,-32768,-32768,-32768,-32768,\r
+   407,-32768,-32768,-32768,-32768,-32768,   267,-32768,-32768,   307,\r
+-32768,-32768,   341,-32768,-32768,-32768,   312,-32768,-32768,-32768,\r
+-32768,    17,   309,-32768,   389,   276,   276,   245,    36,    58,\r
+    58,    12,    12,   297,-32768,-32768,-32768,-32768,   315,-32768,\r
+   684,-32768,   267,-32768,   321,-32768,-32768,   276,   389,   483,\r
+-32768,-32768,   326,-32768,   104,    54,   -71,-32768,   230,    -2,\r
+-32768,   389,   323,   -55,   314,-32768,   347,-32768,   598,   267,\r
+   389,   334,-32768,-32768,   104,   389,-32768,   355,   267,   -45,\r
+   352,   -66,   104,-32768,   -27,   230,-32768,   -66,-32768,   230,\r
+-32768,   335,-32768,   350,-32768,-32768,   446,   468,-32768\r
 };\r
 \r
 static const short yypgoto[] = {-32768,\r
--32768,   481,  -215,    13,-32768,-32768,   204,-32768,-32768,-32768,\r
-  -313,-32768,-32768,    67,  -339,-32768,    -8,    -1,-32768,  -192,\r
--32768,-32768,-32768,-32768,-32768,-32768,   206,     5,   302,  -322,\r
-  -163,-32768,  -179,-32768,   322,  -382,  -196,   219,-32768,    54,\r
-   -62,-32768,   221,    45,-32768,-32768,   504,-32768,-32768,   -13,\r
--32768,-32768,-32768,-32768,-32768,   -12,-32768,   507,     4,-32768,\r
--32768,   508,   270,  -214,-32768,   312,    10,     1,-32768,     3,\r
+-32768,   467,  -222,    18,-32768,-32768,   191,-32768,-32768,-32768,\r
+  -322,-32768,-32768,    56,  -395,-32768,    -8,    -1,-32768,  -186,\r
+-32768,-32768,-32768,-32768,-32768,-32768,   188,     5,   292,  -336,\r
+  -163,-32768,  -181,-32768,   316,  -343,  -201,   200,-32768,    29,\r
+   -63,-32768,   103,    78,-32768,-32768,   499,-32768,-32768,   -13,\r
+-32768,-32768,-32768,-32768,-32768,   -12,-32768,   500,     4,-32768,\r
+-32768,   501,   266,  -229,-32768,   303,    10,     1,-32768,     3,\r
 -32768\r
 };\r
 \r
 \r
-#define        YYLAST          905\r
+#define        YYLAST          909\r
 \r
 \r
 static const short yytable[] = {    20,\r
-   177,    76,    63,    37,    32,    22,   146,   147,   262,   429,\r
-    35,   266,   267,    14,   298,   270,   287,   272,   172,   173,\r
-   240,   430,   293,   335,   326,   327,   314,   315,   395,     2,\r
-   295,   326,   327,     4,     3,    41,   277,   336,   277,   280,\r
-   209,   184,   162,     5,   326,   327,     6,   289,    13,   420,\r
-   317,   250,   303,   251,   252,  -165,   121,   447,   210,    65,\r
-   351,     7,    75,   451,    78,     8,    48,   421,   326,   327,\r
-   351,   180,   185,   130,   352,   174,   183,    49,    50,   326,\r
-   327,    13,   -35,    51,   354,   416,  -165,    66,    67,   307,\r
-   321,   322,   323,   324,    13,   362,   -35,   168,   445,     9,\r
-   171,   379,    52,   449,    10,    11,   307,    75,    78,   175,\r
-   308,    13,   250,   241,   251,   252,   237,   238,   431,    71,\r
-   307,    68,    69,   249,   318,    13,   374,   444,    12,   176,\r
-   450,   408,   299,    13,   452,   273,    72,   213,   213,   332,\r
-   333,    37,    37,    22,    22,   178,   253,    13,    35,    35,\r
-   397,   212,   212,   399,   334,   393,   329,   330,   331,   332,\r
-   333,   334,   384,   385,   386,   387,   388,   389,   390,   391,\r
-   392,   254,   149,   255,   334,   256,   326,   327,    73,    74,\r
-   257,   330,   331,   332,   333,   419,   411,   277,   163,    69,\r
-   328,   329,   330,   331,   332,   333,   152,   448,   334,   146,\r
-   147,   408,   355,   150,   281,   282,   151,   253,   286,   334,\r
-   169,    69,   153,   438,   170,    69,   290,   154,   294,   406,\r
-   219,   220,   443,   155,   250,   159,   251,   252,   261,   156,\r
-   309,    38,   254,    37,   255,    22,   256,   310,   294,   309,\r
-    35,   257,   237,   413,   277,   158,   310,    39,   160,    40,\r
-   322,   222,   223,   326,   327,    41,   433,   325,   164,    42,\r
-   228,   229,   367,    13,   161,   439,   179,   141,   181,    43,\r
-   441,   166,   167,    44,    45,   326,   327,    46,     4,    47,\r
-   182,   186,   187,   188,   172,   173,    48,   328,   329,   330,\r
-   331,   332,   333,   363,   365,   189,   190,    49,    50,   382,\r
-    37,   371,    22,    51,   191,   192,   334,    35,   193,   365,\r
-     8,   375,   142,   240,   194,   195,   143,   404,   196,   253,\r
-   381,   197,    52,    53,   198,   199,   200,   141,   201,    54,\r
-   202,   203,   204,   205,   206,    55,   207,    56,     4,   221,\r
-   208,   174,   422,    58,   254,   226,   255,   224,   256,   230,\r
-  -165,   232,   233,   257,   247,   263,    38,   264,   268,   326,\r
-   327,   269,   271,    13,   328,   329,   330,   331,   332,   333,\r
-     8,   274,    39,   283,    40,   175,   143,   284,   288,   292,\r
-    41,   407,   304,   334,    42,   297,   328,   329,   330,   331,\r
-   332,   333,   305,   306,    43,   176,   316,   319,    44,    45,\r
-   320,    37,    46,    22,    47,   334,   241,   337,    35,   338,\r
-   350,    48,   339,   242,   366,   427,   250,   340,   251,   252,\r
-   265,   341,    49,    50,   342,   343,   344,   437,    51,   345,\r
-   346,   309,   347,   250,   427,   251,   252,   309,   310,   348,\r
-   349,   353,   427,   356,   310,   357,   427,    52,    53,   358,\r
-   359,   360,   364,   361,    54,     7,   372,   376,   377,   396,\r
-    55,   378,    56,   380,   334,   383,   394,    57,    58,   398,\r
-   328,   329,   330,   331,   332,   333,   250,    38,   251,   252,\r
-   400,   408,   434,   436,   402,   440,   456,   446,    13,   334,\r
-   405,   417,   412,    39,   435,    40,   453,   457,   140,   454,\r
-   369,    41,   442,   279,    25,    42,   248,    31,    34,   313,\r
-   373,   253,   278,     0,   368,    43,     0,     0,     0,    44,\r
-    45,     0,     0,    46,     0,    47,     0,     0,   253,     0,\r
-     0,     0,    48,     0,     0,     0,   254,     0,   255,     0,\r
-   256,     0,     0,    49,    50,   257,     0,     0,     0,    51,\r
-     0,     0,     0,   254,   211,   414,     0,   256,     0,     0,\r
-     0,     0,   257,     0,     0,     0,     0,     0,    52,    53,\r
-     0,   253,     0,     0,     0,    54,     0,     2,     0,     0,\r
-     0,    55,     3,    56,     0,     4,     0,     0,    57,    58,\r
-     0,     5,     0,     0,     6,    38,   254,     0,   255,     0,\r
-   256,     0,     0,     0,     0,   257,     0,     0,     0,     7,\r
-     0,    39,     0,    40,     0,     0,     0,     8,     0,    41,\r
-     0,     0,     0,    42,     0,     0,     0,     0,     0,     0,\r
-     0,     0,     0,    43,     2,     0,     0,    44,    45,     3,\r
-     0,    46,     4,    47,     0,     0,     0,     9,     5,     0,\r
-    48,     6,    10,    11,     0,     0,     0,     0,     0,     0,\r
-     0,    49,    50,     0,     0,     2,     7,    51,     0,     0,\r
-     3,     0,     0,     4,     8,     0,    12,     0,     0,     5,\r
-     0,    13,     6,     0,     0,     0,    52,    53,     0,     0,\r
-     0,     0,     0,    54,     0,     0,     0,     7,     2,    55,\r
-     0,    56,     0,     3,     9,     8,    57,    58,     0,    10,\r
-    11,     2,     5,     0,     0,     6,     3,     0,     0,     0,\r
-     0,     0,     0,     0,     0,     5,     0,     0,     6,     0,\r
-     7,     0,     0,    12,     0,     9,     0,   218,    13,     0,\r
-    10,    11,     0,     7,     0,     0,     0,     0,     0,     0,\r
+   179,    77,    64,    37,    32,    22,   147,   148,   264,   300,\r
+    35,   268,   269,   316,   317,   272,   397,   274,    14,   174,\r
+   175,   328,   329,   431,   289,   242,   295,   297,     4,   337,\r
+   186,  -165,   211,   122,    66,   432,    73,    76,   279,    79,\r
+   279,   282,   163,   338,   447,   328,   329,   319,   422,   451,\r
+   212,   131,   305,    72,    41,   353,   252,   353,   253,   254,\r
+     8,   187,  -165,   142,   -35,   309,   423,   328,   329,   354,\r
+    13,   356,   182,   418,     4,    13,   176,   185,   -35,   142,\r
+   328,   329,   150,    76,    79,    48,    13,   446,   381,   151,\r
+     4,   410,   323,   324,   325,   326,    49,    50,   449,   152,\r
+   328,   329,    51,   364,   453,   450,     8,   154,   143,   410,\r
+   177,   309,   144,   328,   329,   310,    13,   239,   240,   243,\r
+   153,    52,     8,   452,   251,    54,   376,   454,   144,   155,\r
+   169,   178,   165,   433,   173,   157,   275,   399,   215,   215,\r
+    67,    68,    37,    37,    22,    22,    69,    70,   401,    35,\r
+    35,   255,   336,   167,   168,   395,   170,   214,   214,   332,\r
+   333,   334,   335,   156,   386,   387,   388,   389,   390,   391,\r
+   392,   393,   394,   413,    74,    75,   336,   256,   159,   257,\r
+   160,   258,   180,   334,   335,   188,   259,   164,    70,   279,\r
+   161,   421,   330,   331,   332,   333,   334,   335,   336,   162,\r
+   440,   147,   148,   181,   357,   183,   283,   284,   189,   445,\r
+   288,   336,   330,   331,   332,   333,   334,   335,   292,   184,\r
+   296,   408,   171,    70,   384,   330,   331,   332,   333,   334,\r
+   335,   336,   311,    38,   190,    37,   223,    22,   191,   312,\r
+   296,   311,    35,   239,   336,   415,   279,   192,   312,    39,\r
+   193,    40,   324,   194,   328,   329,   195,    41,   435,   327,\r
+   309,    42,   172,    70,   320,    13,   196,   441,   197,   174,\r
+   175,    43,   443,   221,   222,    44,    45,   224,   225,    46,\r
+   198,    47,   230,   231,   291,    13,   369,    13,    48,   199,\r
+   200,   201,   202,   203,   204,   365,   367,   205,   242,    49,\r
+    50,   206,    37,   373,    22,    51,   328,   329,   226,    35,\r
+   207,   367,   208,   377,   209,   210,   228,   265,   406,   266,\r
+   232,  -165,   383,   234,    52,    53,   176,   235,    54,   249,\r
+   270,   252,    55,   253,   254,   263,   271,   273,    56,   252,\r
+    57,   253,   254,   267,   276,   424,    59,   285,   286,   290,\r
+   294,   299,   307,   306,   308,   318,   321,   322,    38,   339,\r
+   177,   328,   329,   352,     7,   340,    13,   331,   332,   333,\r
+   334,   335,   341,   342,    39,   343,    40,   344,   361,   345,\r
+   346,   178,    41,   347,   348,   336,    42,   349,   350,   351,\r
+   355,   252,   243,   253,   254,   358,    43,   359,   360,   244,\r
+    44,    45,   362,    37,    46,    22,    47,   363,   366,   368,\r
+    35,   398,   374,    48,   378,   379,   336,   429,   330,   331,\r
+   332,   333,   334,   335,    49,    50,   255,   380,   382,   439,\r
+    51,   385,   396,   311,   255,   409,   429,   336,   400,   311,\r
+   312,   402,   407,   404,   429,   458,   312,   437,   429,    52,\r
+    53,   410,   256,    54,   257,   414,   258,    55,   419,   436,\r
+   256,   259,   257,    56,   258,    57,   438,   459,   455,   259,\r
+    58,    59,   442,   330,   331,   332,   333,   334,   335,   252,\r
+    38,   253,   254,   456,   141,   252,   255,   253,   254,   371,\r
+   448,    13,   336,   444,   375,   281,    39,   370,    40,    25,\r
+    31,    34,   250,     0,    41,   280,     0,   315,    42,     0,\r
+     0,     0,   256,   213,   257,     0,   258,     0,    43,     0,\r
+     0,   259,    44,    45,     0,     0,    46,     0,    47,     0,\r
+     0,     0,     0,     0,     0,    48,     2,     0,     0,     0,\r
+     0,     3,     0,     0,     4,     0,    49,    50,     0,     0,\r
+     5,     0,    51,     6,     0,     0,     0,     0,     0,     0,\r
+     0,     0,     0,     0,     0,     0,     0,     0,     7,     0,\r
+     0,    52,    53,     0,   255,    54,     8,     0,     0,    55,\r
+   255,     0,     0,     0,     0,    56,     0,    57,     0,     0,\r
+     0,     0,    58,    59,     0,     0,     0,     0,     0,     0,\r
+   256,    38,   257,     0,   258,     0,   256,     9,   416,   259,\r
+   258,     0,    10,    11,     0,   259,     0,    39,     2,    40,\r
+     0,     0,     0,     3,     0,    41,     4,     0,     0,    42,\r
+     0,     0,     5,     0,     0,     6,    12,     0,     0,    43,\r
+     2,    13,     0,    44,    45,     3,     0,    46,     4,    47,\r
+     7,     0,     0,     0,     5,     0,    48,     6,     8,     0,\r
+     0,     0,     0,     0,     0,     2,     0,    49,    50,     0,\r
+     3,     0,     7,    51,     0,     0,     0,     0,     0,     5,\r
+     8,     0,     6,     0,     0,     0,     0,     0,     0,     9,\r
+     0,     0,    52,    53,    10,    11,    54,     7,     0,     0,\r
+    55,     0,     0,     0,     0,     0,    56,     2,    57,     0,\r
+     0,     9,     3,    58,    59,     2,    10,    11,    12,     0,\r
+     3,     5,   220,    13,     6,     0,     0,     0,     0,     5,\r
+     0,     0,     6,     0,     0,     0,     9,     0,     0,     7,\r
+    12,    10,    11,     0,     0,    13,     0,     7,     0,     0,\r
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,\r
-     0,     0,     0,     0,    12,     0,     0,     0,     9,    13,\r
-     0,     0,     0,    10,    11,     0,     0,     0,     0,     0,\r
-     0,     9,     0,     0,     0,     0,    10,    11,     0,     0,\r
-     0,     0,     0,     0,     0,     0,     0,    12,     0,     0,\r
-     0,   370,    13,    79,     0,    80,     0,     0,     0,     0,\r
-    12,    81,     0,    82,   410,    13,     0,     0,     0,     0,\r
-    83,    84,    85,    86,     0,    87,    88,     0,    89,     0,\r
-    90,    91,    92,     0,     0,    93,     0,     0,    94,     0,\r
-    95,    96,    97,    98,    99,   100,     0,   101,   102,   103,\r
-   104,     0,     0,   105,     0,     0,   106,     0,     0,     0,\r
-   107,     0,   108,     0,     0,     0,   109,   110,   111,   112,\r
-   113,   114,   115,     0,   116,   117,   118,   119,   120,   121,\r
-   122,   123,     0,     0,   124,     0,   125,     0,   126,     0,\r
-     0,   127,   128,   129,     0,     0,   130,     0,   131,   132,\r
-   133,   134,     0,     0,   135\r
+     0,     0,     0,     0,     0,    12,     0,     0,     0,   301,\r
+    13,     0,     0,     0,     0,     0,     0,     0,     9,     0,\r
+     0,     0,     0,    10,    11,     0,     9,     0,     0,     0,\r
+     0,    10,    11,     0,     0,     0,     0,     0,     0,     0,\r
+     0,     0,     0,     0,     0,     0,    80,    12,    81,     0,\r
+     0,   372,    13,     0,    82,    12,    83,     0,     0,   412,\r
+    13,     0,     0,    84,    85,    86,    87,     0,    88,    89,\r
+     0,    90,     0,    91,    92,    93,     0,     0,    94,     0,\r
+     0,    95,     0,    96,    97,    98,    99,   100,   101,     0,\r
+   102,   103,   104,   105,     0,     0,   106,     0,     0,   107,\r
+     0,     0,     0,   108,     0,   109,     0,     0,     0,   110,\r
+   111,   112,   113,   114,   115,   116,     0,   117,   118,   119,\r
+   120,   121,   122,   123,   124,     0,     0,   125,     0,     0,\r
+   126,     0,   127,     0,     0,   128,   129,   130,     0,     0,\r
+   131,     0,   132,   133,   134,   135,     0,     0,   136\r
 };\r
 \r
 static const short yycheck[] = {     1,\r
-    63,    10,     2,     1,     1,     1,    20,    20,   188,    26,\r
-     1,   191,   192,     1,   230,   195,   209,   197,     3,     4,\r
-    32,    38,    77,   119,    10,    11,   241,   242,   351,    32,\r
-   227,    10,    11,    40,    37,    28,   200,   133,   202,   203,\r
-   119,   103,    42,    46,    10,    11,    49,   135,   136,   119,\r
-   247,     3,   232,     5,     6,   103,    92,   440,   137,   132,\r
-   119,    64,     9,   446,    11,    72,    59,   137,    10,    11,\r
-   119,    71,   134,   109,   133,    60,    76,    70,    71,    10,\r
-    11,   136,   119,    76,   133,   408,   134,     3,     4,   131,\r
-   254,   255,   256,   257,   136,   288,   133,    53,   438,   102,\r
-    56,   316,    95,   443,   107,   108,   131,    54,    55,    94,\r
-   135,   136,     3,   125,     5,     6,   179,   180,   135,    32,\r
-   131,     3,     4,   186,   135,   136,   306,   132,   131,   114,\r
-   444,   136,   135,   136,   448,   198,     7,   139,   140,   125,\r
-   126,   139,   140,   139,   140,     7,    98,   136,   139,   140,\r
-   365,   139,   140,   369,   140,   335,   122,   123,   124,   125,\r
-   126,   140,   326,   327,   328,   329,   330,   331,   332,   333,\r
-   334,   123,   131,   125,   140,   127,    10,    11,     3,     4,\r
-   132,   123,   124,   125,   126,   137,   401,   351,     3,     4,\r
-   121,   122,   123,   124,   125,   126,   134,   132,   140,   213,\r
-   213,   136,   133,   131,   204,   205,   131,    98,   208,   140,\r
-     3,     4,   131,   428,     3,     4,   225,   134,   227,   383,\r
-     3,     4,   437,   131,     3,   131,     5,     6,     7,   138,\r
-   239,     4,   123,   231,   125,   231,   127,   239,   247,   248,\r
-   231,   132,   305,   407,   408,   134,   248,    20,   131,    22,\r
-   414,     3,     4,    10,    11,    28,   420,   257,    70,    32,\r
-     3,     4,   135,   136,   131,   429,   134,    29,   131,    42,\r
-   434,    51,    52,    46,    47,    10,    11,    50,    40,    52,\r
-   134,   132,   132,   132,     3,     4,    59,   121,   122,   123,\r
-   124,   125,   126,   290,   294,   132,   132,    70,    71,   133,\r
-   298,   301,   298,    76,   132,   132,   140,   298,   132,   309,\r
-    72,   309,    74,    32,   132,   132,    78,   380,   132,    98,\r
-   320,   132,    95,    96,   132,   132,   132,    29,   132,   102,\r
-   132,   132,   132,   132,   132,   108,   132,   110,    40,     3,\r
-   132,    60,   115,   116,   123,    86,   125,   134,   127,   134,\r
-   134,   139,   133,   132,   132,     7,     4,     7,     7,    10,\r
-    11,     7,     7,   136,   121,   122,   123,   124,   125,   126,\r
-    72,    52,    20,     8,    22,    94,    78,     5,   136,   138,\r
-    28,   138,   135,   140,    32,   134,   121,   122,   123,   124,\r
-   125,   126,   119,   139,    42,   114,   119,   133,    46,    47,\r
-   132,   399,    50,   399,    52,   140,   125,   133,   399,   133,\r
-     3,    59,   133,   132,   131,   417,     3,   133,     5,     6,\r
-     7,   133,    70,    71,   133,   133,   133,   427,    76,   133,\r
-   133,   440,   133,     3,   436,     5,     6,   446,   440,   133,\r
-   133,   133,   444,   133,   446,   133,   448,    95,    96,   133,\r
-   141,   133,   138,   133,   102,    64,   131,   131,   131,     5,\r
-   108,   133,   110,   133,   140,   133,   133,   115,   116,   131,\r
-   121,   122,   123,   124,   125,   126,     3,     4,     5,     6,\r
-   100,   136,   136,   119,   131,   138,     0,   138,   136,   140,\r
-   133,   132,   134,    20,   133,    22,   133,     0,    18,   133,\r
-   297,    28,   436,   202,     1,    32,   185,     1,     1,   240,\r
-   305,    98,   201,    -1,   296,    42,    -1,    -1,    -1,    46,\r
-    47,    -1,    -1,    50,    -1,    52,    -1,    -1,    98,    -1,\r
-    -1,    -1,    59,    -1,    -1,    -1,   123,    -1,   125,    -1,\r
-   127,    -1,    -1,    70,    71,   132,    -1,    -1,    -1,    76,\r
-    -1,    -1,    -1,   123,     9,   125,    -1,   127,    -1,    -1,\r
-    -1,    -1,   132,    -1,    -1,    -1,    -1,    -1,    95,    96,\r
-    -1,    98,    -1,    -1,    -1,   102,    -1,    32,    -1,    -1,\r
-    -1,   108,    37,   110,    -1,    40,    -1,    -1,   115,   116,\r
-    -1,    46,    -1,    -1,    49,     4,   123,    -1,   125,    -1,\r
-   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,    64,\r
-    -1,    20,    -1,    22,    -1,    -1,    -1,    72,    -1,    28,\r
-    -1,    -1,    -1,    32,    -1,    -1,    -1,    -1,    -1,    -1,\r
-    -1,    -1,    -1,    42,    32,    -1,    -1,    46,    47,    37,\r
-    -1,    50,    40,    52,    -1,    -1,    -1,   102,    46,    -1,\r
-    59,    49,   107,   108,    -1,    -1,    -1,    -1,    -1,    -1,\r
-    -1,    70,    71,    -1,    -1,    32,    64,    76,    -1,    -1,\r
-    37,    -1,    -1,    40,    72,    -1,   131,    -1,    -1,    46,\r
-    -1,   136,    49,    -1,    -1,    -1,    95,    96,    -1,    -1,\r
-    -1,    -1,    -1,   102,    -1,    -1,    -1,    64,    32,   108,\r
-    -1,   110,    -1,    37,   102,    72,   115,   116,    -1,   107,\r
-   108,    32,    46,    -1,    -1,    49,    37,    -1,    -1,    -1,\r
-    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    -1,\r
-    64,    -1,    -1,   131,    -1,   102,    -1,   135,   136,    -1,\r
-   107,   108,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,\r
+    64,    10,     2,     1,     1,     1,    20,    20,   190,   232,\r
+     1,   193,   194,   243,   244,   197,   353,   199,     1,     3,\r
+     4,    10,    11,    26,   211,    32,    77,   229,    40,   120,\r
+   104,   104,   120,    92,   133,    38,     7,     9,   202,    11,\r
+   204,   205,    42,   134,   440,    10,    11,   249,   120,   445,\r
+   138,   110,   234,    32,    28,   120,     3,   120,     5,     6,\r
+    72,   135,   135,    29,   120,   132,   138,    10,    11,   134,\r
+   137,   134,    72,   410,    40,   137,    60,    77,   134,    29,\r
+    10,    11,   132,    55,    56,    59,   137,   133,   318,   132,\r
+    40,   137,   256,   257,   258,   259,    70,    71,   442,   132,\r
+    10,    11,    76,   290,   448,   133,    72,   132,    74,   137,\r
+    94,   132,    78,    10,    11,   136,   137,   181,   182,   126,\r
+   135,    95,    72,   446,   188,    99,   308,   450,    78,   135,\r
+    53,   115,    70,   136,    57,   139,   200,   367,   140,   141,\r
+     3,     4,   140,   141,   140,   141,     3,     4,   371,   140,\r
+   141,    98,   141,    51,    52,   337,    54,   140,   141,   124,\r
+   125,   126,   127,   132,   328,   329,   330,   331,   332,   333,\r
+   334,   335,   336,   403,     3,     4,   141,   124,   135,   126,\r
+   132,   128,     7,   126,   127,   133,   133,     3,     4,   353,\r
+   132,   138,   122,   123,   124,   125,   126,   127,   141,   132,\r
+   430,   215,   215,   135,   134,   132,   206,   207,   133,   439,\r
+   210,   141,   122,   123,   124,   125,   126,   127,   227,   135,\r
+   229,   385,     3,     4,   134,   122,   123,   124,   125,   126,\r
+   127,   141,   241,     4,   133,   233,     3,   233,   133,   241,\r
+   249,   250,   233,   307,   141,   409,   410,   133,   250,    20,\r
+   133,    22,   416,   133,    10,    11,   133,    28,   422,   259,\r
+   132,    32,     3,     4,   136,   137,   133,   431,   133,     3,\r
+     4,    42,   436,     3,     4,    46,    47,     3,     4,    50,\r
+   133,    52,     3,     4,   136,   137,   136,   137,    59,   133,\r
+   133,   133,   133,   133,   133,   292,   296,   133,    32,    70,\r
+    71,   133,   300,   303,   300,    76,    10,    11,   135,   300,\r
+   133,   311,   133,   311,   133,   133,    86,     7,   382,     7,\r
+   135,   135,   322,   140,    95,    96,    60,   134,    99,   133,\r
+     7,     3,   103,     5,     6,     7,     7,     7,   109,     3,\r
+   111,     5,     6,     7,    52,   116,   117,     8,     5,   137,\r
+   139,   135,   120,   136,   140,   120,   134,   133,     4,   134,\r
+    94,    10,    11,     3,    64,   134,   137,   123,   124,   125,\r
+   126,   127,   134,   134,    20,   134,    22,   134,   142,   134,\r
+   134,   115,    28,   134,   134,   141,    32,   134,   134,   134,\r
+   134,     3,   126,     5,     6,   134,    42,   134,   134,   133,\r
+    46,    47,   134,   401,    50,   401,    52,   134,   139,   132,\r
+   401,     5,   132,    59,   132,   132,   141,   419,   122,   123,\r
+   124,   125,   126,   127,    70,    71,    98,   134,   134,   429,\r
+    76,   134,   134,   442,    98,   139,   438,   141,   132,   448,\r
+   442,   101,   134,   132,   446,     0,   448,   134,   450,    95,\r
+    96,   137,   124,    99,   126,   135,   128,   103,   133,   137,\r
+   124,   133,   126,   109,   128,   111,   120,     0,   134,   133,\r
+   116,   117,   139,   122,   123,   124,   125,   126,   127,     3,\r
+     4,     5,     6,   134,    18,     3,    98,     5,     6,   299,\r
+   139,   137,   141,   438,   307,   204,    20,   298,    22,     1,\r
+     1,     1,   187,    -1,    28,   203,    -1,   242,    32,    -1,\r
+    -1,    -1,   124,     9,   126,    -1,   128,    -1,    42,    -1,\r
+    -1,   133,    46,    47,    -1,    -1,    50,    -1,    52,    -1,\r
+    -1,    -1,    -1,    -1,    -1,    59,    32,    -1,    -1,    -1,\r
+    -1,    37,    -1,    -1,    40,    -1,    70,    71,    -1,    -1,\r
+    46,    -1,    76,    49,    -1,    -1,    -1,    -1,    -1,    -1,\r
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,\r
+    -1,    95,    96,    -1,    98,    99,    72,    -1,    -1,   103,\r
+    98,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,\r
+    -1,    -1,   116,   117,    -1,    -1,    -1,    -1,    -1,    -1,\r
+   124,     4,   126,    -1,   128,    -1,   124,   103,   126,   133,\r
+   128,    -1,   108,   109,    -1,   133,    -1,    20,    32,    22,\r
+    -1,    -1,    -1,    37,    -1,    28,    40,    -1,    -1,    32,\r
+    -1,    -1,    46,    -1,    -1,    49,   132,    -1,    -1,    42,\r
+    32,   137,    -1,    46,    47,    37,    -1,    50,    40,    52,\r
+    64,    -1,    -1,    -1,    46,    -1,    59,    49,    72,    -1,\r
+    -1,    -1,    -1,    -1,    -1,    32,    -1,    70,    71,    -1,\r
+    37,    -1,    64,    76,    -1,    -1,    -1,    -1,    -1,    46,\r
+    72,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,   103,\r
+    -1,    -1,    95,    96,   108,   109,    99,    64,    -1,    -1,\r
+   103,    -1,    -1,    -1,    -1,    -1,   109,    32,   111,    -1,\r
+    -1,   103,    37,   116,   117,    32,   108,   109,   132,    -1,\r
+    37,    46,   136,   137,    49,    -1,    -1,    -1,    -1,    46,\r
+    -1,    -1,    49,    -1,    -1,    -1,   103,    -1,    -1,    64,\r
+   132,   108,   109,    -1,    -1,   137,    -1,    64,    -1,    -1,\r
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,\r
-    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,   102,   136,\r
-    -1,    -1,    -1,   107,   108,    -1,    -1,    -1,    -1,    -1,\r
-    -1,   102,    -1,    -1,    -1,    -1,   107,   108,    -1,    -1,\r
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,\r
-    -1,   135,   136,    16,    -1,    18,    -1,    -1,    -1,    -1,\r
-   131,    24,    -1,    26,   135,   136,    -1,    -1,    -1,    -1,\r
-    33,    34,    35,    36,    -1,    38,    39,    -1,    41,    -1,\r
-    43,    44,    45,    -1,    -1,    48,    -1,    -1,    51,    -1,\r
-    53,    54,    55,    56,    57,    58,    -1,    60,    61,    62,\r
-    63,    -1,    -1,    66,    -1,    -1,    69,    -1,    -1,    -1,\r
-    73,    -1,    75,    -1,    -1,    -1,    79,    80,    81,    82,\r
-    83,    84,    85,    -1,    87,    88,    89,    90,    91,    92,\r
-    93,    94,    -1,    -1,    97,    -1,    99,    -1,   101,    -1,\r
-    -1,   104,   105,   106,    -1,    -1,   109,    -1,   111,   112,\r
-   113,   114,    -1,    -1,   117\r
+    -1,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,   136,\r
+   137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,\r
+    -1,    -1,    -1,   108,   109,    -1,   103,    -1,    -1,    -1,\r
+    -1,   108,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,\r
+    -1,    -1,    -1,    -1,    -1,    -1,    16,   132,    18,    -1,\r
+    -1,   136,   137,    -1,    24,   132,    26,    -1,    -1,   136,\r
+   137,    -1,    -1,    33,    34,    35,    36,    -1,    38,    39,\r
+    -1,    41,    -1,    43,    44,    45,    -1,    -1,    48,    -1,\r
+    -1,    51,    -1,    53,    54,    55,    56,    57,    58,    -1,\r
+    60,    61,    62,    63,    -1,    -1,    66,    -1,    -1,    69,\r
+    -1,    -1,    -1,    73,    -1,    75,    -1,    -1,    -1,    79,\r
+    80,    81,    82,    83,    84,    85,    -1,    87,    88,    89,\r
+    90,    91,    92,    93,    94,    -1,    -1,    97,    -1,    -1,\r
+   100,    -1,   102,    -1,    -1,   105,   106,   107,    -1,    -1,\r
+   110,    -1,   112,   113,   114,   115,    -1,    -1,   118\r
 };\r
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */\r
 #line 3 "/usr/share/bison.simple"\r
@@ -1391,161 +1393,161 @@ yyreduce:
   switch (yyn) {\r
 \r
 case 1:\r
-#line 228 "parser.y"\r
+#line 229 "parser.y"\r
 { write_proxies(yyvsp[0].ifref); write_client(yyvsp[0].ifref); write_server(yyvsp[0].ifref); ;\r
     break;}\r
 case 2:\r
-#line 231 "parser.y"\r
+#line 232 "parser.y"\r
 { yyval.ifref = NULL; ;\r
     break;}\r
 case 3:\r
-#line 232 "parser.y"\r
+#line 233 "parser.y"\r
 { yyval.ifref = yyvsp[-1].ifref; ;\r
     break;}\r
 case 4:\r
-#line 233 "parser.y"\r
+#line 234 "parser.y"\r
 { yyval.ifref = make_ifref(yyvsp[0].type); LINK(yyval.ifref, yyvsp[-1].ifref); ;\r
     break;}\r
 case 5:\r
-#line 234 "parser.y"\r
+#line 235 "parser.y"\r
 { yyval.ifref = yyvsp[-1].ifref; add_coclass(yyvsp[0].clas); ;\r
     break;}\r
 case 6:\r
-#line 235 "parser.y"\r
+#line 236 "parser.y"\r
 { yyval.ifref = yyvsp[-1].ifref; add_module(yyvsp[0].type); ;\r
     break;}\r
 case 7:\r
-#line 236 "parser.y"\r
+#line 237 "parser.y"\r
 { yyval.ifref = yyvsp[-1].ifref; ;\r
     break;}\r
 case 8:\r
-#line 237 "parser.y"\r
+#line 238 "parser.y"\r
 { yyval.ifref = yyvsp[-1].ifref; ;\r
     break;}\r
 case 9:\r
-#line 240 "parser.y"\r
+#line 241 "parser.y"\r
 {;\r
     break;}\r
 case 10:\r
-#line 241 "parser.y"\r
+#line 242 "parser.y"\r
 { if (!parse_only) add_interface(yyvsp[0].type); ;\r
     break;}\r
 case 11:\r
-#line 242 "parser.y"\r
+#line 243 "parser.y"\r
 { if (!parse_only) add_interface(yyvsp[0].type); ;\r
     break;}\r
 case 12:\r
-#line 243 "parser.y"\r
+#line 244 "parser.y"\r
 { if (!parse_only) add_coclass(yyvsp[0].clas); ;\r
     break;}\r
 case 13:\r
-#line 244 "parser.y"\r
+#line 245 "parser.y"\r
 { if (!parse_only) add_module(yyvsp[0].type); ;\r
     break;}\r
 case 14:\r
-#line 245 "parser.y"\r
+#line 246 "parser.y"\r
 {;\r
     break;}\r
 case 15:\r
-#line 248 "parser.y"\r
+#line 249 "parser.y"\r
 { yyval.func = NULL; ;\r
     break;}\r
 case 16:\r
-#line 249 "parser.y"\r
+#line 250 "parser.y"\r
 { yyval.func = yyvsp[-1].func; LINK(yyval.func, yyvsp[-2].func); ;\r
     break;}\r
 case 17:\r
-#line 250 "parser.y"\r
+#line 251 "parser.y"\r
 { yyval.func = yyvsp[-1].func; ;\r
     break;}\r
 case 18:\r
-#line 253 "parser.y"\r
+#line 254 "parser.y"\r
 {;\r
     break;}\r
 case 19:\r
-#line 254 "parser.y"\r
+#line 255 "parser.y"\r
 { if (!parse_only && do_header) { write_constdef(yyvsp[-1].var); } ;\r
     break;}\r
 case 20:\r
-#line 255 "parser.y"\r
+#line 256 "parser.y"\r
 {;\r
     break;}\r
 case 21:\r
-#line 256 "parser.y"\r
+#line 257 "parser.y"\r
 { if (!parse_only && do_header) { write_type(header, yyvsp[-1].type, NULL, NULL); fprintf(header, ";\n\n"); } ;\r
     break;}\r
 case 22:\r
-#line 257 "parser.y"\r
+#line 258 "parser.y"\r
 { if (!parse_only && do_header) { write_externdef(yyvsp[-1].var); } ;\r
     break;}\r
 case 23:\r
-#line 258 "parser.y"\r
+#line 259 "parser.y"\r
 {;\r
     break;}\r
 case 24:\r
-#line 259 "parser.y"\r
+#line 260 "parser.y"\r
 { if (!parse_only && do_header) { write_type(header, yyvsp[-1].type, NULL, NULL); fprintf(header, ";\n\n"); } ;\r
     break;}\r
 case 25:\r
-#line 260 "parser.y"\r
+#line 261 "parser.y"\r
 {;\r
     break;}\r
 case 26:\r
-#line 261 "parser.y"\r
+#line 262 "parser.y"\r
 { if (!parse_only && do_header) { write_type(header, yyvsp[-1].type, NULL, NULL); fprintf(header, ";\n\n"); } ;\r
     break;}\r
 case 27:\r
-#line 264 "parser.y"\r
+#line 265 "parser.y"\r
 { if (!parse_only && do_header) fprintf(header, "%s\n", yyvsp[-1].str); ;\r
     break;}\r
 case 28:\r
-#line 266 "parser.y"\r
+#line 267 "parser.y"\r
 { assert(yychar == YYEMPTY);\r
                                                  if (!do_import(yyvsp[-1].str)) yychar = aEOF; ;\r
     break;}\r
 case 29:\r
-#line 269 "parser.y"\r
+#line 270 "parser.y"\r
 {;\r
     break;}\r
 case 30:\r
-#line 272 "parser.y"\r
+#line 273 "parser.y"\r
 { yyval.str = yyvsp[0].str; ;\r
     break;}\r
 case 31:\r
-#line 274 "parser.y"\r
+#line 275 "parser.y"\r
 { start_typelib(yyvsp[-1].str, yyvsp[-2].attr); ;\r
     break;}\r
 case 32:\r
-#line 276 "parser.y"\r
+#line 277 "parser.y"\r
 { end_typelib(); ;\r
     break;}\r
 case 33:\r
-#line 279 "parser.y"\r
+#line 280 "parser.y"\r
 { yyval.var = NULL; ;\r
     break;}\r
 case 35:\r
-#line 283 "parser.y"\r
+#line 284 "parser.y"\r
 { yyval.var = NULL; ;\r
     break;}\r
 case 37:\r
-#line 287 "parser.y"\r
+#line 288 "parser.y"\r
 { LINK(yyvsp[0].var, yyvsp[-2].var); yyval.var = yyvsp[0].var; ;\r
     break;}\r
 case 39:\r
-#line 292 "parser.y"\r
+#line 293 "parser.y"\r
 { yyval.var = yyvsp[-1].var;\r
                                                  set_type(yyval.var, yyvsp[-2].tref, yyvsp[0].expr);\r
                                                  yyval.var->attrs = yyvsp[-3].attr;\r
                                                ;\r
     break;}\r
 case 40:\r
-#line 296 "parser.y"\r
+#line 297 "parser.y"\r
 { yyval.var = yyvsp[-1].var;\r
                                                  set_type(yyval.var, yyvsp[-2].tref, yyvsp[0].expr);\r
                                                ;\r
     break;}\r
 case 41:\r
-#line 299 "parser.y"\r
+#line 300 "parser.y"\r
 { yyval.var = yyvsp[-3].var;\r
                                                  yyval.var->ptr_level--;\r
                                                  set_type(yyval.var, yyvsp[-4].tref, NULL);\r
@@ -1554,7 +1556,7 @@ case 41:
                                                ;\r
     break;}\r
 case 42:\r
-#line 305 "parser.y"\r
+#line 306 "parser.y"\r
 { yyval.var = yyvsp[-3].var;\r
                                                  yyval.var->ptr_level--;\r
                                                  set_type(yyval.var, yyvsp[-4].tref, NULL);\r
@@ -1562,299 +1564,299 @@ case 42:
                                                ;\r
     break;}\r
 case 43:\r
-#line 312 "parser.y"\r
+#line 313 "parser.y"\r
 { yyval.expr = NULL; ;\r
     break;}\r
 case 44:\r
-#line 313 "parser.y"\r
+#line 314 "parser.y"\r
 { yyval.expr = yyvsp[-1].expr; ;\r
     break;}\r
 case 45:\r
-#line 314 "parser.y"\r
+#line 315 "parser.y"\r
 { yyval.expr = make_expr(EXPR_VOID); ;\r
     break;}\r
 case 47:\r
-#line 318 "parser.y"\r
+#line 319 "parser.y"\r
 { LINK(yyvsp[0].expr, yyvsp[-2].expr); yyval.expr = yyvsp[0].expr; ;\r
     break;}\r
 case 48:\r
-#line 319 "parser.y"\r
+#line 320 "parser.y"\r
 { LINK(yyvsp[0].expr, yyvsp[-3].expr); yyval.expr = yyvsp[0].expr; ;\r
     break;}\r
 case 49:\r
-#line 322 "parser.y"\r
+#line 323 "parser.y"\r
 { yyval.attr = NULL; ;\r
     break;}\r
 case 51:\r
-#line 327 "parser.y"\r
+#line 328 "parser.y"\r
 { yyval.attr = yyvsp[-1].attr; ;\r
     break;}\r
 case 53:\r
-#line 331 "parser.y"\r
+#line 332 "parser.y"\r
 { LINK(yyvsp[0].attr, yyvsp[-2].attr); yyval.attr = yyvsp[0].attr; ;\r
     break;}\r
 case 54:\r
-#line 332 "parser.y"\r
+#line 333 "parser.y"\r
 { LINK(yyvsp[0].attr, yyvsp[-3].attr); yyval.attr = yyvsp[0].attr; ;\r
     break;}\r
 case 55:\r
-#line 336 "parser.y"\r
+#line 337 "parser.y"\r
 { yyval.attr = make_attr(ATTR_ASYNC); ;\r
     break;}\r
 case 56:\r
-#line 337 "parser.y"\r
+#line 338 "parser.y"\r
 { yyval.attr = make_attr(ATTR_AUTO_HANDLE); ;\r
     break;}\r
 case 57:\r
-#line 338 "parser.y"\r
+#line 339 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_CALLAS, yyvsp[-1].var); ;\r
     break;}\r
 case 58:\r
-#line 339 "parser.y"\r
+#line 340 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_CASE, yyvsp[-1].expr); ;\r
     break;}\r
 case 59:\r
-#line 340 "parser.y"\r
+#line 341 "parser.y"\r
 { yyval.attr = make_attrv(ATTR_CONTEXTHANDLE, 0); ;\r
     break;}\r
 case 60:\r
-#line 341 "parser.y"\r
+#line 342 "parser.y"\r
 { yyval.attr = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ ;\r
     break;}\r
 case 61:\r
-#line 342 "parser.y"\r
+#line 343 "parser.y"\r
 { yyval.attr = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ ;\r
     break;}\r
 case 62:\r
-#line 343 "parser.y"\r
+#line 344 "parser.y"\r
 { yyval.attr = make_attr(ATTR_CONTROL); ;\r
     break;}\r
 case 63:\r
-#line 344 "parser.y"\r
+#line 345 "parser.y"\r
 { yyval.attr = make_attr(ATTR_DEFAULT); ;\r
     break;}\r
 case 64:\r
-#line 345 "parser.y"\r
+#line 346 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_DEFAULTVALUE_EXPR, yyvsp[-1].expr); ;\r
     break;}\r
 case 65:\r
-#line 346 "parser.y"\r
+#line 347 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_DEFAULTVALUE_STRING, yyvsp[-1].str); ;\r
     break;}\r
 case 66:\r
-#line 347 "parser.y"\r
+#line 348 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_DLLNAME, yyvsp[-1].str); ;\r
     break;}\r
 case 67:\r
-#line 348 "parser.y"\r
+#line 349 "parser.y"\r
 { yyval.attr = make_attr(ATTR_DUAL); ;\r
     break;}\r
 case 68:\r
-#line 349 "parser.y"\r
+#line 350 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_ENDPOINT, yyvsp[-1].str); ;\r
     break;}\r
 case 69:\r
-#line 350 "parser.y"\r
+#line 351 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_ENTRY_STRING, yyvsp[-1].str); ;\r
     break;}\r
 case 70:\r
-#line 351 "parser.y"\r
+#line 352 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_ENTRY_ORDINAL, yyvsp[-1].expr); ;\r
     break;}\r
 case 71:\r
-#line 352 "parser.y"\r
+#line 353 "parser.y"\r
 { yyval.attr = make_attr(ATTR_EXPLICIT_HANDLE); ;\r
     break;}\r
 case 72:\r
-#line 353 "parser.y"\r
+#line 354 "parser.y"\r
 { yyval.attr = make_attr(ATTR_HANDLE); ;\r
     break;}\r
 case 73:\r
-#line 354 "parser.y"\r
+#line 355 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_HELPCONTEXT, yyvsp[-1].expr); ;\r
     break;}\r
 case 74:\r
-#line 355 "parser.y"\r
+#line 356 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_HELPFILE, yyvsp[-1].str); ;\r
     break;}\r
 case 75:\r
-#line 356 "parser.y"\r
+#line 357 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_HELPSTRING, yyvsp[-1].str); ;\r
     break;}\r
 case 76:\r
-#line 357 "parser.y"\r
+#line 358 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_HELPSTRINGCONTEXT, yyvsp[-1].expr); ;\r
     break;}\r
 case 77:\r
-#line 358 "parser.y"\r
+#line 359 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_HELPSTRINGDLL, yyvsp[-1].str); ;\r
     break;}\r
 case 78:\r
-#line 359 "parser.y"\r
+#line 360 "parser.y"\r
 { yyval.attr = make_attr(ATTR_HIDDEN); ;\r
     break;}\r
 case 79:\r
-#line 360 "parser.y"\r
+#line 361 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_ID, yyvsp[-1].expr); ;\r
     break;}\r
 case 80:\r
-#line 361 "parser.y"\r
+#line 362 "parser.y"\r
 { yyval.attr = make_attr(ATTR_IDEMPOTENT); ;\r
     break;}\r
 case 81:\r
-#line 362 "parser.y"\r
+#line 363 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_IIDIS, yyvsp[-1].var); ;\r
     break;}\r
 case 82:\r
-#line 363 "parser.y"\r
+#line 364 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_IMPLICIT_HANDLE, yyvsp[-1].str); ;\r
     break;}\r
 case 83:\r
-#line 364 "parser.y"\r
+#line 365 "parser.y"\r
 { yyval.attr = make_attr(ATTR_IN); ;\r
     break;}\r
 case 84:\r
-#line 365 "parser.y"\r
+#line 366 "parser.y"\r
 { yyval.attr = make_attr(ATTR_INPUTSYNC); ;\r
     break;}\r
 case 85:\r
-#line 366 "parser.y"\r
+#line 367 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_LENGTHIS, yyvsp[-1].expr); ;\r
     break;}\r
 case 86:\r
-#line 367 "parser.y"\r
+#line 368 "parser.y"\r
 { yyval.attr = make_attr(ATTR_LOCAL); ;\r
     break;}\r
 case 87:\r
-#line 368 "parser.y"\r
+#line 369 "parser.y"\r
 { yyval.attr = make_attr(ATTR_NONCREATABLE); ;\r
     break;}\r
 case 88:\r
-#line 369 "parser.y"\r
+#line 370 "parser.y"\r
 { yyval.attr = make_attr(ATTR_OBJECT); ;\r
     break;}\r
 case 89:\r
-#line 370 "parser.y"\r
+#line 371 "parser.y"\r
 { yyval.attr = make_attr(ATTR_ODL); ;\r
     break;}\r
 case 90:\r
-#line 371 "parser.y"\r
+#line 372 "parser.y"\r
 { yyval.attr = make_attr(ATTR_OLEAUTOMATION); ;\r
     break;}\r
 case 91:\r
-#line 372 "parser.y"\r
+#line 373 "parser.y"\r
 { yyval.attr = make_attr(ATTR_OPTIONAL); ;\r
     break;}\r
 case 92:\r
-#line 373 "parser.y"\r
+#line 374 "parser.y"\r
 { yyval.attr = make_attr(ATTR_OUT); ;\r
     break;}\r
 case 93:\r
-#line 374 "parser.y"\r
+#line 375 "parser.y"\r
 { yyval.attr = make_attrv(ATTR_POINTERDEFAULT, yyvsp[-1].num); ;\r
     break;}\r
 case 94:\r
-#line 375 "parser.y"\r
+#line 376 "parser.y"\r
 { yyval.attr = make_attr(ATTR_PROPGET); ;\r
     break;}\r
 case 95:\r
-#line 376 "parser.y"\r
+#line 377 "parser.y"\r
 { yyval.attr = make_attr(ATTR_PROPPUT); ;\r
     break;}\r
 case 96:\r
-#line 377 "parser.y"\r
+#line 378 "parser.y"\r
 { yyval.attr = make_attr(ATTR_PROPPUTREF); ;\r
     break;}\r
 case 97:\r
-#line 378 "parser.y"\r
+#line 379 "parser.y"\r
 { yyval.attr = make_attr(ATTR_PUBLIC); ;\r
     break;}\r
 case 98:\r
-#line 379 "parser.y"\r
+#line 380 "parser.y"\r
 { yyval.attr = make_attr(ATTR_READONLY); ;\r
     break;}\r
 case 99:\r
-#line 380 "parser.y"\r
+#line 381 "parser.y"\r
 { yyval.attr = make_attr(ATTR_RESTRICTED); ;\r
     break;}\r
 case 100:\r
-#line 381 "parser.y"\r
+#line 382 "parser.y"\r
 { yyval.attr = make_attr(ATTR_RETVAL); ;\r
     break;}\r
 case 101:\r
-#line 382 "parser.y"\r
+#line 383 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_SIZEIS, yyvsp[-1].expr); ;\r
     break;}\r
 case 102:\r
-#line 383 "parser.y"\r
+#line 384 "parser.y"\r
 { yyval.attr = make_attr(ATTR_SOURCE); ;\r
     break;}\r
 case 103:\r
-#line 384 "parser.y"\r
+#line 385 "parser.y"\r
 { yyval.attr = make_attr(ATTR_STRING); ;\r
     break;}\r
 case 104:\r
-#line 385 "parser.y"\r
+#line 386 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_SWITCHIS, yyvsp[-1].expr); ;\r
     break;}\r
 case 105:\r
-#line 386 "parser.y"\r
+#line 387 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_SWITCHTYPE, type_ref(yyvsp[-1].tref)); ;\r
     break;}\r
 case 106:\r
-#line 387 "parser.y"\r
+#line 388 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_TRANSMITAS, type_ref(yyvsp[-1].tref)); ;\r
     break;}\r
 case 107:\r
-#line 388 "parser.y"\r
+#line 389 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_UUID, yyvsp[-1].uuid); ;\r
     break;}\r
 case 108:\r
-#line 389 "parser.y"\r
+#line 390 "parser.y"\r
 { yyval.attr = make_attr(ATTR_V1ENUM); ;\r
     break;}\r
 case 109:\r
-#line 390 "parser.y"\r
+#line 391 "parser.y"\r
 { yyval.attr = make_attr(ATTR_VARARG); ;\r
     break;}\r
 case 110:\r
-#line 391 "parser.y"\r
+#line 392 "parser.y"\r
 { yyval.attr = make_attrv(ATTR_VERSION, yyvsp[-1].num); ;\r
     break;}\r
 case 111:\r
-#line 392 "parser.y"\r
+#line 393 "parser.y"\r
 { yyval.attr = make_attrp(ATTR_WIREMARSHAL, type_ref(yyvsp[-1].tref)); ;\r
     break;}\r
 case 112:\r
-#line 393 "parser.y"\r
+#line 394 "parser.y"\r
 { yyval.attr = make_attrv(ATTR_POINTERTYPE, yyvsp[0].num); ;\r
     break;}\r
 case 115:\r
-#line 400 "parser.y"\r
+#line 401 "parser.y"\r
 { yyval.var = NULL; ;\r
     break;}\r
 case 116:\r
-#line 401 "parser.y"\r
+#line 402 "parser.y"\r
 { if (yyvsp[0].var) { LINK(yyvsp[0].var, yyvsp[-1].var); yyval.var = yyvsp[0].var; }\r
                                                  else { yyval.var = yyvsp[-1].var; }\r
                                                ;\r
     break;}\r
 case 117:\r
-#line 406 "parser.y"\r
+#line 407 "parser.y"\r
 { attr_t *a = make_attrp(ATTR_CASE, yyvsp[-2].expr);\r
                                                  yyval.var = yyvsp[0].var; if (!yyval.var) yyval.var = make_var(NULL);\r
                                                  LINK(a, yyval.var->attrs); yyval.var->attrs = a;\r
                                                ;\r
     break;}\r
 case 118:\r
-#line 410 "parser.y"\r
+#line 411 "parser.y"\r
 { attr_t *a = make_attr(ATTR_DEFAULT);\r
                                                  yyval.var = yyvsp[0].var; if (!yyval.var) yyval.var = make_var(NULL);\r
                                                  LINK(a, yyval.var->attrs); yyval.var->attrs = a;\r
                                                ;\r
     break;}\r
 case 119:\r
-#line 416 "parser.y"\r
+#line 417 "parser.y"\r
 { yyval.var = reg_const(yyvsp[-2].var);\r
                                                  set_type(yyval.var, yyvsp[-3].tref, NULL);\r
                                                  yyval.var->eval = yyvsp[0].expr;\r
@@ -1862,22 +1864,22 @@ case 119:
                                                ;\r
     break;}\r
 case 120:\r
-#line 423 "parser.y"\r
+#line 424 "parser.y"\r
 { yyval.var = NULL; ;\r
     break;}\r
 case 121:\r
-#line 424 "parser.y"\r
+#line 425 "parser.y"\r
 { yyval.var = yyvsp[-1].var; ;\r
     break;}\r
 case 124:\r
-#line 429 "parser.y"\r
+#line 430 "parser.y"\r
 { LINK(yyvsp[0].var, yyvsp[-2].var); yyval.var = yyvsp[0].var;\r
                                                  if (yyvsp[-2].var && !yyvsp[0].var->eval)\r
                                                    yyvsp[0].var->lval = yyvsp[-2].var->lval + 1;\r
                                                ;\r
     break;}\r
 case 125:\r
-#line 435 "parser.y"\r
+#line 436 "parser.y"\r
 { yyval.var = reg_const(yyvsp[-2].var);\r
                                                  yyval.var->eval = yyvsp[0].expr;\r
                                                  yyval.var->lval = yyvsp[0].expr->cval;\r
@@ -1885,14 +1887,14 @@ case 125:
                                                ;\r
     break;}\r
 case 126:\r
-#line 440 "parser.y"\r
+#line 441 "parser.y"\r
 { yyval.var = reg_const(yyvsp[0].var);\r
                                                  yyval.var->lval = 0; /* default for first enum entry */\r
                                                  yyval.var->type = make_type(RPC_FC_LONG, &std_int);\r
                                                ;\r
     break;}\r
 case 127:\r
-#line 446 "parser.y"\r
+#line 447 "parser.y"\r
 { yyval.type = get_typev(RPC_FC_ENUM16, yyvsp[-3].var, tsENUM);\r
                                                  yyval.type->fields = yyvsp[-1].var;\r
                                                  yyval.type->defined = TRUE;\r
@@ -1901,134 +1903,134 @@ case 127:
                                                ;\r
     break;}\r
 case 129:\r
-#line 455 "parser.y"\r
+#line 456 "parser.y"\r
 { LINK(yyvsp[0].expr, yyvsp[-2].expr); yyval.expr = yyvsp[0].expr; ;\r
     break;}\r
 case 130:\r
-#line 468 "parser.y"\r
+#line 469 "parser.y"\r
 { yyval.expr = make_expr(EXPR_VOID); ;\r
     break;}\r
 case 132:\r
-#line 472 "parser.y"\r
+#line 473 "parser.y"\r
 { yyval.expr = make_exprl(EXPR_NUM, yyvsp[0].num); ;\r
     break;}\r
 case 133:\r
-#line 473 "parser.y"\r
+#line 474 "parser.y"\r
 { yyval.expr = make_exprl(EXPR_HEXNUM, yyvsp[0].num); ;\r
     break;}\r
 case 134:\r
-#line 474 "parser.y"\r
+#line 475 "parser.y"\r
 { yyval.expr = make_exprs(EXPR_IDENTIFIER, yyvsp[0].str); ;\r
     break;}\r
 case 135:\r
-#line 475 "parser.y"\r
+#line 476 "parser.y"\r
 { yyval.expr = make_expr3(EXPR_COND, yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].expr); ;\r
     break;}\r
 case 136:\r
-#line 476 "parser.y"\r
+#line 477 "parser.y"\r
 { yyval.expr = make_expr2(EXPR_OR , yyvsp[-2].expr, yyvsp[0].expr); ;\r
     break;}\r
 case 137:\r
-#line 477 "parser.y"\r
+#line 478 "parser.y"\r
 { yyval.expr = make_expr2(EXPR_AND, yyvsp[-2].expr, yyvsp[0].expr); ;\r
     break;}\r
 case 138:\r
-#line 478 "parser.y"\r
+#line 479 "parser.y"\r
 { yyval.expr = make_expr2(EXPR_ADD, yyvsp[-2].expr, yyvsp[0].expr); ;\r
     break;}\r
 case 139:\r
-#line 479 "parser.y"\r
+#line 480 "parser.y"\r
 { yyval.expr = make_expr2(EXPR_SUB, yyvsp[-2].expr, yyvsp[0].expr); ;\r
     break;}\r
 case 140:\r
-#line 480 "parser.y"\r
+#line 481 "parser.y"\r
 { yyval.expr = make_expr2(EXPR_MUL, yyvsp[-2].expr, yyvsp[0].expr); ;\r
     break;}\r
 case 141:\r
-#line 481 "parser.y"\r
+#line 482 "parser.y"\r
 { yyval.expr = make_expr2(EXPR_DIV, yyvsp[-2].expr, yyvsp[0].expr); ;\r
     break;}\r
 case 142:\r
-#line 482 "parser.y"\r
+#line 483 "parser.y"\r
 { yyval.expr = make_expr2(EXPR_SHL, yyvsp[-2].expr, yyvsp[0].expr); ;\r
     break;}\r
 case 143:\r
-#line 483 "parser.y"\r
+#line 484 "parser.y"\r
 { yyval.expr = make_expr2(EXPR_SHR, yyvsp[-2].expr, yyvsp[0].expr); ;\r
     break;}\r
 case 144:\r
-#line 484 "parser.y"\r
+#line 485 "parser.y"\r
 { yyval.expr = make_expr1(EXPR_NOT, yyvsp[0].expr); ;\r
     break;}\r
 case 145:\r
-#line 485 "parser.y"\r
+#line 486 "parser.y"\r
 { yyval.expr = make_expr1(EXPR_NEG, yyvsp[0].expr); ;\r
     break;}\r
 case 146:\r
-#line 486 "parser.y"\r
+#line 487 "parser.y"\r
 { yyval.expr = make_expr1(EXPR_PPTR, yyvsp[0].expr); ;\r
     break;}\r
 case 147:\r
-#line 487 "parser.y"\r
+#line 488 "parser.y"\r
 { yyval.expr = make_exprt(EXPR_CAST, yyvsp[-2].tref, yyvsp[0].expr); ;\r
     break;}\r
 case 148:\r
-#line 488 "parser.y"\r
+#line 489 "parser.y"\r
 { yyval.expr = make_exprt(EXPR_SIZEOF, yyvsp[-1].tref, NULL); ;\r
     break;}\r
 case 149:\r
-#line 489 "parser.y"\r
+#line 490 "parser.y"\r
 { yyval.expr = yyvsp[-1].expr; ;\r
     break;}\r
 case 151:\r
-#line 493 "parser.y"\r
+#line 494 "parser.y"\r
 { LINK(yyvsp[0].expr, yyvsp[-2].expr); yyval.expr = yyvsp[0].expr; ;\r
     break;}\r
 case 152:\r
-#line 496 "parser.y"\r
+#line 497 "parser.y"\r
 { yyval.expr = yyvsp[0].expr;\r
                                                  if (!yyval.expr->is_const)\r
                                                      yyerror("expression is not constant\n");\r
                                                ;\r
     break;}\r
 case 153:\r
-#line 502 "parser.y"\r
+#line 503 "parser.y"\r
 { yyval.var = yyvsp[0].var;\r
                                                  set_type(yyval.var, yyvsp[-1].tref, NULL);\r
                                                ;\r
     break;}\r
 case 154:\r
-#line 507 "parser.y"\r
+#line 508 "parser.y"\r
 { yyval.var = NULL; ;\r
     break;}\r
 case 155:\r
-#line 508 "parser.y"\r
+#line 509 "parser.y"\r
 { if (yyvsp[0].var) { LINK(yyvsp[0].var, yyvsp[-1].var); yyval.var = yyvsp[0].var; }\r
                                                  else { yyval.var = yyvsp[-1].var; }\r
                                                ;\r
     break;}\r
 case 156:\r
-#line 513 "parser.y"\r
+#line 514 "parser.y"\r
 { yyval.var = yyvsp[-1].var; ;\r
     break;}\r
 case 157:\r
-#line 514 "parser.y"\r
+#line 515 "parser.y"\r
 { yyval.var = make_var(NULL); yyval.var->type = yyvsp[-1].type; yyval.var->attrs = yyvsp[-2].attr; ;\r
     break;}\r
 case 158:\r
-#line 515 "parser.y"\r
+#line 516 "parser.y"\r
 { yyval.var = make_var(NULL); yyval.var->attrs = yyvsp[-1].attr; ;\r
     break;}\r
 case 159:\r
-#line 516 "parser.y"\r
+#line 517 "parser.y"\r
 { yyval.var = NULL; ;\r
     break;}\r
 case 160:\r
-#line 519 "parser.y"\r
+#line 520 "parser.y"\r
 { yyval.var = yyvsp[-1].var; set_type(yyval.var, yyvsp[-2].tref, yyvsp[0].expr); yyval.var->attrs = yyvsp[-3].attr; ;\r
     break;}\r
 case 161:\r
-#line 524 "parser.y"\r
+#line 525 "parser.y"\r
 { set_type(yyvsp[-3].var, yyvsp[-5].tref, NULL);\r
                                                  yyvsp[-3].var->attrs = yyvsp[-6].attr;\r
                                                  yyval.func = make_func(yyvsp[-3].var, yyvsp[-1].var);\r
@@ -2038,58 +2040,58 @@ case 161:
                                                ;\r
     break;}\r
 case 162:\r
-#line 533 "parser.y"\r
+#line 534 "parser.y"\r
 { yyval.var = NULL; ;\r
     break;}\r
 case 164:\r
-#line 537 "parser.y"\r
+#line 538 "parser.y"\r
 { yyval.var = NULL; ;\r
     break;}\r
 case 165:\r
-#line 538 "parser.y"\r
+#line 539 "parser.y"\r
 { yyval.var = make_var(yyvsp[0].str); ;\r
     break;}\r
 case 166:\r
-#line 539 "parser.y"\r
+#line 540 "parser.y"\r
 { yyval.var = make_var(yyvsp[0].str); ;\r
     break;}\r
 case 167:\r
-#line 542 "parser.y"\r
+#line 543 "parser.y"\r
 { yyval.var = make_var(yyvsp[0].str); ;\r
     break;}\r
 case 168:\r
-#line 544 "parser.y"\r
+#line 545 "parser.y"\r
 { yyval.var = make_var(yyvsp[0].str); ;\r
     break;}\r
 case 169:\r
-#line 545 "parser.y"\r
+#line 546 "parser.y"\r
 { yyval.var = make_var(yyvsp[0].str); ;\r
     break;}\r
 case 170:\r
-#line 546 "parser.y"\r
+#line 547 "parser.y"\r
 { yyval.var = make_var(yyvsp[0].str); ;\r
     break;}\r
 case 171:\r
-#line 547 "parser.y"\r
+#line 548 "parser.y"\r
 { yyval.var = make_var(yyvsp[0].str); ;\r
     break;}\r
 case 172:\r
-#line 550 "parser.y"\r
+#line 551 "parser.y"\r
 { yyval.type = make_type(RPC_FC_BYTE, NULL); ;\r
     break;}\r
 case 173:\r
-#line 551 "parser.y"\r
+#line 552 "parser.y"\r
 { yyval.type = make_type(RPC_FC_WCHAR, NULL); ;\r
     break;}\r
 case 175:\r
-#line 553 "parser.y"\r
+#line 554 "parser.y"\r
 { yyval.type = yyvsp[0].type; yyval.type->sign = 1; ;\r
     break;}\r
 case 176:\r
-#line 554 "parser.y"\r
+#line 555 "parser.y"\r
 { yyval.type = yyvsp[0].type; yyval.type->sign = -1;\r
                                                  switch (yyval.type->type) {\r
-                                                 case RPC_FC_CHAR:  yyval.type->type = RPC_FC_BYTE; yyval.type->sign = 0; break;\r
+                                                 case RPC_FC_CHAR: break;\r
                                                  case RPC_FC_SMALL: yyval.type->type = RPC_FC_USMALL; break;\r
                                                  case RPC_FC_SHORT: yyval.type->type = RPC_FC_USHORT; break;\r
                                                  case RPC_FC_LONG:  yyval.type->type = RPC_FC_ULONG;  break;\r
@@ -2101,92 +2103,96 @@ case 176:
                                                ;\r
     break;}\r
 case 177:\r
-#line 566 "parser.y"\r
+#line 567 "parser.y"\r
 { yyval.type = make_type(RPC_FC_FLOAT, NULL); ;\r
     break;}\r
 case 178:\r
-#line 567 "parser.y"\r
+#line 568 "parser.y"\r
 { yyval.type = make_type(RPC_FC_DOUBLE, NULL); ;\r
     break;}\r
 case 179:\r
-#line 568 "parser.y"\r
-{ yyval.type = make_type(RPC_FC_BYTE, &std_bool); /* ? */ ;\r
+#line 569 "parser.y"\r
+{ yyval.type = make_type(RPC_FC_SMALL, &std_bool); ;\r
     break;}\r
 case 180:\r
-#line 569 "parser.y"\r
+#line 570 "parser.y"\r
 { yyval.type = make_type(RPC_FC_ERROR_STATUS_T, NULL); ;\r
     break;}\r
 case 181:\r
-#line 570 "parser.y"\r
-{ yyval.type = make_type(RPC_FC_BIND_PRIMITIVE, NULL); /* ? */ ;\r
+#line 571 "parser.y"\r
+{ yyval.type = make_type(RPC_FC_IGNORE, NULL); ;\r
     break;}\r
 case 184:\r
-#line 577 "parser.y"\r
+#line 578 "parser.y"\r
 { yyval.type = make_type(RPC_FC_LONG, &std_int); ;\r
     break;}\r
 case 185:\r
-#line 578 "parser.y"\r
-{ yyval.type = make_type(RPC_FC_SHORT, NULL); ;\r
+#line 579 "parser.y"\r
+{ yyval.type = make_type(RPC_FC_SMALL, NULL); ;\r
     break;}\r
 case 186:\r
-#line 579 "parser.y"\r
-{ yyval.type = make_type(RPC_FC_LONG, NULL); ;\r
+#line 580 "parser.y"\r
+{ yyval.type = make_type(RPC_FC_SHORT, NULL); ;\r
     break;}\r
 case 187:\r
-#line 580 "parser.y"\r
-{ yyval.type = make_type(RPC_FC_HYPER, NULL); ;\r
+#line 581 "parser.y"\r
+{ yyval.type = make_type(RPC_FC_LONG, NULL); ;\r
     break;}\r
 case 188:\r
-#line 581 "parser.y"\r
-{ yyval.type = make_type(RPC_FC_HYPER, &std_int64); ;\r
+#line 582 "parser.y"\r
+{ yyval.type = make_type(RPC_FC_HYPER, NULL); ;\r
     break;}\r
 case 189:\r
-#line 582 "parser.y"\r
-{ yyval.type = make_type(RPC_FC_CHAR, NULL); ;\r
+#line 583 "parser.y"\r
+{ yyval.type = make_type(RPC_FC_HYPER, &std_int64); ;\r
     break;}\r
 case 190:\r
-#line 585 "parser.y"\r
-{ yyval.clas = make_class(yyvsp[0].str); ;\r
+#line 584 "parser.y"\r
+{ yyval.type = make_type(RPC_FC_CHAR, NULL); ;\r
     break;}\r
 case 191:\r
-#line 586 "parser.y"\r
+#line 587 "parser.y"\r
 { yyval.clas = make_class(yyvsp[0].str); ;\r
     break;}\r
 case 192:\r
-#line 589 "parser.y"\r
+#line 588 "parser.y"\r
+{ yyval.clas = make_class(yyvsp[0].str); ;\r
+    break;}\r
+case 193:\r
+#line 591 "parser.y"\r
 { yyval.clas = yyvsp[0].clas;\r
                                                  yyval.clas->attrs = yyvsp[-1].attr;\r
                                                   if (!parse_only && do_header) write_coclass(yyval.clas);\r
                                                ;\r
     break;}\r
-case 193:\r
-#line 595 "parser.y"\r
+case 194:\r
+#line 597 "parser.y"\r
 { yyval.clas = yyvsp[-3].clas;\r
                                                  yyval.clas->ifaces = yyvsp[-1].ifref;\r
                                                ;\r
     break;}\r
-case 194:\r
-#line 600 "parser.y"\r
-{ yyval.ifref = NULL; ;\r
-    break;}\r
 case 195:\r
-#line 601 "parser.y"\r
-{ LINK(yyvsp[0].ifref, yyvsp[-1].ifref); yyval.ifref = yyvsp[0].ifref; ;\r
+#line 602 "parser.y"\r
+{ yyval.ifref = NULL; ;\r
     break;}\r
 case 196:\r
-#line 605 "parser.y"\r
-{ yyval.ifref = make_ifref(yyvsp[0].type); yyval.ifref->attrs = yyvsp[-1].attr; ;\r
+#line 603 "parser.y"\r
+{ LINK(yyvsp[0].ifref, yyvsp[-1].ifref); yyval.ifref = yyvsp[0].ifref; ;\r
     break;}\r
 case 197:\r
-#line 608 "parser.y"\r
-{ yyval.type = get_type(0, yyvsp[0].str, 0); ;\r
+#line 607 "parser.y"\r
+{ yyval.ifref = make_ifref(yyvsp[0].type); yyval.ifref->attrs = yyvsp[-1].attr; ;\r
     break;}\r
 case 198:\r
-#line 609 "parser.y"\r
+#line 610 "parser.y"\r
 { yyval.type = get_type(0, yyvsp[0].str, 0); ;\r
     break;}\r
 case 199:\r
-#line 612 "parser.y"\r
+#line 611 "parser.y"\r
+{ yyval.type = get_type(0, yyvsp[0].str, 0); ;\r
+    break;}\r
+case 200:\r
+#line 614 "parser.y"\r
 { yyval.type = yyvsp[0].type;\r
                                                  if (yyval.type->defined) yyerror("multiple definition error\n");\r
                                                  yyval.type->attrs = yyvsp[-1].attr;\r
@@ -2198,48 +2204,48 @@ case 199:
                                                  if (!parse_only && do_header) write_forward(yyval.type);\r
                                                ;\r
     break;}\r
-case 200:\r
-#line 624 "parser.y"\r
+case 201:\r
+#line 626 "parser.y"\r
 { yyval.var = NULL; ;\r
     break;}\r
-case 201:\r
-#line 625 "parser.y"\r
+case 202:\r
+#line 627 "parser.y"\r
 { LINK(yyvsp[-1].var, yyvsp[-2].var); yyval.var = yyvsp[-1].var; ;\r
     break;}\r
-case 202:\r
-#line 628 "parser.y"\r
+case 203:\r
+#line 630 "parser.y"\r
 { yyval.func = NULL; ;\r
     break;}\r
-case 203:\r
-#line 629 "parser.y"\r
+case 204:\r
+#line 631 "parser.y"\r
 { LINK(yyvsp[-1].func, yyvsp[-2].func); yyval.func = yyvsp[-1].func; ;\r
     break;}\r
-case 204:\r
-#line 635 "parser.y"\r
+case 205:\r
+#line 637 "parser.y"\r
 { yyval.type = yyvsp[-4].type;\r
                                                  yyval.type->fields = yyvsp[-2].var;\r
                                                  yyval.type->funcs = yyvsp[-1].func;\r
                                                  if (!parse_only && do_header) write_dispinterface(yyval.type);\r
                                                ;\r
     break;}\r
-case 205:\r
-#line 647 "parser.y"\r
-{ yyval.type = NULL; ;\r
-    break;}\r
 case 206:\r
-#line 648 "parser.y"\r
-{ yyval.type = find_type2(yyvsp[0].str, 0); ;\r
+#line 649 "parser.y"\r
+{ yyval.type = NULL; ;\r
     break;}\r
 case 207:\r
-#line 651 "parser.y"\r
-{ yyval.type = get_type(RPC_FC_IP, yyvsp[0].str, 0); ;\r
+#line 650 "parser.y"\r
+{ yyval.type = find_type2(yyvsp[0].str, 0); ;\r
     break;}\r
 case 208:\r
-#line 652 "parser.y"\r
+#line 653 "parser.y"\r
 { yyval.type = get_type(RPC_FC_IP, yyvsp[0].str, 0); ;\r
     break;}\r
 case 209:\r
-#line 655 "parser.y"\r
+#line 654 "parser.y"\r
+{ yyval.type = get_type(RPC_FC_IP, yyvsp[0].str, 0); ;\r
+    break;}\r
+case 210:\r
+#line 657 "parser.y"\r
 { yyval.type = yyvsp[0].type;\r
                                                  if (yyval.type->defined) yyerror("multiple definition error\n");\r
                                                  yyval.type->attrs = yyvsp[-1].attr;\r
@@ -2247,16 +2253,16 @@ case 209:
                                                  if (!parse_only && do_header) write_forward(yyval.type);\r
                                                ;\r
     break;}\r
-case 210:\r
-#line 664 "parser.y"\r
+case 211:\r
+#line 666 "parser.y"\r
 { yyval.type = yyvsp[-4].type;\r
                                                  yyval.type->ref = yyvsp[-3].type;\r
                                                  yyval.type->funcs = yyvsp[-1].func;\r
                                                  if (!parse_only && do_header) write_interface(yyval.type);\r
                                                ;\r
     break;}\r
-case 211:\r
-#line 672 "parser.y"\r
+case 212:\r
+#line 674 "parser.y"\r
 { yyval.type = yyvsp[-6].type;\r
                                                  yyval.type->ref = find_type2(yyvsp[-4].str, 0);\r
                                                  if (!yyval.type->ref) yyerror("base class %s not found in import\n", yyvsp[-4].str);\r
@@ -2264,65 +2270,65 @@ case 211:
                                                  if (!parse_only && do_header) write_interface(yyval.type);\r
                                                ;\r
     break;}\r
-case 212:\r
-#line 678 "parser.y"\r
-{ yyval.type = yyvsp[0].type; ;\r
-    break;}\r
 case 213:\r
-#line 682 "parser.y"\r
-{ yyval.type = yyvsp[-1].type; if (!parse_only && do_header) write_forward(yyval.type); ;\r
+#line 680 "parser.y"\r
+{ yyval.type = yyvsp[0].type; ;\r
     break;}\r
 case 214:\r
-#line 683 "parser.y"\r
+#line 684 "parser.y"\r
 { yyval.type = yyvsp[-1].type; if (!parse_only && do_header) write_forward(yyval.type); ;\r
     break;}\r
 case 215:\r
-#line 686 "parser.y"\r
-{ yyval.type = make_type(0, NULL); yyval.type->name = yyvsp[0].str; ;\r
+#line 685 "parser.y"\r
+{ yyval.type = yyvsp[-1].type; if (!parse_only && do_header) write_forward(yyval.type); ;\r
     break;}\r
 case 216:\r
-#line 687 "parser.y"\r
+#line 688 "parser.y"\r
 { yyval.type = make_type(0, NULL); yyval.type->name = yyvsp[0].str; ;\r
     break;}\r
 case 217:\r
-#line 690 "parser.y"\r
+#line 689 "parser.y"\r
+{ yyval.type = make_type(0, NULL); yyval.type->name = yyvsp[0].str; ;\r
+    break;}\r
+case 218:\r
+#line 692 "parser.y"\r
 { yyval.type = yyvsp[0].type;\r
                                                  yyval.type->attrs = yyvsp[-1].attr;\r
                                                ;\r
     break;}\r
-case 218:\r
-#line 695 "parser.y"\r
+case 219:\r
+#line 697 "parser.y"\r
 { yyval.type = yyvsp[-3].type;\r
                                                  yyval.type->funcs = yyvsp[-1].func;\r
                                                  /* FIXME: if (!parse_only && do_header) write_module($$); */\r
                                                ;\r
     break;}\r
-case 219:\r
-#line 701 "parser.y"\r
+case 220:\r
+#line 703 "parser.y"\r
 { yyval.var = yyvsp[0].var; yyval.var->ptr_level++; ;\r
     break;}\r
-case 220:\r
-#line 702 "parser.y"\r
+case 221:\r
+#line 704 "parser.y"\r
 { yyval.var = yyvsp[0].var; /* FIXME */ ;\r
     break;}\r
-case 223:\r
-#line 707 "parser.y"\r
+case 224:\r
+#line 709 "parser.y"\r
 { yyval.var = yyvsp[-1].var; ;\r
     break;}\r
-case 225:\r
-#line 712 "parser.y"\r
+case 226:\r
+#line 714 "parser.y"\r
 { LINK(yyvsp[0].var, yyvsp[-2].var); yyval.var = yyvsp[0].var; ;\r
     break;}\r
-case 226:\r
-#line 716 "parser.y"\r
+case 227:\r
+#line 718 "parser.y"\r
 { yyval.num = RPC_FC_RP; ;\r
     break;}\r
-case 227:\r
-#line 717 "parser.y"\r
+case 228:\r
+#line 719 "parser.y"\r
 { yyval.num = RPC_FC_UP; ;\r
     break;}\r
-case 228:\r
-#line 720 "parser.y"\r
+case 229:\r
+#line 722 "parser.y"\r
 { yyval.type = get_typev(RPC_FC_STRUCT, yyvsp[-3].var, tsSTRUCT);\r
                                                  /* overwrite RPC_FC_STRUCT with a more exact type */\r
                                                  yyval.type->type = get_struct_type( yyvsp[-1].var );\r
@@ -2332,48 +2338,48 @@ case 228:
                                                    add_struct(yyval.type);\r
                                                ;\r
     break;}\r
-case 229:\r
-#line 730 "parser.y"\r
-{ yyval.tref = make_tref(NULL, make_type(0, NULL)); ;\r
-    break;}\r
 case 230:\r
-#line 731 "parser.y"\r
-{ yyval.tref = make_tref(yyvsp[0].str, find_type(yyvsp[0].str, 0)); ;\r
-    break;}\r
-case 231:\r
 #line 732 "parser.y"\r
-{ yyval.tref = make_tref(NULL, yyvsp[0].type); ;\r
+{ yyval.tref = make_tref(NULL, make_type(0, NULL)); ;\r
     break;}\r
-case 232:\r
+case 231:\r
 #line 733 "parser.y"\r
-{ yyval.tref = uniq_tref(yyvsp[0].tref); yyval.tref->ref->is_const = TRUE; ;\r
+{ yyval.tref = make_tref(yyvsp[0].str, find_type(yyvsp[0].str, 0)); ;\r
     break;}\r
-case 233:\r
+case 232:\r
 #line 734 "parser.y"\r
 { yyval.tref = make_tref(NULL, yyvsp[0].type); ;\r
     break;}\r
-case 234:\r
+case 233:\r
 #line 735 "parser.y"\r
-{ yyval.tref = make_tref(NULL, find_type2(yyvsp[0].str, tsENUM)); ;\r
+{ yyval.tref = uniq_tref(yyvsp[0].tref); yyval.tref->ref->is_const = TRUE; ;\r
     break;}\r
-case 235:\r
+case 234:\r
 #line 736 "parser.y"\r
 { yyval.tref = make_tref(NULL, yyvsp[0].type); ;\r
     break;}\r
-case 236:\r
+case 235:\r
 #line 737 "parser.y"\r
-{ yyval.tref = make_tref(NULL, get_type(RPC_FC_STRUCT, yyvsp[0].str, tsSTRUCT)); ;\r
+{ yyval.tref = make_tref(NULL, find_type2(yyvsp[0].str, tsENUM)); ;\r
     break;}\r
-case 237:\r
+case 236:\r
 #line 738 "parser.y"\r
 { yyval.tref = make_tref(NULL, yyvsp[0].type); ;\r
     break;}\r
-case 238:\r
+case 237:\r
 #line 739 "parser.y"\r
-{ yyval.tref = make_tref(NULL, find_type2(yyvsp[0].str, tsUNION)); ;\r
+{ yyval.tref = make_tref(NULL, get_type(RPC_FC_STRUCT, yyvsp[0].str, tsSTRUCT)); ;\r
+    break;}\r
+case 238:\r
+#line 740 "parser.y"\r
+{ yyval.tref = make_tref(NULL, yyvsp[0].type); ;\r
     break;}\r
 case 239:\r
-#line 742 "parser.y"\r
+#line 741 "parser.y"\r
+{ yyval.tref = make_tref(NULL, find_type2(yyvsp[0].str, tsUNION)); ;\r
+    break;}\r
+case 240:\r
+#line 744 "parser.y"\r
 { typeref_t *tref = uniq_tref(yyvsp[-1].tref); \r
                                                  yyvsp[0].var->tname = tref->name;\r
                                                  tref->name = NULL;\r
@@ -2385,15 +2391,15 @@ case 239:
                                                  reg_types(yyval.type, yyvsp[0].var, 0);\r
                                                ;\r
     break;}\r
-case 240:\r
-#line 754 "parser.y"\r
+case 241:\r
+#line 756 "parser.y"\r
 { yyval.type = get_typev(RPC_FC_NON_ENCAPSULATED_UNION, yyvsp[-3].var, tsUNION);\r
                                                  yyval.type->fields = yyvsp[-1].var;\r
                                                  yyval.type->defined = TRUE;\r
                                                ;\r
     break;}\r
-case 241:\r
-#line 760 "parser.y"\r
+case 242:\r
+#line 762 "parser.y"\r
 { var_t *u = yyvsp[-3].var;\r
                                                  yyval.type = get_typev(RPC_FC_ENCAPSULATED_UNION, yyvsp[-8].var, tsUNION);\r
                                                  if (!u) u = make_var("tagged_union");\r
@@ -2404,12 +2410,12 @@ case 241:
                                                  yyval.type->defined = TRUE;\r
                                                ;\r
     break;}\r
-case 242:\r
-#line 772 "parser.y"\r
+case 243:\r
+#line 774 "parser.y"\r
 { yyval.num = MAKELONG(yyvsp[0].num, 0); ;\r
     break;}\r
-case 243:\r
-#line 773 "parser.y"\r
+case 244:\r
+#line 775 "parser.y"\r
 { yyval.num = MAKELONG(yyvsp[-2].num, yyvsp[0].num); ;\r
     break;}\r
 }\r
@@ -2634,7 +2640,7 @@ yyerrhandle:
     }\r
   return 1;\r
 }\r
-#line 776 "parser.y"\r
+#line 778 "parser.y"\r
 \r
 \r
 static attr_t *make_attr(enum attr_type type)\r
index 72763e4..4ae1eb3 100644 (file)
@@ -107,30 +107,31 @@ typedef union {
 #define        tSIGNED 350\r
 #define        tSIZEIS 351\r
 #define        tSIZEOF 352\r
-#define        tSOURCE 353\r
-#define        tSTDCALL        354\r
-#define        tSTRING 355\r
-#define        tSTRUCT 356\r
-#define        tSWITCH 357\r
-#define        tSWITCHIS       358\r
-#define        tSWITCHTYPE     359\r
-#define        tTRANSMITAS     360\r
-#define        tTYPEDEF        361\r
-#define        tUNION  362\r
-#define        tUNIQUE 363\r
-#define        tUNSIGNED       364\r
-#define        tUUID   365\r
-#define        tV1ENUM 366\r
-#define        tVARARG 367\r
-#define        tVERSION        368\r
-#define        tVOID   369\r
-#define        tWCHAR  370\r
-#define        tWIREMARSHAL    371\r
-#define        tPOINTERTYPE    372\r
-#define        COND    373\r
-#define        CAST    374\r
-#define        PPTR    375\r
-#define        NEG     376\r
+#define        tSMALL  353\r
+#define        tSOURCE 354\r
+#define        tSTDCALL        355\r
+#define        tSTRING 356\r
+#define        tSTRUCT 357\r
+#define        tSWITCH 358\r
+#define        tSWITCHIS       359\r
+#define        tSWITCHTYPE     360\r
+#define        tTRANSMITAS     361\r
+#define        tTYPEDEF        362\r
+#define        tUNION  363\r
+#define        tUNIQUE 364\r
+#define        tUNSIGNED       365\r
+#define        tUUID   366\r
+#define        tV1ENUM 367\r
+#define        tVARARG 368\r
+#define        tVERSION        369\r
+#define        tVOID   370\r
+#define        tWCHAR  371\r
+#define        tWIREMARSHAL    372\r
+#define        tPOINTERTYPE    373\r
+#define        COND    374\r
+#define        CAST    375\r
+#define        PPTR    376\r
+#define        NEG     377\r
 \r
 \r
 extern YYSTYPE yylval;\r