Reorder the virtual table definition so it's defined before it is used
in widl header output.
diff --git a/tools/widl/header.c b/tools/widl/header.c
index 80d8809..90b93ca 100644
--- a/tools/widl/header.c
+++ b/tools/widl/header.c
@@ -827,17 +827,16 @@
}
fprintf(header, "#else\n");
/* C interface */
- fprintf(header, "typedef struct %sVtbl %sVtbl;\n", iface->name, iface->name);
- fprintf(header, "interface %s {\n", iface->name);
- fprintf(header, " const %sVtbl* lpVtbl;\n", iface->name);
- fprintf(header, "};\n");
- fprintf(header, "struct %sVtbl {\n", iface->name);
+ fprintf(header, "typedef struct %sVtbl {\n", iface->name);
indentation++;
fprintf(header, " BEGIN_INTERFACE\n");
fprintf(header, "\n");
write_c_method_def(iface);
indentation--;
fprintf(header, " END_INTERFACE\n");
+ fprintf(header, "} %sVtbl;\n", iface->name);
+ fprintf(header, "interface %s {\n", iface->name);
+ fprintf(header, " const %sVtbl* lpVtbl;\n", iface->name);
fprintf(header, "};\n");
fprintf(header, "\n");
fprintf(header, "#ifdef COBJMACROS\n");
@@ -894,17 +893,16 @@
fprintf(header, "};\n");
fprintf(header, "#else\n");
/* C interface */
- fprintf(header, "typedef struct %sVtbl %sVtbl;\n", iface->name, iface->name);
- fprintf(header, "interface %s {\n", iface->name);
- fprintf(header, " const %sVtbl* lpVtbl;\n", iface->name);
- fprintf(header, "};\n");
- fprintf(header, "struct %sVtbl {\n", iface->name);
+ fprintf(header, "typedef struct %sVtbl {\n", iface->name);
indentation++;
fprintf(header, " BEGIN_INTERFACE\n");
fprintf(header, "\n");
write_c_disp_method_def(iface);
indentation--;
fprintf(header, " END_INTERFACE\n");
+ fprintf(header, "} %sVtbl;\n", iface->name);
+ fprintf(header, "interface %s {\n", iface->name);
+ fprintf(header, " const %sVtbl* lpVtbl;\n", iface->name);
fprintf(header, "};\n");
fprintf(header, "\n");
fprintf(header, "#ifdef COBJMACROS\n");