Signed-off-by: Kevin Puetz PuetzKevinA@JohnDeere.com --- 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 01fbffe5ca..9ebb14768f 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; @@ -4541,11 +4601,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 */ }, }, @@ -4555,11 +4617,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} @@ -4578,11 +4642,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} @@ -4601,11 +4667,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} }, @@ -4622,11 +4690,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 */ }, }, @@ -4636,6 +4706,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 */ }, }, @@ -4644,6 +4715,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 */ }, }, @@ -4652,11 +4724,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 */ }, }, @@ -4666,6 +4740,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 */ }, }, @@ -4674,6 +4749,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 */ }, }, @@ -4682,11 +4758,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}, @@ -4703,6 +4781,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} }, @@ -4715,6 +4794,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} }, @@ -4727,6 +4807,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} @@ -4741,6 +4822,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}, @@ -4759,6 +4841,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}, @@ -4781,6 +4864,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}, @@ -4809,6 +4893,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} }, @@ -4825,11 +4910,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} }, @@ -4846,11 +4933,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} }, @@ -4867,26 +4956,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 */ }, }, @@ -4896,26 +4990,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 */ }, }, @@ -4925,6 +5024,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 */ }, }, @@ -4933,6 +5033,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 */ }, }, @@ -4941,16 +5042,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 */ }, }, @@ -4960,16 +5064,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 */ }, }, @@ -4979,16 +5086,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 */ }, }, @@ -4998,16 +5108,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 */ }, }, @@ -5017,6 +5130,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 */ }, }, @@ -5025,16 +5139,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 */ }, }, @@ -5044,16 +5161,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 */ }, }, @@ -5063,6 +5183,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 */ }, }, @@ -5071,16 +5192,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 */ }, }, @@ -5090,16 +5214,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 */ }, }, @@ -5109,6 +5236,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 */ }, }, @@ -5117,11 +5245,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 */ }, }, @@ -5131,11 +5261,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 */ }, }, @@ -5145,6 +5277,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 */ }, }, @@ -5153,16 +5286,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 = 0 }, + /*#custdata*/ 0, {}, {VT_PTR, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -5172,16 +5308,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 = 0 }, + /*#custdata*/ 0, {}, {VT_PTR, -1, PARAMFLAG_NONE}, /* ret */ }, }, @@ -5191,11 +5330,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} @@ -5210,6 +5351,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} @@ -5224,6 +5366,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} @@ -5238,6 +5381,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} @@ -5252,6 +5396,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} @@ -5266,6 +5411,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} @@ -5284,11 +5430,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} }, @@ -5301,6 +5449,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} @@ -5315,6 +5464,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} }, @@ -5327,6 +5477,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} @@ -5341,6 +5492,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} }, @@ -5353,6 +5505,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} @@ -5367,6 +5520,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}, @@ -5384,11 +5538,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 */ }, }, @@ -5398,11 +5554,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}, @@ -5419,6 +5577,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} }, @@ -5431,6 +5590,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} }, @@ -5443,6 +5603,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} @@ -5457,6 +5618,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}, @@ -5475,6 +5637,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}, @@ -5497,6 +5660,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}, @@ -5525,6 +5689,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} }, @@ -5537,6 +5702,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} }, @@ -5549,6 +5715,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} }, @@ -5561,6 +5728,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} }, @@ -5573,6 +5741,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} }, @@ -5585,6 +5754,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} }, @@ -5597,6 +5767,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} @@ -5615,11 +5786,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} }, @@ -5632,6 +5805,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} @@ -5646,6 +5820,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} }, @@ -5658,6 +5833,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} @@ -5672,6 +5848,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} }, @@ -5684,6 +5861,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} @@ -5698,6 +5876,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}, @@ -5720,11 +5899,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}, @@ -5741,6 +5922,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} }, @@ -5753,6 +5935,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} }, @@ -5765,6 +5948,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} @@ -5779,6 +5963,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}, @@ -5797,6 +5982,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}, @@ -5819,6 +6005,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}, @@ -5847,6 +6034,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} }, @@ -5859,6 +6047,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} }, @@ -5871,6 +6060,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} }, @@ -5883,6 +6073,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} }, @@ -5895,6 +6086,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} }, @@ -5907,6 +6099,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} }, @@ -5919,6 +6112,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} @@ -5957,11 +6151,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; @@ -6009,13 +6210,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 */ @@ -6025,9 +6224,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]; @@ -6047,6 +6263,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++) { @@ -6060,6 +6292,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; @@ -6089,9 +6336,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++) @@ -6125,6 +6370,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);