ReactOS 0.4.16-dev-2208-g6350669
domimpl.c File Reference
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "ole2.h"
#include "msxml6.h"
#include "msxml_dispex.h"
#include "wine/debug.h"
Include dependency graph for domimpl.c:

Go to the source code of this file.

Classes

struct  _domimpl
 

Macros

#define COBJMACROS
 

Typedefs

typedef struct _domimpl domimpl
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (msxml)
 
static domimplimpl_from_IXMLDOMImplementation (IXMLDOMImplementation *iface)
 
static HRESULT WINAPI domimpl_QueryInterface (IXMLDOMImplementation *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI domimpl_AddRef (IXMLDOMImplementation *iface)
 
static ULONG WINAPI domimpl_Release (IXMLDOMImplementation *iface)
 
static HRESULT WINAPI domimpl_GetTypeInfoCount (IXMLDOMImplementation *iface, UINT *pctinfo)
 
static HRESULT WINAPI domimpl_GetTypeInfo (IXMLDOMImplementation *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
 
static HRESULT WINAPI domimpl_GetIDsOfNames (IXMLDOMImplementation *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
 
static HRESULT WINAPI domimpl_Invoke (IXMLDOMImplementation *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
 
static HRESULT WINAPI domimpl_hasFeature (IXMLDOMImplementation *This, BSTR feature, BSTR version, VARIANT_BOOL *hasFeature)
 
HRESULT create_dom_implementation (IXMLDOMImplementation **ret)
 

Variables

static const struct IXMLDOMImplementationVtbl domimpl_vtbl
 
static const tid_t domimpl_iface_tids []
 
static dispex_static_data_t domimpl_dispex
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 21 of file domimpl.c.

Typedef Documentation

◆ domimpl

Function Documentation

◆ create_dom_implementation()

HRESULT create_dom_implementation ( IXMLDOMImplementation **  ret)

Definition at line 193 of file domimpl.c.

194{
196
197 if (!(object = malloc(sizeof(*object))))
198 return E_OUTOFMEMORY;
199
200 object->IXMLDOMImplementation_iface.lpVtbl = &domimpl_vtbl;
201 object->ref = 1;
202 init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMImplementation_iface, &domimpl_dispex);
203
204 *ret = &object->IXMLDOMImplementation_iface;
205
206 return S_OK;
207}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define malloc
Definition: debug_ros.c:4
static dispex_static_data_t domimpl_dispex
Definition: domimpl.c:185
static const struct IXMLDOMImplementationVtbl domimpl_vtbl
Definition: domimpl.c:167
return ret
Definition: mutex.c:146
#define S_OK
Definition: intsafe.h:52
HRESULT init_dispex(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype)
Definition: dispex.c:919

◆ domimpl_AddRef()

static ULONG WINAPI domimpl_AddRef ( IXMLDOMImplementation iface)
static

Definition at line 79 of file domimpl.c.

80{
83 TRACE("%p, refcount %lu.\n", iface, ref);
84 return ref;
85}
#define InterlockedIncrement
Definition: armddk.h:53
static domimpl * impl_from_IXMLDOMImplementation(IXMLDOMImplementation *iface)
Definition: domimpl.c:44
#define TRACE(s)
Definition: solgame.cpp:4
LONG ref
Definition: domimpl.c:41
Definition: send.c:48
uint32_t ULONG
Definition: typedefs.h:59

◆ domimpl_GetIDsOfNames()

static HRESULT WINAPI domimpl_GetIDsOfNames ( IXMLDOMImplementation iface,
REFIID  riid,
LPOLESTR rgszNames,
UINT  cNames,
LCID  lcid,
DISPID rgDispId 
)
static

Definition at line 118 of file domimpl.c.

122{
124 return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface,
125 riid, rgszNames, cNames, lcid, rgDispId);
126}
LCID lcid
Definition: locale.c:5656
REFIID riid
Definition: atlbase.h:39

◆ domimpl_GetTypeInfo()

static HRESULT WINAPI domimpl_GetTypeInfo ( IXMLDOMImplementation iface,
UINT  iTInfo,
LCID  lcid,
ITypeInfo **  ppTInfo 
)
static

Definition at line 108 of file domimpl.c.

112{
114 return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface,
115 iTInfo, lcid, ppTInfo);
116}

◆ domimpl_GetTypeInfoCount()

static HRESULT WINAPI domimpl_GetTypeInfoCount ( IXMLDOMImplementation iface,
UINT pctinfo 
)
static

Definition at line 100 of file domimpl.c.

103{
105 return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
106}

◆ domimpl_hasFeature()

static HRESULT WINAPI domimpl_hasFeature ( IXMLDOMImplementation This,
BSTR  feature,
BSTR  version,
VARIANT_BOOL hasFeature 
)
static

Definition at line 139 of file domimpl.c.

140{
141 static const WCHAR bVersion[] = {'1','.','0',0};
142 static const WCHAR bXML[] = {'X','M','L',0};
143 static const WCHAR bDOM[] = {'D','O','M',0};
144 static const WCHAR bMSDOM[] = {'M','S','-','D','O','M',0};
145 BOOL bValidFeature = FALSE;
146 BOOL bValidVersion = FALSE;
147
148 TRACE("(%p)->(%s %s %p)\n", This, debugstr_w(feature), debugstr_w(version), hasFeature);
149
150 if(!feature || !hasFeature)
151 return E_INVALIDARG;
152
153 *hasFeature = VARIANT_FALSE;
154
155 if(!version || lstrcmpiW(version, bVersion) == 0)
156 bValidVersion = TRUE;
157
158 if(lstrcmpiW(feature, bXML) == 0 || lstrcmpiW(feature, bDOM) == 0 || lstrcmpiW(feature, bMSDOM) == 0)
159 bValidFeature = TRUE;
160
161 if(bValidVersion && bValidFeature)
162 *hasFeature = VARIANT_TRUE;
163
164 return S_OK;
165}
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static const WCHAR version[]
Definition: asmname.c:66
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4265
unsigned int BOOL
Definition: ntddk_ex.h:94
#define debugstr_w
Definition: kernel32.h:32
INTERNETFEATURELIST feature
Definition: misc.c:1719
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ domimpl_Invoke()

static HRESULT WINAPI domimpl_Invoke ( IXMLDOMImplementation iface,
DISPID  dispIdMember,
REFIID  riid,
LCID  lcid,
WORD  wFlags,
DISPPARAMS *  pDispParams,
VARIANT pVarResult,
EXCEPINFO *  pExcepInfo,
UINT puArgErr 
)
static

Definition at line 128 of file domimpl.c.

133{
135 return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface,
136 dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
137}
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon_undoc.h:337

◆ domimpl_QueryInterface()

static HRESULT WINAPI domimpl_QueryInterface ( IXMLDOMImplementation iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 49 of file domimpl.c.

53{
55 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
56
57 if ( IsEqualGUID( riid, &IID_IXMLDOMImplementation ) ||
60 {
61 *ppvObject = iface;
62 }
63 else if (dispex_query_interface(&This->dispex, riid, ppvObject))
64 {
65 return *ppvObject ? S_OK : E_NOINTERFACE;
66 }
67 else
68 {
69 TRACE("Unsupported interface %s\n", debugstr_guid(riid));
70 *ppvObject = NULL;
71 return E_NOINTERFACE;
72 }
73
74 IXMLDOMImplementation_AddRef( iface );
75
76 return S_OK;
77}
const GUID IID_IUnknown
#define NULL
Definition: types.h:112
#define debugstr_guid
Definition: kernel32.h:35
BOOL dispex_query_interface(DispatchEx *This, REFIID riid, void **ppv)
Definition: dispex.c:1656
const GUID IID_IDispatch
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ domimpl_Release()

static ULONG WINAPI domimpl_Release ( IXMLDOMImplementation iface)
static

Definition at line 87 of file domimpl.c.

88{
91
92 TRACE("%p, refcount %lu.\n", iface, ref);
93
94 if (!ref)
96
97 return ref;
98}
#define InterlockedDecrement
Definition: armddk.h:52
#define free
Definition: debug_ros.c:5

◆ impl_from_IXMLDOMImplementation()

static domimpl * impl_from_IXMLDOMImplementation ( IXMLDOMImplementation iface)
inlinestatic

Definition at line 44 of file domimpl.c.

45{
46 return CONTAINING_RECORD(iface, domimpl, IXMLDOMImplementation_iface);
47}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by domimpl_AddRef(), domimpl_GetIDsOfNames(), domimpl_GetTypeInfo(), domimpl_GetTypeInfoCount(), domimpl_Invoke(), domimpl_QueryInterface(), and domimpl_Release().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( msxml  )

Variable Documentation

◆ domimpl_dispex

dispex_static_data_t domimpl_dispex
static
Initial value:
=
{
}
static const tid_t domimpl_iface_tids[]
Definition: domimpl.c:179
@ IXMLDOMImplementation_tid
Definition: msxml_dispex.h:49

Definition at line 185 of file domimpl.c.

Referenced by create_dom_implementation().

◆ domimpl_iface_tids

const tid_t domimpl_iface_tids[]
static
Initial value:

Definition at line 179 of file domimpl.c.

◆ domimpl_vtbl

const struct IXMLDOMImplementationVtbl domimpl_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI domimpl_GetTypeInfo(IXMLDOMImplementation *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: domimpl.c:108
static ULONG WINAPI domimpl_AddRef(IXMLDOMImplementation *iface)
Definition: domimpl.c:79
static HRESULT WINAPI domimpl_QueryInterface(IXMLDOMImplementation *iface, REFIID riid, void **ppvObject)
Definition: domimpl.c:49
static HRESULT WINAPI domimpl_hasFeature(IXMLDOMImplementation *This, BSTR feature, BSTR version, VARIANT_BOOL *hasFeature)
Definition: domimpl.c:139
static HRESULT WINAPI domimpl_Invoke(IXMLDOMImplementation *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: domimpl.c:128
static HRESULT WINAPI domimpl_GetIDsOfNames(IXMLDOMImplementation *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: domimpl.c:118
static HRESULT WINAPI domimpl_GetTypeInfoCount(IXMLDOMImplementation *iface, UINT *pctinfo)
Definition: domimpl.c:100
static ULONG WINAPI domimpl_Release(IXMLDOMImplementation *iface)
Definition: domimpl.c:87

Definition at line 167 of file domimpl.c.

Referenced by create_dom_implementation().