PATCH: typelib debug/invoke

Marcus Meissner marcus at jet.franken.de
Fri Jun 7 17:07:09 CDT 2002


Hi

License: LGPL
Changelog:
	Added some debugoutput functions for TYPEATTR, IDLDESC, VARDESC.
	Support more parameters in _invoke (needed for
	IDispatch::Invoke in the marshaller)

Index: typelib.c
===================================================================
RCS file: /home/wine/wine/dlls/oleaut32/typelib.c,v
retrieving revision 1.70
diff -u -r1.70 typelib.c
--- typelib.c	4 Jun 2002 00:50:11 -0000	1.70
+++ typelib.c	7 Jun 2002 22:06:01 -0000
@@ -878,14 +878,14 @@
     }
 }
 
-static void dump_ELEMDESC(ELEMDESC *edesc) {
+void dump_ELEMDESC(ELEMDESC *edesc) {
   char buf[200];
   dump_TypeDesc(&edesc->tdesc,buf);
   MESSAGE("\t\ttdesc.vartype %d (%s)\n",edesc->tdesc.vt,buf);
   MESSAGE("\t\tu.parmadesc.flags %x\n",edesc->u.paramdesc.wParamFlags);
   MESSAGE("\t\tu.parmadesc.lpex %p\n",edesc->u.paramdesc.pparamdescex);
 }
-static void dump_FUNCDESC(FUNCDESC *funcdesc) {
+void dump_FUNCDESC(FUNCDESC *funcdesc) {
   int i;
   MESSAGE("memid is %08lx\n",funcdesc->memid);
   for (i=0;i<funcdesc->cParams;i++) {
@@ -920,6 +920,45 @@
   MESSAGE("\tcParamsOpt: %d\n", funcdesc->cParamsOpt);
   MESSAGE("\twFlags: %x\n", funcdesc->wFuncFlags);
 }
+
+void dump_IDLDESC(IDLDESC *idl) {
+  MESSAGE("\t\twIdlflags: %d\n",idl->wIDLFlags);
+}
+
+static char * typekind_desc[] =
+{
+	"TKIND_ENUM",
+	"TKIND_RECORD",
+	"TKIND_MODULE",
+	"TKIND_INTERFACE",
+	"TKIND_DISPATCH",
+	"TKIND_COCLASS",
+	"TKIND_ALIAS",
+	"TKIND_UNION",
+	"TKIND_MAX"
+};
+
+void dump_TYPEATTR(TYPEATTR *tattr) {
+  char buf[200];
+  MESSAGE("\tguid: %s\n",debugstr_guid(&tattr->guid));
+  MESSAGE("\tlcid: %ld\n",tattr->lcid);
+  MESSAGE("\tmemidConstructor: %ld\n",tattr->memidConstructor);
+  MESSAGE("\tmemidDestructor: %ld\n",tattr->memidDestructor);
+  MESSAGE("\tschema: %s\n",debugstr_w(tattr->lpstrSchema));
+  MESSAGE("\tsizeInstance: %ld\n",tattr->cbSizeInstance);
+  MESSAGE("\tkind:%s\n", typekind_desc[tattr->typekind]);
+  MESSAGE("\tcFuncs: %d\n", tattr->cFuncs);
+  MESSAGE("\tcVars: %d\n", tattr->cVars);
+  MESSAGE("\tcImplTypes: %d\n", tattr->cImplTypes);
+  MESSAGE("\tcbSizeVft: %d\n", tattr->cbSizeVft);
+  MESSAGE("\tcbAlignment: %d\n", tattr->cbAlignment);
+  MESSAGE("\twTypeFlags: %d\n", tattr->wTypeFlags);
+  MESSAGE("\tVernum: %d.%d\n", tattr->wMajorVerNum,tattr->wMinorVerNum);
+  dump_TypeDesc(&tattr->tdescAlias,buf);
+  MESSAGE("\ttypedesc: %s\n", buf);
+  dump_IDLDESC(&tattr->idldescType);
+}
+
 static void dump_TLBFuncDescOne(TLBFuncDesc * pfd)
 {
   int i;
@@ -1076,19 +1115,6 @@
     }
 }
 
-static char * typekind_desc[] =
-{
-	"TKIND_ENUM",
-	"TKIND_RECORD",
-	"TKIND_MODULE",
-	"TKIND_INTERFACE",
-	"TKIND_DISPATCH",
-	"TKIND_COCLASS",
-	"TKIND_ALIAS",
-	"TKIND_UNION",
-	"TKIND_MAX"
-};
-
 static void dump_TypeInfo(ITypeInfoImpl * pty)
 {
     TRACE("%p ref=%u\n", pty, pty->ref);
@@ -1103,6 +1129,16 @@
     dump_TLBImplType(pty->impltypelist);
 }
 
+void dump_VARDESC(VARDESC *v)
+{
+    MESSAGE("memid %d\n",v->memid);
+    MESSAGE("lpstrSchema %s\n",debugstr_w(v->lpstrSchema));
+    MESSAGE("oInst %d\n",v->u.oInst);
+    dump_ELEMDESC(&(v->elemdescVar));
+    MESSAGE("wVarFlags %lx\n",v->wVarFlags);
+    MESSAGE("varkind %d\n",v->varkind);
+}
+
 static TYPEDESC stndTypeDesc[VT_LPWSTR+1]=
 {
     /* VT_LPWSTR is largest type that */
@@ -4010,6 +4046,16 @@
 	case 7: {
 		DWORD (WINAPI *xfunc)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD) = func;
 		res = xfunc(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);
+		break;
+	}
+	case 8: {
+		DWORD (WINAPI *xfunc)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD) = func;
+		res = xfunc(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7]);
+		break;
+	}
+	case 9: {
+		DWORD (WINAPI *xfunc)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD) = func;
+		res = xfunc(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8]);
 		break;
 	}
 	default:



More information about the wine-patches mailing list