HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo) { HRESULT hres; if (!typelib) hres = load_typelib(); if (!typelib) return hres; if(!typeinfos[tid]) { ITypeInfo *ti; hres = ITypeLib_GetTypeInfoOfGuid(typelib, tid_ids[tid], &ti); if(FAILED(hres)) { ERR("GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_guid(tid_ids[tid]), hres); return hres; } if(InterlockedCompareExchangePointer((void**)(typeinfos+tid), ti, NULL)) ITypeInfo_Release(ti); } *typeinfo = typeinfos[tid]; ITypeInfo_AddRef(*typeinfo); return S_OK; }
static HRESULT init_engine(IActiveScript *script, IActiveScriptParse *parser) { HRESULT hres; if(!load_typelib()) return FALSE; hres = IActiveScript_SetScriptSite(script, &script_site); if(FAILED(hres)) return FALSE; hres = IActiveScriptParse_InitNew(parser); if(FAILED(hres)) return FALSE; hres = IActiveScript_AddNamedItem(script, wscriptW, SCRIPTITEM_ISVISIBLE); if(FAILED(hres)) return FALSE; hres = IActiveScript_AddNamedItem(script, wshW, SCRIPTITEM_ISVISIBLE); if(FAILED(hres)) return FALSE; hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_INITIALIZED); return SUCCEEDED(hres); }
static HRESULT get_typeinfo_of_guid(const GUID *guid, ITypeInfo **tinfo) { HRESULT hres; if(FAILED(hres = load_typelib())) return hres; return ITypeLib_GetTypeInfoOfGuid(typelib, guid, tinfo); }
HRESULT get_htmldoc_classinfo(ITypeInfo **typeinfo) { HRESULT hres; if (!typelib) hres = load_typelib(); if (!typelib) return hres; hres = ITypeLib_GetTypeInfoOfGuid(typelib, &CLSID_HTMLDocument, typeinfo); if(FAILED(hres)) ERR("GetTypeInfoOfGuid failed: %08x\n", hres); return hres; }