Signed-off-by: Kevin Puetz PuetzKevinA@JohnDeere.com -- Misplaced a hunk into 13/13 that belonged here. --- dlls/oleaut32/tests/typelib.c | 275 +++++++++++++++++++++++++++++++++- 1 file changed, 267 insertions(+), 8 deletions(-)
diff --git a/dlls/oleaut32/tests/typelib.c b/dlls/oleaut32/tests/typelib.c index d4b573eb7a..8ecdec4c13 100644 --- a/dlls/oleaut32/tests/typelib.c +++ b/dlls/oleaut32/tests/typelib.c @@ -4315,6 +4315,12 @@ static const char *dump_variant_info(const VARIANT *v) return buf; }
+static const char *dump_custdata_info(LPCUSTDATAITEM item) { + static char buf[256]; + sprintf(buf, "{ "%s", %s }", wine_dbgstr_guid(&item->guid), dump_variant_info(&item->varValue)); + return buf; +} + static int get_href_type(ITypeInfo *info, TYPEDESC *tdesc) { int href_type = -1; @@ -4342,10 +4348,12 @@ static int get_href_type(ITypeInfo *info, TYPEDESC *tdesc) static void test_dump_typelib(const WCHAR *name) { ITypeInfo *info; + ITypeInfo2 *info2; ITypeLib *lib; int count; int i; HREFTYPE hRefType = 0; + CUSTDATA cust_data;
OLE_CHECK(LoadTypeLib(name, &lib));
@@ -4357,7 +4365,7 @@ static void test_dump_typelib(const WCHAR *name) TYPEATTR *attr; BSTR name; DWORD help_ctx; - int f = 0, v = 0; + int f = 0, v = 0, c = 0;
OLE_CHECK(ITypeLib_GetDocumentation(lib, i, &name, NULL, &help_ctx, NULL)); printf("{\n" @@ -4370,7 +4378,10 @@ static void test_dump_typelib(const WCHAR *name) ITypeInfo_Release(info); info = refInfo; } + OLE_CHECK(ITypeInfo_QueryInterface(info, &IID_ITypeInfo2, (void**)&info2)); + OLE_CHECK(ITypeInfo_GetTypeAttr(info, &attr)); + OLE_CHECK(ITypeInfo2_GetAllCustData(info2,&cust_data));
printf(" "%s",\n", wine_dbgstr_guid(&attr->guid));
@@ -4381,6 +4392,13 @@ static void test_dump_typelib(const WCHAR *name) help_ctx, MAKELONG(attr->wMinorVerNum, attr->wMajorVerNum), attr->cbSizeVft/sizeof(void*), attr->cFuncs, attr->cVars);
+ printf(" /*#custdata*/ %d, %s\n", cust_data.cCustData, cust_data.cCustData ? "{" : "{},"); + for (c = 0; c < cust_data.cCustData; ++c) { + printf(" %s,\n", dump_custdata_info(&cust_data.prgCustData[c])); + } + if (cust_data.cCustData) printf(" },\n"); + ClearCustData(&cust_data); + printf(" { /* funcs */%s", attr->cFuncs ? "\n" : " },\n"); while (1) { @@ -4391,6 +4409,7 @@ static void test_dump_typelib(const WCHAR *name)
if (FAILED(ITypeInfo_GetFuncDesc(info, f, &desc))) break; + OLE_CHECK(ITypeInfo2_GetAllFuncCustData(info2,f,&cust_data)); printf(" {\n" " /*id*/ 0x%x, /*func*/ %s, /*inv*/ %s, /*call*/ %s,\n", desc->memid, map_value(desc->funckind, funckind_map), map_value(desc->invkind, invkind_map), @@ -4399,12 +4418,30 @@ static void test_dump_typelib(const WCHAR *name) desc->cParams, desc->cParamsOpt, desc->oVft/sizeof(void*), desc->cScodes, dump_func_flags(desc->wFuncFlags)); printf(" {%s, %s, %s}, /* ret */\n", map_value(desc->elemdescFunc.tdesc.vt, vt_map), map_value(get_href_type(info, &desc->elemdescFunc.tdesc), tkind_map), dump_param_flags(U(desc->elemdescFunc).paramdesc.wParamFlags)); + printf(" /*#custdata*/ %d, %s\n", cust_data.cCustData, cust_data.cCustData ? "{" : "{},"); + for (c = 0; c < cust_data.cCustData; ++c) { + printf(" %s,\n", dump_custdata_info(&cust_data.prgCustData[c])); + } + if (cust_data.cCustData) printf(" },\n"); + ClearCustData(&cust_data); + printf(" { /* params */\n"); for (p = 0; p < desc->cParams; p++) { ELEMDESC e = desc->lprgelemdescParam[p]; - printf(" {%s, %s, %s},\n", map_value(e.tdesc.vt, vt_map), + OLE_CHECK(ITypeInfo2_GetAllParamCustData(info2,f,p,&cust_data)); + printf(" {%s, %s, %s", map_value(e.tdesc.vt, vt_map), map_value(get_href_type(info, &e.tdesc), tkind_map), dump_param_flags(U(e).paramdesc.wParamFlags)); + if (cust_data.cCustData) { + printf(", /*#custdata*/ %d, {\n", cust_data.cCustData); + for (c = 0; c < cust_data.cCustData; ++c) { + printf(" %s,\n", dump_custdata_info(&cust_data.prgCustData[c])); + } + printf(" } },\n"); + } else { + printf("},\n"); + } + ClearCustData(&cust_data); } printf(" {-1, 0, 0}\n"); printf(" },\n"); @@ -4431,6 +4468,7 @@ static void test_dump_typelib(const WCHAR *name) UINT cNames; if (FAILED(ITypeInfo_GetVarDesc(info, v, &desc))) break; + OLE_CHECK(ITypeInfo2_GetAllVarCustData(info2,v,&cust_data)); OLE_CHECK(ITypeInfo_GetNames(info, desc->memid, &varname, 1, &cNames)); if(cNames!=1) { printf("GetNames failed - VARDESC should have one name, got %d\n", cNames); return; } printf(" {\n" @@ -4444,6 +4482,14 @@ static void test_dump_typelib(const WCHAR *name) } else { printf(" { /* DUMMYUNIONNAME unused*/ },\n"); } + + printf(" /*#custdata*/ %d, %s\n", cust_data.cCustData, cust_data.cCustData ? "{" : "{},"); + for (c = 0; c < cust_data.cCustData; ++c) { + printf(" %s,\n", dump_custdata_info(&cust_data.prgCustData[c])); + } + if (cust_data.cCustData) printf(" },\n"); + ClearCustData(&cust_data); + printf(" {%s, %s, %s}, /* ret */\n", map_value(desc->elemdescVar.tdesc.vt, vt_map), map_value(get_href_type(info, &desc->elemdescVar.tdesc), tkind_map), dump_param_flags(U(desc->elemdescVar).paramdesc.wParamFlags)); printf(" },\n"); @@ -4462,6 +4508,7 @@ static void test_dump_typelib(const WCHAR *name) }
ITypeInfo_ReleaseTypeAttr(info, attr); + ITypeInfo2_Release(info2); ITypeInfo_Release(info); SysFreeString(name); } @@ -4480,11 +4527,18 @@ typedef struct _variant_info { }; } variant_info;
+typedef struct _custdata_info { + LPCSTR uuid; + variant_info value; +} custdata_info; + typedef struct _element_info { VARTYPE vt; TYPEKIND type; USHORT wParamFlags; + DWORD cCustData; + custdata_info custdata[5]; } element_info;
typedef struct _function_info @@ -4499,6 +4553,8 @@ typedef struct _function_info short cScodes; WORD wFuncFlags; element_info ret_type; + DWORD cCustData; + custdata_info custdata[5]; element_info params[15]; LPCSTR names[15]; } function_info; @@ -4513,6 +4569,8 @@ typedef struct _var_info ULONG oInst; /* VAR_PERINSTANCE */ variant_info varValue; /* VAR_CONST */ } DUMMYUNIONNAME; + DWORD cCustData; + custdata_info custdata[5]; element_info elemdescVar; } var_info;
@@ -4529,6 +4587,8 @@ typedef struct _type_info USHORT cbSizeVft; USHORT cFuncs; USHORT cVars; + DWORD cCustData; + custdata_info custdata[5]; function_info funcs[20]; var_info vars[20]; } type_info; @@ -4540,11 +4600,13 @@ static const type_info info[] = { "{b14b6bb5-904e-4ff9-b247-bd361f7a0001}", /*kind*/ TKIND_RECORD, /*flags*/ 0, /*align*/ TYPE_ALIGNMENT(struct g), /*size*/ sizeof(struct g), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 1, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "g1", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 0 }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -4554,11 +4616,13 @@ static const type_info info[] = { "{b14b6bb5-904e-4ff9-b247-bd361f7a0002}", /*kind*/ TKIND_INTERFACE, /*flags*/ 0, /*align*/ TYPE_ALIGNMENT(test_iface*), /*size*/ sizeof(test_iface*), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 4, /*#func*/ 1, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ { /*id*/ 0x60010000, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 3, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FIN}, {-1, 0, 0} @@ -4577,11 +4641,13 @@ static const type_info info[] = { "{b14b6bb5-904e-4ff9-b247-bd361f7aa001}", /*kind*/ TKIND_INTERFACE, /*flags*/ 0, /*align*/ TYPE_ALIGNMENT(parent_iface*), /*size*/ sizeof(parent_iface*), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 4, /*#func*/ 1, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ { /*id*/ 0x60010000, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 3, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FOUT|PARAMFLAG_FRETVAL}, {-1, 0, 0} @@ -4600,11 +4666,13 @@ static const type_info info[] = { "{b14b6bb5-904e-4ff9-b247-bd361f7aa002}", /*kind*/ TKIND_INTERFACE, /*flags*/ 0, /*align*/ TYPE_ALIGNMENT(child_iface*), /*size*/ sizeof(child_iface*), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 5, /*#func*/ 1, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ { /*id*/ 0x60020000, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 4, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -4621,11 +4689,13 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a753903}", /*kind*/ TKIND_RECORD, /*flags*/ 0, /*align*/ TYPE_ALIGNMENT(struct _n), /*size*/ sizeof(struct _n), /*helpctx*/ 0x0003, /*version*/ 0x00010002, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 1, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "n1", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 0 }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -4635,6 +4705,7 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a753902}", /*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FHIDDEN, /*align*/ TYPE_ALIGNMENT(n), /*size*/ sizeof(n), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ }, }, @@ -4643,6 +4714,7 @@ static const type_info info[] = { "{00000000-0000-0000-0000-000000000000}", /*kind*/ TKIND_ALIAS, /*flags*/ 0, /*align*/ TYPE_ALIGNMENT(nn), /*size*/ sizeof(nn), /*helpctx*/ 0x0003, /*version*/ 0x00010002, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ }, }, @@ -4651,11 +4723,13 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a753906}", /*kind*/ TKIND_RECORD, /*flags*/ 0, /*align*/ TYPE_ALIGNMENT(struct _m), /*size*/ sizeof(struct _m), /*helpctx*/ 0x0003, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 1, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "m1", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 0 }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -4665,6 +4739,7 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a753905}", /*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FHIDDEN, /*align*/ TYPE_ALIGNMENT(m), /*size*/ sizeof(m), /*helpctx*/ 0x0000, /*version*/ 0x00010002, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ }, }, @@ -4673,6 +4748,7 @@ static const type_info info[] = { "{00000000-0000-0000-0000-000000000000}", /*kind*/ TKIND_ALIAS, /*flags*/ 0, /*align*/ TYPE_ALIGNMENT(mm), /*size*/ sizeof(mm), /*helpctx*/ 0x0003, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ }, }, @@ -4681,11 +4757,13 @@ static const type_info info[] = { "{b14b6bb5-904e-4ff9-b247-bd361f7aaedd}", /*kind*/ TKIND_DISPATCH, /*flags*/ TYPEFLAG_FDISPATCHABLE|TYPEFLAG_FDUAL, /*align*/ TYPE_ALIGNMENT(IDualIface*), /*size*/ sizeof(IDualIface*), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 7, /*#func*/ 8, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ { /*id*/ 0x60000000, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 2, /*#opt*/ 0, /*vtbl*/ 0, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FIN}, {VT_PTR, -1, PARAMFLAG_FOUT}, @@ -4702,6 +4780,7 @@ static const type_info info[] = { /*id*/ 0x60000001, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 1, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_UI4, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -4714,6 +4793,7 @@ static const type_info info[] = { /*id*/ 0x60000002, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 2, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_UI4, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -4726,6 +4806,7 @@ static const type_info info[] = { /*id*/ 0x60010000, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 3, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FOUT}, {-1, 0, 0} @@ -4740,6 +4821,7 @@ static const type_info info[] = { /*id*/ 0x60010001, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 3, /*#opt*/ 0, /*vtbl*/ 4, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_UINT, -1, PARAMFLAG_FIN}, {VT_UI4, -1, PARAMFLAG_FIN}, @@ -4758,6 +4840,7 @@ static const type_info info[] = { /*id*/ 0x60010002, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 5, /*#opt*/ 0, /*vtbl*/ 5, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FIN}, {VT_PTR, -1, PARAMFLAG_FIN}, @@ -4780,6 +4863,7 @@ static const type_info info[] = { /*id*/ 0x60010003, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 8, /*#opt*/ 0, /*vtbl*/ 6, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_I4, -1, PARAMFLAG_FIN}, {VT_PTR, -1, PARAMFLAG_FIN}, @@ -4808,6 +4892,7 @@ static const type_info info[] = { /*id*/ 0x60020000, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 7, /*#scodes*/ 0, /*flags*/ 0, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -4824,11 +4909,13 @@ static const type_info info[] = { "{b14b6bb5-904e-4ff9-b247-bd361f7aaedd}", /*kind*/ TKIND_INTERFACE, /*flags*/ TYPEFLAG_FDISPATCHABLE|TYPEFLAG_FOLEAUTOMATION|TYPEFLAG_FDUAL, /*align*/ TYPE_ALIGNMENT(IDualIface*), /*size*/ sizeof(IDualIface*), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 8, /*#func*/ 1, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ { /*id*/ 0x60020000, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 7, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -4845,11 +4932,13 @@ static const type_info info[] = { "{ec5dfcd6-eeb0-4cd6-b51e-8030e1dac009}", /*kind*/ TKIND_INTERFACE, /*flags*/ TYPEFLAG_FDISPATCHABLE, /*align*/ TYPE_ALIGNMENT(ISimpleIface*), /*size*/ sizeof(ISimpleIface*), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 8, /*#func*/ 1, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ { /*id*/ 0x60020000, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 7, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -4866,26 +4955,31 @@ static const type_info info[] = { "{4029f190-ca4a-4611-aeb9-673983cb96dd}", /*kind*/ TKIND_RECORD, /*flags*/ 0, /*align*/ TYPE_ALIGNMENT(struct test_struct), /*size*/ sizeof(struct test_struct), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 4, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "hr", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 0 }, + /*#custdata*/ 0, {}, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000001, /*name*/ "b", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 4 }, + /*#custdata*/ 0, {}, {VT_BOOL, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000002, /*name*/ "disp", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 8 }, + /*#custdata*/ 0, {}, {VT_DISPATCH, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000003, /*name*/ "bstr", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 12 }, + /*#custdata*/ 0, {}, {VT_BSTR, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -4895,26 +4989,31 @@ static const type_info info[] = { "{4029f190-ca4a-4611-aeb9-673983cb96de}", /*kind*/ TKIND_RECORD, /*flags*/ 0, /*align*/ TYPE_ALIGNMENT(struct test_struct2), /*size*/ sizeof(struct test_struct2), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 4, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "hr", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 0 }, + /*#custdata*/ 0, {}, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000001, /*name*/ "b", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 4 }, + /*#custdata*/ 0, {}, {VT_BOOL, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000002, /*name*/ "disp", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 8 }, + /*#custdata*/ 0, {}, {VT_DISPATCH, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000003, /*name*/ "bstr", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 12 }, + /*#custdata*/ 0, {}, {VT_BSTR, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -4924,6 +5023,7 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a75396a}", /*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FRESTRICTED, /*align*/ TYPE_ALIGNMENT(t_INT), /*size*/ sizeof(t_INT), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ }, }, @@ -4932,6 +5032,7 @@ static const type_info info[] = { "{00000000-0000-0000-0000-000000000000}", /*kind*/ TKIND_ALIAS, /*flags*/ 0, /*align*/ TYPE_ALIGNMENT(a), /*size*/ sizeof(a), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ }, }, @@ -4940,16 +5041,19 @@ static const type_info info[] = { "{00000000-0000-0000-0000-000000000000}", /*kind*/ TKIND_ENUM, /*flags*/ 0, /*align*/ 4, /*size*/ 4, /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 2, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "a1", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 0 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000001, /*name*/ "a2", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 1 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -4959,16 +5063,19 @@ static const type_info info[] = { "{00000000-0000-0000-0000-000000000000}", /*kind*/ TKIND_ENUM, /*flags*/ 0, /*align*/ 4, /*size*/ 4, /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 2, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "aa1", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 0 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000001, /*name*/ "aa2", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 1 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -4978,16 +5085,19 @@ static const type_info info[] = { "{00000000-0000-0000-0000-000000000000}", /*kind*/ TKIND_ENUM, /*flags*/ 0, /*align*/ 4, /*size*/ 4, /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 2, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "b1", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 0 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000001, /*name*/ "b2", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 1 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -4997,16 +5107,19 @@ static const type_info info[] = { "{00000000-0000-0000-0000-000000000000}", /*kind*/ TKIND_ENUM, /*flags*/ 0, /*align*/ 4, /*size*/ 4, /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 2, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "bb1", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 0 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000001, /*name*/ "bb2", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 1 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -5016,6 +5129,7 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a75396b}", /*kind*/ TKIND_ALIAS, /*flags*/ 0, /*align*/ TYPE_ALIGNMENT(c), /*size*/ sizeof(c), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ }, }, @@ -5024,16 +5138,19 @@ static const type_info info[] = { "{00000000-0000-0000-0000-000000000000}", /*kind*/ TKIND_ENUM, /*flags*/ 0, /*align*/ 4, /*size*/ 4, /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 2, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "c1", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 0 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000001, /*name*/ "c2", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 1 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -5043,16 +5160,19 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a75396c}", /*kind*/ TKIND_ENUM, /*flags*/ 0, /*align*/ 4, /*size*/ 4, /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 2, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "cc1", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 0 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000001, /*name*/ "cc2", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 1 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -5062,6 +5182,7 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a75396d}", /*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ TYPE_ALIGNMENT(d), /*size*/ sizeof(d), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ }, }, @@ -5070,16 +5191,19 @@ static const type_info info[] = { "{00000000-0000-0000-0000-000000000000}", /*kind*/ TKIND_ENUM, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ 4, /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 2, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "d1", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 0 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000001, /*name*/ "d2", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 1 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -5089,16 +5213,19 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a75396e}", /*kind*/ TKIND_ENUM, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ 4, /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 2, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "dd1", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 0 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000001, /*name*/ "dd2", /*flags*/ 0, /*kind*/ VAR_CONST, { .varValue = { VT_I4, { .value_int = 1 } } }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -5108,6 +5235,7 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a753970}", /*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ TYPE_ALIGNMENT(e), /*size*/ sizeof(e), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ }, }, @@ -5116,11 +5244,13 @@ static const type_info info[] = { "{00000000-0000-0000-0000-000000000000}", /*kind*/ TKIND_RECORD, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ TYPE_ALIGNMENT(struct _e), /*size*/ sizeof(struct _e), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 1, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "e1", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 0 }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -5130,11 +5260,13 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a753971}", /*kind*/ TKIND_RECORD, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ TYPE_ALIGNMENT(struct ee), /*size*/ sizeof(struct ee), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 1, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "ee1", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 0 }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -5144,6 +5276,7 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a753972}", /*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ TYPE_ALIGNMENT(f), /*size*/ sizeof(f), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ }, }, @@ -5152,16 +5285,19 @@ static const type_info info[] = { "{00000000-0000-0000-0000-000000000000}", /*kind*/ TKIND_UNION, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ TYPE_ALIGNMENT(union _f), /*size*/ sizeof(union _f), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 2, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "f1", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 0 }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000001, /*name*/ "f2", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 4 }, + /*#custdata*/ 0, {}, {VT_PTR, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -5171,16 +5307,19 @@ static const type_info info[] = { "{016fe2ec-b2c8-45f8-b23b-39e53a753973}", /*kind*/ TKIND_UNION, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ TYPE_ALIGNMENT(union ff), /*size*/ sizeof(union ff), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0, /*#var*/ 2, + /*#custdata*/ 0, {}, { /* funcs */ }, { /* vars */ { /*id*/ 0x40000000, /*name*/ "ff1", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 0 }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0x40000001, /*name*/ "ff2", /*flags*/ 0, /*kind*/ VAR_PERINSTANCE, { .oInst = 4 }, + /*#custdata*/ 0, {}, {VT_PTR, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -5190,11 +5329,13 @@ static const type_info info[] = { "{ec5dfcd6-eeb0-4cd6-b51e-8030e1dac00a}", /*kind*/ TKIND_INTERFACE, /*flags*/ TYPEFLAG_FDISPATCHABLE, /*align*/ TYPE_ALIGNMENT(ITestIface*), /*size*/ sizeof(ITestIface*), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 13, /*#func*/ 6, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ { /*id*/ 0x60020000, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 7, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_USERDEFINED, TKIND_ALIAS, PARAMFLAG_NONE}, {-1, 0, 0} @@ -5209,6 +5350,7 @@ static const type_info info[] = { /*id*/ 0x60020001, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 8, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_USERDEFINED, TKIND_ENUM, PARAMFLAG_NONE}, {-1, 0, 0} @@ -5223,6 +5365,7 @@ static const type_info info[] = { /*id*/ 0x60020002, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 9, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_USERDEFINED, TKIND_ALIAS, PARAMFLAG_NONE}, {-1, 0, 0} @@ -5237,6 +5380,7 @@ static const type_info info[] = { /*id*/ 0x60020003, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 10, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_USERDEFINED, TKIND_ALIAS, PARAMFLAG_NONE}, {-1, 0, 0} @@ -5251,6 +5395,7 @@ static const type_info info[] = { /*id*/ 0x60020004, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 11, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_USERDEFINED, TKIND_ALIAS, PARAMFLAG_NONE}, {-1, 0, 0} @@ -5265,6 +5410,7 @@ static const type_info info[] = { /*id*/ 0x60020005, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 12, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_USERDEFINED, TKIND_ALIAS, PARAMFLAG_NONE}, {-1, 0, 0} @@ -5283,11 +5429,13 @@ static const type_info info[] = { "{2d4430d5-99ea-4645-85f0-c5814b72804b}", /*kind*/ TKIND_DISPATCH, /*flags*/ TYPEFLAG_FDISPATCHABLE, /*align*/ TYPE_ALIGNMENT(ITestDispatch*), /*size*/ sizeof(ITestDispatch*), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 7, /*#func*/ 7, /*#var*/ 2, + /*#custdata*/ 0, {}, { /* funcs */ { /*id*/ 0x1, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 0, /*#scodes*/ 0, /*flags*/ 0, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5300,6 +5448,7 @@ static const type_info info[] = { /*id*/ 0x2, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 0, /*#scodes*/ 0, /*flags*/ 0, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FOUT|PARAMFLAG_FRETVAL}, {-1, 0, 0} @@ -5314,6 +5463,7 @@ static const type_info info[] = { /*id*/ 0x3, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 0, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5326,6 +5476,7 @@ static const type_info info[] = { /*id*/ 0x4, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 0, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FOUT|PARAMFLAG_FRETVAL}, {-1, 0, 0} @@ -5340,6 +5491,7 @@ static const type_info info[] = { /*id*/ 0x5, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 0, /*#scodes*/ 0, /*flags*/ 0, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5352,6 +5504,7 @@ static const type_info info[] = { /*id*/ 0x6, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 0, /*#scodes*/ 0, /*flags*/ 0, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FOUT|PARAMFLAG_FRETVAL}, {-1, 0, 0} @@ -5366,6 +5519,7 @@ static const type_info info[] = { /*id*/ 0x7, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 2, /*#opt*/ 0, /*vtbl*/ 0, /*#scodes*/ 0, /*flags*/ 0, {VT_R8, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_BSTR, -1, PARAMFLAG_FIN}, {VT_I4, -1, PARAMFLAG_FLCID}, @@ -5383,11 +5537,13 @@ static const type_info info[] = { { /*id*/ 0xa, /*name*/ "property_int", /*flags*/ 0, /*kind*/ VAR_DISPATCH, { /* DUMMYUNIONNAME unused*/ }, + /*#custdata*/ 0, {}, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ }, { /*id*/ 0xb, /*name*/ "property_HRESULT", /*flags*/ 0, /*kind*/ VAR_DISPATCH, { /* DUMMYUNIONNAME unused*/ }, + /*#custdata*/ 0, {}, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -5397,11 +5553,13 @@ static const type_info info[] = { "{79ca07f9-ac22-44ac-9aaf-811f45412293}", /*kind*/ TKIND_DISPATCH, /*flags*/ TYPEFLAG_FDISPATCHABLE|TYPEFLAG_FDUAL, /*align*/ TYPE_ALIGNMENT(ITestDispDual*), /*size*/ sizeof(ITestDispDual*), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 7, /*#func*/ 14, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ { /*id*/ 0x60000000, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 2, /*#opt*/ 0, /*vtbl*/ 0, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FIN}, {VT_PTR, -1, PARAMFLAG_FOUT}, @@ -5418,6 +5576,7 @@ static const type_info info[] = { /*id*/ 0x60000001, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 1, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_UI4, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5430,6 +5589,7 @@ static const type_info info[] = { /*id*/ 0x60000002, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 2, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_UI4, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5442,6 +5602,7 @@ static const type_info info[] = { /*id*/ 0x60010000, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 3, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FOUT}, {-1, 0, 0} @@ -5456,6 +5617,7 @@ static const type_info info[] = { /*id*/ 0x60010001, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 3, /*#opt*/ 0, /*vtbl*/ 4, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_UINT, -1, PARAMFLAG_FIN}, {VT_UI4, -1, PARAMFLAG_FIN}, @@ -5474,6 +5636,7 @@ static const type_info info[] = { /*id*/ 0x60010002, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 5, /*#opt*/ 0, /*vtbl*/ 5, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FIN}, {VT_PTR, -1, PARAMFLAG_FIN}, @@ -5496,6 +5659,7 @@ static const type_info info[] = { /*id*/ 0x60010003, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 8, /*#opt*/ 0, /*vtbl*/ 6, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_I4, -1, PARAMFLAG_FIN}, {VT_PTR, -1, PARAMFLAG_FIN}, @@ -5524,6 +5688,7 @@ static const type_info info[] = { /*id*/ 0x1, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 7, /*#scodes*/ 0, /*flags*/ 0, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5536,6 +5701,7 @@ static const type_info info[] = { /*id*/ 0x2, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 8, /*#scodes*/ 0, /*flags*/ 0, {VT_R8, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5548,6 +5714,7 @@ static const type_info info[] = { /*id*/ 0x3, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 9, /*#scodes*/ 0, /*flags*/ 0, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5560,6 +5727,7 @@ static const type_info info[] = { /*id*/ 0x4, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 10, /*#scodes*/ 0, /*flags*/ 0, {VT_R8, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5572,6 +5740,7 @@ static const type_info info[] = { /*id*/ 0x5, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 11, /*#scodes*/ 0, /*flags*/ 0, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5584,6 +5753,7 @@ static const type_info info[] = { /*id*/ 0x6, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 12, /*#scodes*/ 0, /*flags*/ 0, {VT_R8, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5596,6 +5766,7 @@ static const type_info info[] = { /*id*/ 0x7, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 13, /*#scodes*/ 0, /*flags*/ 0, {VT_R8, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_BSTR, -1, PARAMFLAG_FIN}, {-1, 0, 0} @@ -5614,11 +5785,13 @@ static const type_info info[] = { "{79ca07f9-ac22-44ac-9aaf-811f45412293}", /*kind*/ TKIND_INTERFACE, /*flags*/ TYPEFLAG_FDISPATCHABLE|TYPEFLAG_FOLEAUTOMATION|TYPEFLAG_FDUAL, /*align*/ TYPE_ALIGNMENT(ITestDispDual*), /*size*/ sizeof(ITestDispDual*), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 14, /*#func*/ 7, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ { /*id*/ 0x1, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 7, /*#scodes*/ 0, /*flags*/ 0, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5631,6 +5804,7 @@ static const type_info info[] = { /*id*/ 0x2, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 8, /*#scodes*/ 0, /*flags*/ 0, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FOUT|PARAMFLAG_FRETVAL}, {-1, 0, 0} @@ -5645,6 +5819,7 @@ static const type_info info[] = { /*id*/ 0x3, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 9, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5657,6 +5832,7 @@ static const type_info info[] = { /*id*/ 0x4, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 10, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FOUT|PARAMFLAG_FRETVAL}, {-1, 0, 0} @@ -5671,6 +5847,7 @@ static const type_info info[] = { /*id*/ 0x5, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 11, /*#scodes*/ 0, /*flags*/ 0, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5683,6 +5860,7 @@ static const type_info info[] = { /*id*/ 0x6, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 12, /*#scodes*/ 0, /*flags*/ 0, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FOUT|PARAMFLAG_FRETVAL}, {-1, 0, 0} @@ -5697,6 +5875,7 @@ static const type_info info[] = { /*id*/ 0x7, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 3, /*#opt*/ 0, /*vtbl*/ 13, /*#scodes*/ 0, /*flags*/ 0, {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_BSTR, -1, PARAMFLAG_FIN}, {VT_I4, -1, PARAMFLAG_FLCID}, @@ -5719,11 +5898,13 @@ static const type_info info[] = { "{cdb105e3-24fb-4ae6-b826-801b7b2a0a07}", /*kind*/ TKIND_DISPATCH, /*flags*/ TYPEFLAG_FDISPATCHABLE, /*align*/ TYPE_ALIGNMENT(ITestDispInherit*), /*size*/ sizeof(ITestDispInherit*), /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 7, /*#func*/ 14, /*#var*/ 0, + /*#custdata*/ 0, {}, { /* funcs */ { /*id*/ 0x60000000, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 2, /*#opt*/ 0, /*vtbl*/ 0, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FIN}, {VT_PTR, -1, PARAMFLAG_FOUT}, @@ -5740,6 +5921,7 @@ static const type_info info[] = { /*id*/ 0x60000001, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 1, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_UI4, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5752,6 +5934,7 @@ static const type_info info[] = { /*id*/ 0x60000002, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 2, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_UI4, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5764,6 +5947,7 @@ static const type_info info[] = { /*id*/ 0x60010000, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 3, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FOUT}, {-1, 0, 0} @@ -5778,6 +5962,7 @@ static const type_info info[] = { /*id*/ 0x60010001, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 3, /*#opt*/ 0, /*vtbl*/ 4, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_UINT, -1, PARAMFLAG_FIN}, {VT_UI4, -1, PARAMFLAG_FIN}, @@ -5796,6 +5981,7 @@ static const type_info info[] = { /*id*/ 0x60010002, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 5, /*#opt*/ 0, /*vtbl*/ 5, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_PTR, -1, PARAMFLAG_FIN}, {VT_PTR, -1, PARAMFLAG_FIN}, @@ -5818,6 +6004,7 @@ static const type_info info[] = { /*id*/ 0x60010003, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 8, /*#opt*/ 0, /*vtbl*/ 6, /*#scodes*/ 0, /*flags*/ FUNCFLAG_FRESTRICTED, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_I4, -1, PARAMFLAG_FIN}, {VT_PTR, -1, PARAMFLAG_FIN}, @@ -5846,6 +6033,7 @@ static const type_info info[] = { /*id*/ 0x1, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 7, /*#scodes*/ 0, /*flags*/ 0, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5858,6 +6046,7 @@ static const type_info info[] = { /*id*/ 0x2, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 8, /*#scodes*/ 0, /*flags*/ 0, {VT_R8, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5870,6 +6059,7 @@ static const type_info info[] = { /*id*/ 0x3, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 9, /*#scodes*/ 0, /*flags*/ 0, {VT_VOID, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5882,6 +6072,7 @@ static const type_info info[] = { /*id*/ 0x4, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 10, /*#scodes*/ 0, /*flags*/ 0, {VT_R8, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5894,6 +6085,7 @@ static const type_info info[] = { /*id*/ 0x5, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 11, /*#scodes*/ 0, /*flags*/ 0, {VT_INT, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5906,6 +6098,7 @@ static const type_info info[] = { /*id*/ 0x6, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 12, /*#scodes*/ 0, /*flags*/ 0, {VT_R8, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {-1, 0, 0} }, @@ -5918,6 +6111,7 @@ static const type_info info[] = { /*id*/ 0x7, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL, /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 13, /*#scodes*/ 0, /*flags*/ 0, {VT_R8, -1, PARAMFLAG_NONE}, /* ret */ + /*#custdata*/ 0, {}, { /* params */ {VT_BSTR, -1, PARAMFLAG_FIN}, {-1, 0, 0} @@ -5956,11 +6150,18 @@ static const type_info info[] = { expect_hex(U(*(elem)).paramdesc.wParamFlags, (info)->wParamFlags); \ }
+static void parse_guid(LPCSTR strGuid, GUID *guid) +{ + WCHAR guidW[39]; + MultiByteToWideChar(CP_ACP, 0, strGuid, -1, guidW, ARRAY_SIZE(guidW)); + ole_check(IIDFromString(guidW, guid)); +} + static void test_dump_typelib(const WCHAR *name) { ITypeLib *typelib; CUSTDATA cust_data; - int iface = 0, func, var; + int iface = 0, func, var, cust; HREFTYPE hRefType = 0; VARIANT v; HRESULT hr; @@ -6000,13 +6201,11 @@ static void test_dump_typelib(const WCHAR *name) /* compare type uuid */ if (ti->uuid && *ti->uuid) { - WCHAR guidW[39]; ITypeInfo *typeinfo2; HRESULT hr; GUID guid;
- MultiByteToWideChar(CP_ACP, 0, ti->uuid, -1, guidW, ARRAY_SIZE(guidW)); - IIDFromString(guidW, &guid); + parse_guid(ti->uuid,&guid); expect_guid(&guid, &typeattr->guid);
/* check that it's possible to search using this uuid */ @@ -6016,9 +6215,26 @@ static void test_dump_typelib(const WCHAR *name) if (hr == S_OK) ITypeInfo_Release(typeinfo2); }
+ ole_check(ITypeInfo_GetTypeAttr(typeinfo, &typeattr)); + hr = ITypeInfo_QueryInterface(typeinfo, &IID_ITypeInfo2, (void**)&typeinfo2); ok(hr == S_OK, "Could not get ITypeInfo2: %08x\n", hr);
+ memset(&cust_data, 0, sizeof(cust_data)); + ole_check(ITypeInfo2_GetAllCustData(typeinfo2,&cust_data)); + expect_int(cust_data.cCustData, ti->cCustData); + ClearCustData(&cust_data); + for (cust = 0; cust < ti->cCustData; cust++) + { + GUID guid; + parse_guid(ti->custdata[cust].uuid,&guid); + /* check that it's possible to search using this uuid */ + hr = ITypeInfo2_GetCustData(typeinfo2,&guid,&v); + ok(hr == S_OK, "GetCustDatafailed: %08x\n", hr); + check_variant_info(&v,&ti->custdata[cust].value); + VariantClear(&v); + } + for (func = 0; func < typeattr->cFuncs; func++) { const function_info *fn_info = &ti->funcs[func]; @@ -6038,6 +6254,22 @@ static void test_dump_typelib(const WCHAR *name) expect_int(desc->oVft, fn_info->vtbl_index * sizeof(void*)); expect_int(desc->cScodes, fn_info->cScodes); expect_int(desc->wFuncFlags, fn_info->wFuncFlags); + + memset(&cust_data, 0, sizeof(cust_data)); + ole_check(ITypeInfo2_GetAllFuncCustData(typeinfo2,func,&cust_data)); + expect_int(cust_data.cCustData, fn_info->cCustData); + ClearCustData(&cust_data); + for (cust = 0; cust < fn_info->cCustData; cust++) + { + GUID guid; + parse_guid(fn_info->custdata[cust].uuid,&guid); + /* check that it's possible to search using this uuid */ + hr = ITypeInfo2_GetFuncCustData(typeinfo2,func,&guid,&v); + ok(hr == S_OK, "GetCustDatafailed: %08x\n", hr); + check_variant_info(&v,&fn_info->custdata[cust].value); + VariantClear(&v); + } + ole_check(ITypeInfo_GetNames(typeinfo, desc->memid, namesTab, 256, &cNames)); for (i = 0; i < cNames; i++) { @@ -6051,6 +6283,21 @@ static void test_dump_typelib(const WCHAR *name) { check_type(&desc->lprgelemdescParam[i], &fn_info->params[i]);
+ memset(&cust_data, 0, sizeof(cust_data)); + ole_check(ITypeInfo2_GetAllParamCustData(typeinfo2,func,i,&cust_data)); + expect_int(cust_data.cCustData, fn_info->params[i].cCustData); + ClearCustData(&cust_data); + for (cust = 0; cust < fn_info->params[i].cCustData; cust++) + { + GUID guid; + parse_guid(fn_info->params[i].custdata[cust].uuid,&guid); + /* check that it's possible to search using this uuid */ + hr = ITypeInfo2_GetParamCustData(typeinfo2,func,i,&guid,&v); + ok(hr == S_OK, "GetParamCustDatafailed: %08x\n", hr); + check_variant_info(&v,&fn_info->params[i].custdata[cust].value); + VariantClear(&v); + } + if (desc->lprgelemdescParam[i].tdesc.vt == VT_USERDEFINED) { ITypeInfo *param; @@ -6080,9 +6327,7 @@ static void test_dump_typelib(const WCHAR *name) VariantClear(&v);
memset(&cust_data, 0, sizeof(cust_data)); - hr = ITypeInfo2_GetAllCustData(typeinfo2, &cust_data); ITypeInfo_ReleaseFuncDesc(typeinfo, desc); - ClearCustData(&cust_data); }
for (var = 0; var < typeattr->cVars; var++) @@ -6112,6 +6357,20 @@ static void test_dump_typelib(const WCHAR *name) } else { expect_null(desc->DUMMYUNIONNAME.lpvarValue); } + memset(&cust_data, 0, sizeof(cust_data)); + ole_check(ITypeInfo2_GetAllVarCustData(typeinfo2,var,&cust_data)); + expect_int(cust_data.cCustData, var_info->cCustData); + ClearCustData(&cust_data); + for (cust = 0; cust < var_info->cCustData; cust++) + { + GUID guid; + parse_guid(var_info->custdata[cust].uuid,&guid); + /* check that it's possible to search using this uuid */ + hr = ITypeInfo2_GetVarCustData(typeinfo2,var,&guid,&v); + ok(hr == S_OK, "GetVarCustData failed: %08x\n", hr); + check_variant_info(&v,&var_info->custdata[cust].value); + VariantClear(&v); + }
check_type(&desc->elemdescVar, &var_info->elemdescVar);