42#include "wine/unicode.h"
53 0, 0, { (
DWORD_PTR)(__FILE__
": dispex_static_data") }
101 { &IID_IXMLDOMAttribute,
LibXml2 },
102 { &IID_IXMLDOMCDATASection,
LibXml2 },
103 { &IID_IXMLDOMComment,
LibXml2 },
104 { &IID_IXMLDOMDocument,
LibXml2 },
105 { &IID_IXMLDOMDocument2,
LibXml2 },
106 { &IID_IXMLDOMDocument3,
LibXml2 },
107 { &IID_IXMLDOMDocumentFragment,
LibXml2 },
108 { &IID_IXMLDOMDocumentType,
LibXml2 },
109 { &IID_IXMLDOMElement,
LibXml2 },
110 { &IID_IXMLDOMEntityReference,
LibXml2 },
111 { &IID_IXMLDOMImplementation,
LibXml2 },
112 { &IID_IXMLDOMNamedNodeMap,
LibXml2 },
114 { &IID_IXMLDOMNodeList,
LibXml2 },
115 { &IID_IXMLDOMParseError2,
LibXml2 },
116 { &IID_IXMLDOMProcessingInstruction,
LibXml2 },
117 { &IID_IXMLDOMSchemaCollection,
LibXml2 },
118 { &IID_IXMLDOMSchemaCollection2,
LibXml2 },
119 { &IID_IXMLDOMSelection,
LibXml2 },
121 { &IID_IXMLElement,
LibXml },
122 { &IID_IXMLDocument,
LibXml },
123 { &IID_IXMLHTTPRequest,
LibXml2 },
124 { &IID_IXSLProcessor,
LibXml2 },
125 { &IID_IXSLTemplate,
LibXml2 },
126 { &IID_IVBSAXAttributes,
LibXml2 },
127 { &IID_IVBSAXContentHandler,
LibXml2 },
128 { &IID_IVBSAXDeclHandler,
LibXml2 },
129 { &IID_IVBSAXDTDHandler,
LibXml2 },
130 { &IID_IVBSAXEntityResolver,
LibXml2 },
131 { &IID_IVBSAXErrorHandler,
LibXml2 },
132 { &IID_IVBSAXLexicalHandler,
LibXml2 },
133 { &IID_IVBSAXLocator,
LibXml2 },
134 { &IID_IVBSAXXMLFilter,
LibXml2 },
135 { &IID_IVBSAXXMLReader,
LibXml2 },
136 { &IID_IMXAttributes,
LibXml2 },
137 { &IID_IMXReaderControl,
LibXml2 },
139 { &IID_IVBMXNamespaceManager,
LibXml2 },
140 { &IID_IServerXMLHTTPRequest,
LibXml2 }
160 ERR(
"LoadRegTypeLib failed: %08x\n",
hres);
165 ITypeLib_Release(*tl);
191 ERR(
"GetTypeInfoOfGuid failed: %08x\n",
hres);
197 ITypeInfo_Release(ti);
238 if(
data->func_cnt &&
data->funcs[
data->func_cnt-1].id ==
id)
277 ERR(
"Could not get disp type info: %08x\n",
hres);
293 hres = ITypeInfo_GetFuncDesc(ti,
i++, &funcdesc);
298 ITypeInfo_ReleaseFuncDesc(ti, funcdesc);
301 ITypeInfo_Release(ti);
305 if(!
data->func_cnt) {
316 for(
i=0;
i <
data->func_cnt;
i++)
323 ITypeInfo_Release(dti);
330 return This->data->data;
334 if(!
This->data->data)
339 return This->data->data;
351 return IUnknown_QueryInterface(
This->outer,
riid,
ppv);
358 return IUnknown_AddRef(
This->outer);
365 return IUnknown_Release(
This->outer);
383 TRACE(
"(%p)->(%u %u %p)\n",
This, iTInfo, lcid, ppTInfo);
399 for(
i=0;
i < cNames;
i++) {
400 hres = IDispatchEx_GetDispID(&
This->IDispatchEx_iface, rgszNames[
i], 0, rgDispId+
i);
410 VARIANT *pVarResult, EXCEPINFO *pExcepInfo,
UINT *puArgErr)
415 lcid,
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
417 return IDispatchEx_InvokeEx(&
This->IDispatchEx_iface, dispIdMember, lcid,
wFlags,
418 pDispParams, pVarResult, pExcepInfo,
NULL);
429 if(grfdex & ~(fdexNameCaseSensitive|fdexNameEnsure|fdexNameImplicit))
430 FIXME(
"Unsupported grfdex %x\n", grfdex);
444 if((grfdex & fdexNameCaseSensitive) &&
strcmpW(
data->name_table[
n]->name, bstrName))
457 if(
This->data->vtbl &&
This->data->vtbl->get_dispid) {
460 hres =
This->data->vtbl->get_dispid(
This->outer, bstrName, grfdex,
pid);
504 TRACE(
"(%p)->(%x %x %x %p %p %p %p)\n",
This,
id, lcid,
wFlags, pdp, pvarRes, pei, pspCaller);
506 if(
This->data->vtbl &&
This->data->vtbl->invoke) {
511 if(
wFlags == DISPATCH_CONSTRUCT) {
512 FIXME(
"DISPATCH_CONSTRUCT not implemented\n");
526 if(
data->funcs[
n].id ==
id)
529 if(
data->funcs[
n].id <
id)
536 WARN(
"invalid id %x\n",
id);
542 ERR(
"Could not get type info: %08x\n",
hres);
548 ERR(
"Could not get iface: %08x\n",
hres);
549 ITypeInfo_Release(ti);
555 hres = ITypeInfo_Invoke(ti, unk,
id,
wFlags, pdp, pvarRes, pei, &argerr);
557 ITypeInfo_Release(ti);
558 IUnknown_Release(unk);
565 TRACE(
"Not implemented in native msxml3 (%p)->(%s %x)\n",
This,
debugstr_w(bstrName), grfdex);
572 TRACE(
"Not implemented in native msxml3 (%p)->(%x)\n",
This,
id);
579 TRACE(
"Not implemented in native msxml3 (%p)->(%x %x %p)\n",
This,
id, grfdexFetch, pgrfdex);
586 TRACE(
"Not implemented in native msxml3 (%p)->(%x %p)\n",
This,
id, pbstrName);
593 TRACE(
" Not implemented in native msxml3 (%p)->(%x %x %p)\n",
This, grfdex,
id,
pid);
600 TRACE(
"Not implemented in native msxml3 (%p)->(%p)\n",
This, ppunk);
624 static const IID IID_UndocumentedScriptIface =
625 {0x719c3050,0xf9d3,0x11cf,{0xa4,0x93,0x00,0x40,0x05,0x23,0xa8,0xa0}};
626 static const IID IID_IDispatchJS =
627 {0x719c3050,0xf9d3,0x11cf,{0xa4,0x93,0x00,0x40,0x05,0x23,0xa8,0xa6}};
631 *
ppv = &
This->IDispatchEx_iface;
634 *
ppv = &
This->IDispatchEx_iface;
636 TRACE(
"(%p)->(IID_IDispatchJS %p) returning NULL\n",
This,
ppv);
639 TRACE(
"(%p)->(IID_UndocumentedScriptIface %p) returning NULL\n",
This,
ppv);
642 TRACE(
"IID_IObjectIdentity not supported returning NULL\n");
656 dispex->
outer = outer;
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
static void * heap_realloc(void *mem, size_t len)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static int list_empty(struct list_entry *head)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
HRESULT WINAPI LoadRegTypeLib(REFGUID rguid, WORD wVerMajor, WORD wVerMinor, LCID lcid, ITypeLib **ppTLib)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define InterlockedCompareExchangePointer
static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
static HRESULT WINAPI DispatchEx_GetMemberProperties(IDispatchEx *iface, DISPID id, DWORD grfdexFetch, DWORD *pgrfdex)
static ULONG WINAPI DispatchEx_Release(IDispatchEx *iface)
static HRESULT WINAPI DispatchEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
static HRESULT WINAPI DispatchEx_DeleteMemberByDispID(IDispatchEx *iface, DISPID id)
static HRESULT WINAPI DispatchEx_GetNameSpaceParent(IDispatchEx *iface, IUnknown **ppunk)
static HRESULT WINAPI DispatchEx_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
static HRESULT WINAPI DispatchEx_Invoke(IDispatchEx *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT WINAPI DispatchEx_GetMemberName(IDispatchEx *iface, DISPID id, BSTR *pbstrName)
static jsdisp_t * impl_from_IDispatchEx(IDispatchEx *iface)
static HRESULT WINAPI DispatchEx_GetNextDispID(IDispatchEx *iface, DWORD grfdex, DISPID id, DISPID *pid)
static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
HRESULT init_dispex(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype)
static ULONG WINAPI DispatchEx_AddRef(IDispatchEx *iface)
static HRESULT WINAPI DispatchEx_GetTypeInfo(IDispatchEx *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
static HRESULT WINAPI DispatchEx_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
static HRESULT WINAPI DispatchEx_GetTypeInfoCount(IDispatchEx *iface, UINT *pctinfo)
static IDispatchExVtbl DispatchExVtbl
static VARIANTARG static DISPID
static dispex_data_t * preprocess_dispex_data(DispatchEx *This)
static struct list dispex_data_list
static int func_name_cmp(const void *p1, const void *p2)
static CRITICAL_SECTION cs_dispex_static_data
static void add_func_info(dispex_data_t *data, DWORD *size, tid_t tid, const FUNCDESC *desc, ITypeInfo *dti)
static ITypeLib * typelib
BOOL dispex_query_interface(DispatchEx *This, REFIID riid, void **ppv)
static int dispid_cmp(const void *p1, const void *p2)
static CRITICAL_SECTION_DEBUG cs_dispex_static_data_dbg
void release_typelib(void)
static HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo)
static dispex_data_t * get_dispex_data(DispatchEx *This)
static ITypeInfo * typeinfos[LAST_tid]
#define DISPID_DOM_DOCUMENT_DOCUMENTELEMENT
#define DISPID_XMLDOM_DOCUMENT2_SCHEMAS
#define DISPID_MXXML_FILTER_ENTITYRESOLVER
#define DISPID_SAX_XMLREADER_ERRORHANDLER
#define DISPID_MXXML_FILTER_ERRORHANDLER
#define DISPID_SAX_XMLFILTER_PARENT
#define DISPID_SAX_XMLREADER_ENTITYRESOLVER
#define DISPID_XMLDOM_TEMPLATE_STYLESHEET
#define DISPID_XMLDOM_SELECTION_CONTEXT
#define DISPID_SAX_CONTENTHANDLER_DOCUMENTLOCATOR
#define DISPID_SAX_XMLREADER_DTDHANDLER
#define DISPID_MXXML_FILTER_DTDHANDLER
#define DISPID_MXXML_FILTER_CONTENTHANDLER
#define DISPID_SAX_XMLREADER_CONTENTHANDLER
static HRESULT get_typelib(unsigned lib, ITypeLib **tl)
const IID * get_riid_from_tid(tid_t tid)
static lib_id_t lib_ids[]
static unsigned get_libid_from_tid(tid_t tid)
static BOOL is_propputref_id(DISPID id)
#define LOCALE_SYSTEM_DEFAULT
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
#define DISPATCH_PROPERTYPUT
#define DISPATCH_PROPERTYPUTREF
#define IsEqualGUID(rguid1, rguid2)
void __cdecl qsort(_Inout_updates_bytes_(_NumOfElements *_SizeOfElements) void *_Base, _In_ size_t _NumOfElements, _In_ size_t _SizeOfElements, _In_ int(__cdecl *_PtFuncCompare)(const void *, const void *))
dispex_static_data_t * data
IDispatchEx IDispatchEx_iface
LIST_ENTRY ProcessLocksList
func_info_t ** name_table
#define CONTAINING_RECORD(address, type, field)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
_In_ DWORD _Out_ _In_ WORD wFlags
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
#define DISP_E_UNKNOWNNAME