Fix some type outputs.


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@3557 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-tools/genidl/src/genidl_dumpidl.c b/mingw-w64-tools/genidl/src/genidl_dumpidl.c
index 1283044..733aebe 100644
--- a/mingw-w64-tools/genidl/src/genidl_dumpidl.c
+++ b/mingw-w64-tools/genidl/src/genidl_dumpidl.c
@@ -537,6 +537,21 @@
   char *guard = NULL;
   int befirst;
   befirst = 1;
+  if (!behdr)
+  {
+    fprintf (fp, "/* Typedef definitions of basic types.  */\n"
+      "typedef unsigned short USHORT;\n"
+      "typedef signed short SHORT;\n"
+      "typedef unsigned char UCHAR;\n"
+      "typedef signed char CHAR;\n"
+      "typedef unsigned int UINT;\n"
+      "typedef signed int INT;\n"
+      "typedef int WINBOOL;\n"
+      "typedef struct _tagVARIANT VARIANT;\n"
+      "typedef unsigned short *BSTR;\n"
+      "typedef int SCODE;\n"
+      "typedef struct _CY CY;\n");
+  }
   for (i=0;i<tl->nr_typinfos;i++)
     {
       if (tl->typb[i].kind != TKIND_INTERFACE)
@@ -564,6 +579,7 @@
   befirst = 1;
   for (i=0;i<tl->nr_typinfos;i++)
     {
+      char *hn;
       if (tl->typb[i].kind != TKIND_RECORD)
 	continue;
       if (befirst)
@@ -575,7 +591,10 @@
         guard = mk_guard (tl->typb[i].name, "_FORWARDER_DEFINED");
       if (guard && *guard != 0)
         fprintf (fp, "#ifndef %s\n#define %s\n", guard, guard);
-      fprintf (fp, "%s;\n", tl->typb[i].name);
+      if ((hn = strchr (tl->typb[i].name, ' ')) == NULL)
+        hn = tl->typb[i].name;
+      else hn++;
+      fprintf (fp, "typedef %s %s;\n", tl->typb[i].name, hn);
       if (guard)
         {
 	  if (*guard != 0)
@@ -589,6 +608,7 @@
   befirst = 1;
   for (i=0;i<tl->nr_typinfos;i++)
     {
+      char *hn;
       if (tl->typb[i].kind != TKIND_UNION)
 	continue;
       if (befirst)
@@ -600,7 +620,10 @@
         guard = mk_guard (tl->typb[i].name, "_FORWARDER_DEFINED");
       if (guard && *guard != 0)
         fprintf (fp, "#ifndef %s\n#define %s\n", guard, guard);
-      fprintf (fp, "%s;\n", tl->typb[i].name);
+      if ((hn = strchr (tl->typb[i].name, ' ')) == NULL)
+        hn = tl->typb[i].name;
+      else hn++;
+      fprintf (fp, "typedef %s %s;\n", tl->typb[i].name, hn);
       if (guard)
         {
 	  if (*guard != 0)
@@ -618,7 +641,7 @@
 	continue;
       if (befirst)
 	{
-	  fprintf (fp, "/* Union record forward declarations.  */\n");
+	  fprintf (fp, "/* Dispatch record forward declarations.  */\n");
 	  befirst = 0;
 	}
       if (behdr)
@@ -643,7 +666,7 @@
 	continue;
       if (befirst)
 	{
-	  fprintf (fp, "/* Union record forward declarations.  */\n");
+	  fprintf (fp, "/* Coclass record forward declarations.  */\n");
 	  befirst = 0;
 	}
       if (behdr)
diff --git a/mingw-w64-tools/genidl/src/genidl_typeinfo.c b/mingw-w64-tools/genidl/src/genidl_typeinfo.c
index da110ed..e26aaa0 100644
--- a/mingw-w64-tools/genidl/src/genidl_typeinfo.c
+++ b/mingw-w64-tools/genidl/src/genidl_typeinfo.c
@@ -983,7 +983,7 @@
   case 8: /* VT_BSTR */ name = "BSTR"; sz = 0xfffffffe; break;
   case 9: /* VT_DISPATCH */ name = "IDispatch *"; sz = 0xffffffff; break;
   case 10: /* VT_ERROR */ name = "SCODE"; sz = 4; break;
-  case 11: /* VT_BOOL */ name = "BOOL"; sz = 2; break;
+  case 11: /* VT_BOOL */ name = "WINBOOL"; sz = 2; break;
   case 12: /* VT_VARIANT */ name = "VARIANT"; sz = 0xffffffff; break;
   case 13: /* VT_UNKNOWN */ name = "IUnknown *"; sz = 0xffffffff; break;
   case 14: /* VT_DECIMAL */ name = "DECIMAL"; sz = 16; break;
@@ -1242,7 +1242,7 @@
 	case 10: /* VT_ERROR */
           fprintf (fp, "(SCODE) %d", u.i4); break;
 	case 11: /* VT_BOOL */
-          fprintf (fp, "(BOOL) %d", u.i2); break;
+          fprintf (fp, "(WINBOOL) %d", u.i2); break;
 	case 12: /* VT_VARIANT */
           fprintf (fp, "(VARIANT) 0x%x", u.ui4); break;
 	case 13: /* VT_UNKNOWN */
@@ -1267,7 +1267,7 @@
 #ifdef _WIN32
           fprintf (fp, "(ULONGLONG) 0x%I64xULL", u.ui8); break;
 #else
-          fprintf (fp, "(LONGLONG) 0x%llxULL", u.ui8); break;
+          fprintf (fp, "(ULONGLONG) 0x%llxULL", u.ui8); break;
 #endif
 	case 22: /* VT_INT */
           fprintf (fp, "(int) %d", u.i4); break;