ReactOS 0.4.16-dev-2208-g6350669
mxnamespace.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 mxnamespace.c:

Go to the source code of this file.

Classes

struct  ns
 
struct  nscontext
 
struct  namespacemanager
 

Macros

#define COBJMACROS
 
#define DEFAULT_PREFIX_ALLOC_COUNT   16
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (msxml)
 
static namespacemanagerimpl_from_IMXNamespaceManager (IMXNamespaceManager *iface)
 
static namespacemanagerimpl_from_IVBMXNamespaceManager (IVBMXNamespaceManager *iface)
 
static HRESULT declare_prefix (namespacemanager *This, const WCHAR *prefix, const WCHAR *uri)
 
static HRESULT get_declared_prefix_idx (const struct nscontext *ctxt, LONG index, BSTR *prefix)
 
static HRESULT get_declared_prefix_uri (const struct list *ctxts, const WCHAR *uri, BSTR *prefix)
 
static HRESULT get_uri_from_prefix (const struct nscontext *ctxt, const WCHAR *prefix, BSTR *uri)
 
static struct nscontextalloc_ns_context (void)
 
static void free_ns_context (struct nscontext *ctxt)
 
static HRESULT WINAPI namespacemanager_QueryInterface (IMXNamespaceManager *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI namespacemanager_AddRef (IMXNamespaceManager *iface)
 
static ULONG WINAPI namespacemanager_Release (IMXNamespaceManager *iface)
 
static HRESULT WINAPI namespacemanager_putAllowOverride (IMXNamespaceManager *iface, VARIANT_BOOL override)
 
static HRESULT WINAPI namespacemanager_getAllowOverride (IMXNamespaceManager *iface, VARIANT_BOOL *override)
 
static HRESULT WINAPI namespacemanager_reset (IMXNamespaceManager *iface)
 
static HRESULT WINAPI namespacemanager_pushContext (IMXNamespaceManager *iface)
 
static HRESULT WINAPI namespacemanager_pushNodeContext (IMXNamespaceManager *iface, IXMLDOMNode *node, VARIANT_BOOL deep)
 
static HRESULT WINAPI namespacemanager_popContext (IMXNamespaceManager *iface)
 
static HRESULT WINAPI namespacemanager_declarePrefix (IMXNamespaceManager *iface, const WCHAR *prefix, const WCHAR *namespaceURI)
 
static HRESULT WINAPI namespacemanager_getDeclaredPrefix (IMXNamespaceManager *iface, LONG index, WCHAR *prefix, int *prefix_len)
 
static HRESULT WINAPI namespacemanager_getPrefix (IMXNamespaceManager *iface, const WCHAR *uri, LONG index, WCHAR *prefix, int *prefix_len)
 
static HRESULT WINAPI namespacemanager_getURI (IMXNamespaceManager *iface, const WCHAR *prefix, IXMLDOMNode *node, WCHAR *uri, int *uri_len)
 
static HRESULT WINAPI vbnamespacemanager_QueryInterface (IVBMXNamespaceManager *iface, REFIID riid, void **obj)
 
static ULONG WINAPI vbnamespacemanager_AddRef (IVBMXNamespaceManager *iface)
 
static ULONG WINAPI vbnamespacemanager_Release (IVBMXNamespaceManager *iface)
 
static HRESULT WINAPI vbnamespacemanager_GetTypeInfoCount (IVBMXNamespaceManager *iface, UINT *pctinfo)
 
static HRESULT WINAPI vbnamespacemanager_GetTypeInfo (IVBMXNamespaceManager *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
 
static HRESULT WINAPI vbnamespacemanager_GetIDsOfNames (IVBMXNamespaceManager *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
 
static HRESULT WINAPI vbnamespacemanager_Invoke (IVBMXNamespaceManager *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
 
static HRESULT WINAPI vbnamespacemanager_put_allowOverride (IVBMXNamespaceManager *iface, VARIANT_BOOL override)
 
static HRESULT WINAPI vbnamespacemanager_get_allowOverride (IVBMXNamespaceManager *iface, VARIANT_BOOL *override)
 
static HRESULT WINAPI vbnamespacemanager_reset (IVBMXNamespaceManager *iface)
 
static HRESULT WINAPI vbnamespacemanager_pushContext (IVBMXNamespaceManager *iface)
 
static HRESULT WINAPI vbnamespacemanager_pushNodeContext (IVBMXNamespaceManager *iface, IXMLDOMNode *node, VARIANT_BOOL deep)
 
static HRESULT WINAPI vbnamespacemanager_popContext (IVBMXNamespaceManager *iface)
 
static HRESULT WINAPI vbnamespacemanager_declarePrefix (IVBMXNamespaceManager *iface, BSTR prefix, BSTR namespaceURI)
 
static HRESULT WINAPI vbnamespacemanager_getDeclaredPrefixes (IVBMXNamespaceManager *iface, IMXNamespacePrefixes **prefixes)
 
static HRESULT WINAPI vbnamespacemanager_getPrefixes (IVBMXNamespaceManager *iface, BSTR namespaceURI, IMXNamespacePrefixes **prefixes)
 
static HRESULT WINAPI vbnamespacemanager_getURI (IVBMXNamespaceManager *iface, BSTR prefix, VARIANT *uri)
 
static HRESULT WINAPI vbnamespacemanager_getURIFromNode (IVBMXNamespaceManager *iface, BSTR prefix, IXMLDOMNode *node, VARIANT *uri)
 
HRESULT MXNamespaceManager_create (void **obj)
 

Variables

static const WCHAR xmlW [] = {'x','m','l',0}
 
static const WCHAR xmluriW []
 
static const struct IMXNamespaceManagerVtbl MXNamespaceManagerVtbl
 
static const struct IVBMXNamespaceManagerVtbl VBMXNamespaceManagerVtbl
 
static const tid_t namespacemanager_iface_tids []
 
static dispex_static_data_t namespacemanager_dispex
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 21 of file mxnamespace.c.

◆ DEFAULT_PREFIX_ALLOC_COUNT

#define DEFAULT_PREFIX_ALLOC_COUNT   16

Definition at line 52 of file mxnamespace.c.

Function Documentation

◆ alloc_ns_context()

static struct nscontext * alloc_ns_context ( void  )
static

Definition at line 172 of file mxnamespace.c.

173{
174 struct nscontext *ctxt;
175
176 ctxt = malloc(sizeof(*ctxt));
177 if (!ctxt) return NULL;
178
179 ctxt->count = 0;
181 ctxt->ns = malloc(ctxt->max_alloc * sizeof(*ctxt->ns));
182 if (!ctxt->ns)
183 {
184 free(ctxt);
185 return NULL;
186 }
187
188 /* first allocated prefix is always 'xml' */
189 ctxt->ns[0].prefix = SysAllocString(xmlW);
190 ctxt->ns[0].uri = SysAllocString(xmluriW);
191 ctxt->count++;
192 if (!ctxt->ns[0].prefix || !ctxt->ns[0].uri)
193 {
194 free(ctxt->ns);
195 free(ctxt);
196 return NULL;
197 }
198
199 return ctxt;
200}
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
static const WCHAR xmluriW[]
Definition: mxnamespace.c:55
static const WCHAR xmlW[]
Definition: mxnamespace.c:54
#define DEFAULT_PREFIX_ALLOC_COUNT
Definition: mxnamespace.c:52
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238
struct ns * ns
Definition: mxnamespace.c:47
int max_alloc
Definition: mxnamespace.c:49

Referenced by MXNamespaceManager_create(), and vbnamespacemanager_pushContext().

◆ declare_prefix()

static HRESULT declare_prefix ( namespacemanager This,
const WCHAR prefix,
const WCHAR uri 
)
static

Definition at line 80 of file mxnamespace.c.

81{
82 struct nscontext *ctxt = LIST_ENTRY(list_head(&This->ctxts), struct nscontext, entry);
83 static const WCHAR emptyW[] = {0};
84 struct ns *ns;
85 int i;
86
87 if (ctxt->count == ctxt->max_alloc)
88 {
89 ctxt->max_alloc *= 2;
90 ctxt->ns = realloc(ctxt->ns, ctxt->max_alloc * sizeof(*ctxt->ns));
91 }
92
93 if (!prefix) prefix = emptyW;
94
95 ns = NULL;
96 for (i = 0; i < ctxt->count; i++)
97 if (!wcscmp(ctxt->ns[i].prefix, prefix))
98 {
99 ns = &ctxt->ns[i];
100 break;
101 }
102
103 if (ns)
104 {
105 if (This->override == VARIANT_TRUE)
106 {
109 return S_FALSE;
110 }
111 else
112 return E_FAIL;
113 }
114 else
115 {
116 ctxt->ns[ctxt->count].prefix = SysAllocString(prefix);
117 ctxt->ns[ctxt->count].uri = SysAllocString(uri);
118 ctxt->count++;
119 }
120
121 return S_OK;
122}
#define E_FAIL
Definition: ddrawi.h:102
#define realloc
Definition: debug_ros.c:6
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
Definition: wcs.c:1972
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
Definition: glfuncs.h:248
static const WCHAR emptyW[]
Definition: navigate.c:40
#define S_OK
Definition: intsafe.h:52
uint32_t entry
Definition: isohybrid.c:63
const char * uri
Definition: sec_mgr.c:1588
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
Definition: list.h:15
Definition: mxnamespace.c:38
BSTR uri
Definition: mxnamespace.c:40
#define LIST_ENTRY(type)
Definition: queue.h:175
Character const *const prefix
Definition: tempnam.cpp:195
#define S_FALSE
Definition: winerror.h:3451
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by namespacemanager_declarePrefix().

◆ free_ns_context()

static void free_ns_context ( struct nscontext ctxt)
static

Definition at line 202 of file mxnamespace.c.

203{
204 int i;
205
206 for (i = 0; i < ctxt->count; i++)
207 {
208 SysFreeString(ctxt->ns[i].prefix);
209 SysFreeString(ctxt->ns[i].uri);
210 }
211
212 free(ctxt->ns);
213 free(ctxt);
214}

Referenced by vbnamespacemanager_popContext(), and vbnamespacemanager_Release().

◆ get_declared_prefix_idx()

static HRESULT get_declared_prefix_idx ( const struct nscontext ctxt,
LONG  index,
BSTR prefix 
)
static

Definition at line 125 of file mxnamespace.c.

126{
127 *prefix = NULL;
128
129 if (index >= ctxt->count || index < 0) return E_FAIL;
130
131 if (index > 0) index = ctxt->count - index;
132 *prefix = ctxt->ns[index].prefix;
133
134 return S_OK;
135}
#define index(s, c)
Definition: various.h:29
GLuint index
Definition: glext.h:6031

Referenced by namespacemanager_getDeclaredPrefix().

◆ get_declared_prefix_uri()

static HRESULT get_declared_prefix_uri ( const struct list ctxts,
const WCHAR uri,
BSTR prefix 
)
static

Definition at line 138 of file mxnamespace.c.

139{
140 struct nscontext *ctxt;
141
142 LIST_FOR_EACH_ENTRY(ctxt, ctxts, struct nscontext, entry)
143 {
144 int i;
145 for (i = 0; i < ctxt->count; i++)
146 if (!wcscmp(ctxt->ns[i].uri, uri))
147 {
148 *prefix = ctxt->ns[i].prefix;
149 return S_OK;
150 }
151 }
152
153 *prefix = NULL;
154 return E_FAIL;
155}
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198

Referenced by namespacemanager_getPrefix().

◆ get_uri_from_prefix()

static HRESULT get_uri_from_prefix ( const struct nscontext ctxt,
const WCHAR prefix,
BSTR uri 
)
static

Definition at line 157 of file mxnamespace.c.

158{
159 int i;
160
161 for (i = 0; i < ctxt->count; i++)
162 if (!wcscmp(ctxt->ns[i].prefix, prefix))
163 {
164 *uri = ctxt->ns[i].uri;
165 return S_OK;
166 }
167
168 *uri = NULL;
169 return S_FALSE;
170}

Referenced by namespacemanager_getURI().

◆ impl_from_IMXNamespaceManager()

◆ impl_from_IVBMXNamespaceManager()

◆ MXNamespaceManager_create()

HRESULT MXNamespaceManager_create ( void **  obj)

Definition at line 638 of file mxnamespace.c.

639{
641 struct nscontext *ctxt;
642
643 TRACE("(%p)\n", obj);
644
645 This = malloc(sizeof(*This));
646 if( !This )
647 return E_OUTOFMEMORY;
648
649 This->IMXNamespaceManager_iface.lpVtbl = &MXNamespaceManagerVtbl;
650 This->IVBMXNamespaceManager_iface.lpVtbl = &VBMXNamespaceManagerVtbl;
651 This->ref = 1;
652 init_dispex(&This->dispex, (IUnknown*)&This->IVBMXNamespaceManager_iface, &namespacemanager_dispex);
653
654 list_init(&This->ctxts);
655 ctxt = alloc_ns_context();
656 if (!ctxt)
657 {
658 free(This);
659 return E_OUTOFMEMORY;
660 }
661
662 list_add_head(&This->ctxts, &ctxt->entry);
663
664 This->override = VARIANT_TRUE;
665
666 *obj = &This->IMXNamespaceManager_iface;
667
668 TRACE("returning iface %p\n", *obj);
669
670 return S_OK;
671}
static void list_add_head(struct list_entry *head, struct list_entry *entry)
Definition: list.h:76
static void list_init(struct list_entry *head)
Definition: list.h:51
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
HRESULT init_dispex(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype)
Definition: dispex.c:919
static const struct IVBMXNamespaceManagerVtbl VBMXNamespaceManagerVtbl
Definition: mxnamespace.c:604
static struct nscontext * alloc_ns_context(void)
Definition: mxnamespace.c:172
static const struct IMXNamespaceManagerVtbl MXNamespaceManagerVtbl
Definition: mxnamespace.c:382
static dispex_static_data_t namespacemanager_dispex
Definition: mxnamespace.c:631
#define TRACE(s)
Definition: solgame.cpp:4
struct list entry
Definition: mxnamespace.c:45

◆ namespacemanager_AddRef()

static ULONG WINAPI namespacemanager_AddRef ( IMXNamespaceManager *  iface)
static

Definition at line 222 of file mxnamespace.c.

223{
225 return IVBMXNamespaceManager_AddRef(&This->IVBMXNamespaceManager_iface);
226}
static namespacemanager * impl_from_IMXNamespaceManager(IMXNamespaceManager *iface)
Definition: mxnamespace.c:70

◆ namespacemanager_declarePrefix()

static HRESULT WINAPI namespacemanager_declarePrefix ( IMXNamespaceManager *  iface,
const WCHAR prefix,
const WCHAR namespaceURI 
)
static

Definition at line 273 of file mxnamespace.c.

275{
276 static const WCHAR xmlnsW[] = {'x','m','l','n','s',0};
277
279
280 TRACE("(%p)->(%s %s)\n", This, debugstr_w(prefix), debugstr_w(namespaceURI));
281
282 if (prefix && (!wcscmp(prefix, xmlW) || !wcscmp(prefix, xmlnsW) || !namespaceURI))
283 return E_INVALIDARG;
284
285 return declare_prefix(This, prefix, namespaceURI);
286}
#define E_INVALIDARG
Definition: ddrawi.h:101
static WCHAR xmlnsW[]
Definition: reader.c:228
#define debugstr_w
Definition: kernel32.h:32
static HRESULT declare_prefix(namespacemanager *This, const WCHAR *prefix, const WCHAR *uri)
Definition: mxnamespace.c:80

◆ namespacemanager_getAllowOverride()

static HRESULT WINAPI namespacemanager_getAllowOverride ( IMXNamespaceManager *  iface,
VARIANT_BOOL override 
)
static

Definition at line 241 of file mxnamespace.c.

243{
245 return IVBMXNamespaceManager_get_allowOverride(&This->IVBMXNamespaceManager_iface, override);
246}

◆ namespacemanager_getDeclaredPrefix()

static HRESULT WINAPI namespacemanager_getDeclaredPrefix ( IMXNamespaceManager *  iface,
LONG  index,
WCHAR prefix,
int prefix_len 
)
static

Definition at line 288 of file mxnamespace.c.

290{
292 struct nscontext *ctxt;
293 HRESULT hr;
294 BSTR prfx;
295
296 TRACE("%p, %ld, %p, %p.\n", This, index, prefix, prefix_len);
297
298 if (!prefix_len) return E_POINTER;
299
300 ctxt = LIST_ENTRY(list_head(&This->ctxts), struct nscontext, entry);
301 hr = get_declared_prefix_idx(ctxt, index, &prfx);
302 if (hr != S_OK) return hr;
303
304 if (prefix)
305 {
306 if (*prefix_len < (INT)SysStringLen(prfx)) return E_XML_BUFFERTOOSMALL;
307 lstrcpyW(prefix, prfx);
308 }
309
310 *prefix_len = SysStringLen(prfx);
311
312 return S_OK;
313}
OLECHAR * BSTR
Definition: compat.h:2293
#define lstrcpyW
Definition: compat.h:749
static HRESULT get_declared_prefix_idx(const struct nscontext *ctxt, LONG index, BSTR *prefix)
Definition: mxnamespace.c:125
UINT WINAPI SysStringLen(BSTR str)
Definition: oleaut.c:196
HRESULT hr
Definition: shlfolder.c:183
int32_t INT
Definition: typedefs.h:58
#define E_POINTER
Definition: winerror.h:3480

◆ namespacemanager_getPrefix()

static HRESULT WINAPI namespacemanager_getPrefix ( IMXNamespaceManager *  iface,
const WCHAR uri,
LONG  index,
WCHAR prefix,
int prefix_len 
)
static

Definition at line 315 of file mxnamespace.c.

317{
319 HRESULT hr;
320 BSTR prfx;
321
322 TRACE("%p, %s, %ld, %p, %p.\n", iface, debugstr_w(uri), index, prefix, prefix_len);
323
324 if (!uri || !*uri || !prefix_len) return E_INVALIDARG;
325
326 hr = get_declared_prefix_uri(&manager->ctxts, uri, &prfx);
327 if (hr == S_OK)
328 {
329 /* TODO: figure out what index argument is for */
330 if (index) return E_FAIL;
331
332 if (prefix)
333 {
334 if (*prefix_len < (INT)SysStringLen(prfx)) return E_XML_BUFFERTOOSMALL;
335 lstrcpyW(prefix, prfx);
336 }
337
338 *prefix_len = SysStringLen(prfx);
339 TRACE("prefix=%s\n", debugstr_w(prfx));
340 }
341
342 return hr;
343}
static HRESULT get_declared_prefix_uri(const struct list *ctxts, const WCHAR *uri, BSTR *prefix)
Definition: mxnamespace.c:138
struct list ctxts
Definition: mxnamespace.c:65

◆ namespacemanager_getURI()

static HRESULT WINAPI namespacemanager_getURI ( IMXNamespaceManager *  iface,
const WCHAR prefix,
IXMLDOMNode node,
WCHAR uri,
int uri_len 
)
static

Definition at line 345 of file mxnamespace.c.

347{
349 struct nscontext *ctxt;
350 HRESULT hr;
351 BSTR urib;
352
353 TRACE("(%p)->(%s %p %p %p)\n", This, debugstr_w(prefix), node, uri, uri_len);
354
355 if (!prefix) return E_INVALIDARG;
356 if (!uri_len) return E_POINTER;
357
358 if (node)
359 {
360 FIXME("namespaces from DOM node not supported\n");
361 return E_NOTIMPL;
362 }
363
364 ctxt = LIST_ENTRY(list_head(&This->ctxts), struct nscontext, entry);
365 hr = get_uri_from_prefix(ctxt, prefix, &urib);
366 if (hr == S_OK)
367 {
368 if (uri)
369 {
370 if (*uri_len < (INT)SysStringLen(urib)) return E_XML_BUFFERTOOSMALL;
371 lstrcpyW(uri, urib);
372 }
373 }
374 else
375 if (uri) *uri = 0;
376
377 *uri_len = SysStringLen(urib);
378
379 return hr;
380}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99
static HRESULT get_uri_from_prefix(const struct nscontext *ctxt, const WCHAR *prefix, BSTR *uri)
Definition: mxnamespace.c:157
Definition: dlist.c:348

◆ namespacemanager_popContext()

static HRESULT WINAPI namespacemanager_popContext ( IMXNamespaceManager *  iface)
static

Definition at line 267 of file mxnamespace.c.

268{
270 return IVBMXNamespaceManager_popContext(&This->IVBMXNamespaceManager_iface);
271}

◆ namespacemanager_pushContext()

static HRESULT WINAPI namespacemanager_pushContext ( IMXNamespaceManager *  iface)
static

Definition at line 254 of file mxnamespace.c.

255{
257 return IVBMXNamespaceManager_pushContext(&This->IVBMXNamespaceManager_iface);
258}

◆ namespacemanager_pushNodeContext()

static HRESULT WINAPI namespacemanager_pushNodeContext ( IMXNamespaceManager *  iface,
IXMLDOMNode node,
VARIANT_BOOL  deep 
)
static

Definition at line 260 of file mxnamespace.c.

262{
264 return IVBMXNamespaceManager_pushNodeContext(&This->IVBMXNamespaceManager_iface, node, deep);
265}

◆ namespacemanager_putAllowOverride()

static HRESULT WINAPI namespacemanager_putAllowOverride ( IMXNamespaceManager *  iface,
VARIANT_BOOL  override 
)
static

Definition at line 234 of file mxnamespace.c.

236{
238 return IVBMXNamespaceManager_put_allowOverride(&This->IVBMXNamespaceManager_iface, override);
239}

◆ namespacemanager_QueryInterface()

static HRESULT WINAPI namespacemanager_QueryInterface ( IMXNamespaceManager *  iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 216 of file mxnamespace.c.

217{
219 return IVBMXNamespaceManager_QueryInterface(&This->IVBMXNamespaceManager_iface, riid, ppvObject);
220}
REFIID riid
Definition: atlbase.h:39

◆ namespacemanager_Release()

static ULONG WINAPI namespacemanager_Release ( IMXNamespaceManager *  iface)
static

Definition at line 228 of file mxnamespace.c.

229{
231 return IVBMXNamespaceManager_Release(&This->IVBMXNamespaceManager_iface);
232}

◆ namespacemanager_reset()

static HRESULT WINAPI namespacemanager_reset ( IMXNamespaceManager *  iface)
static

Definition at line 248 of file mxnamespace.c.

249{
251 return IVBMXNamespaceManager_reset(&This->IVBMXNamespaceManager_iface);
252}

◆ vbnamespacemanager_AddRef()

static ULONG WINAPI vbnamespacemanager_AddRef ( IVBMXNamespaceManager *  iface)
static

Definition at line 430 of file mxnamespace.c.

431{
433 ULONG ref = InterlockedIncrement(&manager->ref);
434 TRACE("%p, refcount %lu.\n", iface, ref);
435 return ref;
436}
#define InterlockedIncrement
Definition: armddk.h:53
static namespacemanager * impl_from_IVBMXNamespaceManager(IVBMXNamespaceManager *iface)
Definition: mxnamespace.c:75
Definition: send.c:48
uint32_t ULONG
Definition: typedefs.h:59

◆ vbnamespacemanager_declarePrefix()

static HRESULT WINAPI vbnamespacemanager_declarePrefix ( IVBMXNamespaceManager *  iface,
BSTR  prefix,
BSTR  namespaceURI 
)
static

Definition at line 565 of file mxnamespace.c.

567{
569 return IMXNamespaceManager_declarePrefix(&This->IMXNamespaceManager_iface, prefix, namespaceURI);
570}

◆ vbnamespacemanager_get_allowOverride()

static HRESULT WINAPI vbnamespacemanager_get_allowOverride ( IVBMXNamespaceManager *  iface,
VARIANT_BOOL override 
)
static

Definition at line 503 of file mxnamespace.c.

505{
507
508 TRACE("(%p)->(%p)\n", This, override);
509
510 if (!override) return E_POINTER;
511 *override = This->override;
512
513 return S_OK;
514}

◆ vbnamespacemanager_getDeclaredPrefixes()

static HRESULT WINAPI vbnamespacemanager_getDeclaredPrefixes ( IVBMXNamespaceManager *  iface,
IMXNamespacePrefixes **  prefixes 
)
static

Definition at line 572 of file mxnamespace.c.

574{
576 FIXME("(%p)->(%p): stub\n", This, prefixes);
577 return E_NOTIMPL;
578}
static int prefixes
Definition: i386-dis.c:276

◆ vbnamespacemanager_GetIDsOfNames()

static HRESULT WINAPI vbnamespacemanager_GetIDsOfNames ( IVBMXNamespaceManager *  iface,
REFIID  riid,
LPOLESTR rgszNames,
UINT  cNames,
LCID  lcid,
DISPID rgDispId 
)
static

Definition at line 475 of file mxnamespace.c.

477{
479 return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface,
480 riid, rgszNames, cNames, lcid, rgDispId);
481}
LCID lcid
Definition: locale.c:5656

◆ vbnamespacemanager_getPrefixes()

static HRESULT WINAPI vbnamespacemanager_getPrefixes ( IVBMXNamespaceManager *  iface,
BSTR  namespaceURI,
IMXNamespacePrefixes **  prefixes 
)
static

Definition at line 580 of file mxnamespace.c.

582{
584 FIXME("(%p)->(%s %p): stub\n", This, debugstr_w(namespaceURI), prefixes);
585 return E_NOTIMPL;
586}

◆ vbnamespacemanager_GetTypeInfo()

static HRESULT WINAPI vbnamespacemanager_GetTypeInfo ( IVBMXNamespaceManager *  iface,
UINT  iTInfo,
LCID  lcid,
ITypeInfo **  ppTInfo 
)
static

Definition at line 467 of file mxnamespace.c.

469{
471 return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface,
472 iTInfo, lcid, ppTInfo);
473}

◆ vbnamespacemanager_GetTypeInfoCount()

static HRESULT WINAPI vbnamespacemanager_GetTypeInfoCount ( IVBMXNamespaceManager *  iface,
UINT pctinfo 
)
static

Definition at line 461 of file mxnamespace.c.

462{
464 return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
465}

◆ vbnamespacemanager_getURI()

static HRESULT WINAPI vbnamespacemanager_getURI ( IVBMXNamespaceManager *  iface,
BSTR  prefix,
VARIANT uri 
)
static

Definition at line 588 of file mxnamespace.c.

590{
592 FIXME("(%p)->(%s %p): stub\n", This, debugstr_w(prefix), uri);
593 return E_NOTIMPL;
594}

◆ vbnamespacemanager_getURIFromNode()

static HRESULT WINAPI vbnamespacemanager_getURIFromNode ( IVBMXNamespaceManager *  iface,
BSTR  prefix,
IXMLDOMNode node,
VARIANT uri 
)
static

Definition at line 596 of file mxnamespace.c.

598{
600 FIXME("(%p)->(%s %p %p): stub\n", This, debugstr_w(prefix), node, uri);
601 return E_NOTIMPL;
602}

◆ vbnamespacemanager_Invoke()

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

Definition at line 483 of file mxnamespace.c.

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

◆ vbnamespacemanager_popContext()

static HRESULT WINAPI vbnamespacemanager_popContext ( IVBMXNamespaceManager *  iface)
static

Definition at line 546 of file mxnamespace.c.

547{
549 const struct list *next;
550 struct nscontext *ctxt;
551
552 TRACE("(%p)\n", This);
553
554 next = list_next(&This->ctxts, list_head(&This->ctxts));
555 if (!next) return E_FAIL;
556
557 ctxt = LIST_ENTRY(list_head(&This->ctxts), struct nscontext, entry);
558 list_remove(list_head(&This->ctxts));
559
560 free_ns_context(ctxt);
561
562 return S_OK;
563}
static void list_remove(struct list_entry *entry)
Definition: list.h:90
Definition: list.h:37
static void free_ns_context(struct nscontext *ctxt)
Definition: mxnamespace.c:202
static unsigned __int64 next
Definition: rand_nt.c:6
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
Definition: list.h:115

◆ vbnamespacemanager_pushContext()

static HRESULT WINAPI vbnamespacemanager_pushContext ( IVBMXNamespaceManager *  iface)
static

Definition at line 523 of file mxnamespace.c.

524{
526 struct nscontext *ctxt;
527
528 TRACE("(%p)\n", This);
529
530 ctxt = alloc_ns_context();
531 if (!ctxt) return E_OUTOFMEMORY;
532
533 list_add_head(&This->ctxts, &ctxt->entry);
534
535 return S_OK;
536}

◆ vbnamespacemanager_pushNodeContext()

static HRESULT WINAPI vbnamespacemanager_pushNodeContext ( IVBMXNamespaceManager *  iface,
IXMLDOMNode node,
VARIANT_BOOL  deep 
)
static

Definition at line 538 of file mxnamespace.c.

540{
542 FIXME("(%p)->(%p %d): stub\n", This, node, deep);
543 return E_NOTIMPL;
544}

◆ vbnamespacemanager_put_allowOverride()

static HRESULT WINAPI vbnamespacemanager_put_allowOverride ( IVBMXNamespaceManager *  iface,
VARIANT_BOOL  override 
)
static

Definition at line 492 of file mxnamespace.c.

494{
496
497 TRACE("(%p)->(%d)\n", This, override);
498 This->override = override;
499
500 return S_OK;
501}

◆ vbnamespacemanager_QueryInterface()

static HRESULT WINAPI vbnamespacemanager_QueryInterface ( IVBMXNamespaceManager *  iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 399 of file mxnamespace.c.

400{
402 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), obj);
403
404 if ( IsEqualGUID( riid, &IID_IMXNamespaceManager) ||
406 {
407 *obj = &This->IMXNamespaceManager_iface;
408 }
409 else if ( IsEqualGUID( riid, &IID_IVBMXNamespaceManager) ||
411 {
412 *obj = &This->IVBMXNamespaceManager_iface;
413 }
414 else if (dispex_query_interface(&This->dispex, riid, obj))
415 {
416 return *obj ? S_OK : E_NOINTERFACE;
417 }
418 else
419 {
420 TRACE("Unsupported interface %s\n", debugstr_guid(riid));
421 *obj = NULL;
422 return E_NOINTERFACE;
423 }
424
425 IVBMXNamespaceManager_AddRef( iface );
426
427 return S_OK;
428}
const GUID IID_IUnknown
#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

◆ vbnamespacemanager_Release()

static ULONG WINAPI vbnamespacemanager_Release ( IVBMXNamespaceManager *  iface)
static

Definition at line 438 of file mxnamespace.c.

439{
442
443 TRACE("%p, refcount %lu.\n", iface, ref);
444
445 if (!ref)
446 {
447 struct nscontext *ctxt, *ctxt2;
448
449 LIST_FOR_EACH_ENTRY_SAFE(ctxt, ctxt2, &This->ctxts, struct nscontext, entry)
450 {
451 list_remove(&ctxt->entry);
452 free_ns_context(ctxt);
453 }
454
455 free(This);
456 }
457
458 return ref;
459}
#define InterlockedDecrement
Definition: armddk.h:52
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
Definition: list.h:204

◆ vbnamespacemanager_reset()

static HRESULT WINAPI vbnamespacemanager_reset ( IVBMXNamespaceManager *  iface)
static

Definition at line 516 of file mxnamespace.c.

517{
519 FIXME("(%p): stub\n", This);
520 return E_NOTIMPL;
521}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( msxml  )

Variable Documentation

◆ MXNamespaceManagerVtbl

const struct IMXNamespaceManagerVtbl MXNamespaceManagerVtbl
static
Initial value:
=
{
}
static HRESULT WINAPI namespacemanager_pushContext(IMXNamespaceManager *iface)
Definition: mxnamespace.c:254
static HRESULT WINAPI namespacemanager_getPrefix(IMXNamespaceManager *iface, const WCHAR *uri, LONG index, WCHAR *prefix, int *prefix_len)
Definition: mxnamespace.c:315
static HRESULT WINAPI namespacemanager_getURI(IMXNamespaceManager *iface, const WCHAR *prefix, IXMLDOMNode *node, WCHAR *uri, int *uri_len)
Definition: mxnamespace.c:345
static HRESULT WINAPI namespacemanager_QueryInterface(IMXNamespaceManager *iface, REFIID riid, void **ppvObject)
Definition: mxnamespace.c:216
static ULONG WINAPI namespacemanager_Release(IMXNamespaceManager *iface)
Definition: mxnamespace.c:228
static HRESULT WINAPI namespacemanager_popContext(IMXNamespaceManager *iface)
Definition: mxnamespace.c:267
static HRESULT WINAPI namespacemanager_getDeclaredPrefix(IMXNamespaceManager *iface, LONG index, WCHAR *prefix, int *prefix_len)
Definition: mxnamespace.c:288
static HRESULT WINAPI namespacemanager_pushNodeContext(IMXNamespaceManager *iface, IXMLDOMNode *node, VARIANT_BOOL deep)
Definition: mxnamespace.c:260
static HRESULT WINAPI namespacemanager_declarePrefix(IMXNamespaceManager *iface, const WCHAR *prefix, const WCHAR *namespaceURI)
Definition: mxnamespace.c:273
static HRESULT WINAPI namespacemanager_putAllowOverride(IMXNamespaceManager *iface, VARIANT_BOOL override)
Definition: mxnamespace.c:234
static HRESULT WINAPI namespacemanager_reset(IMXNamespaceManager *iface)
Definition: mxnamespace.c:248
static HRESULT WINAPI namespacemanager_getAllowOverride(IMXNamespaceManager *iface, VARIANT_BOOL *override)
Definition: mxnamespace.c:241
static ULONG WINAPI namespacemanager_AddRef(IMXNamespaceManager *iface)
Definition: mxnamespace.c:222

Definition at line 382 of file mxnamespace.c.

Referenced by MXNamespaceManager_create().

◆ namespacemanager_dispex

dispex_static_data_t namespacemanager_dispex
static
Initial value:
= {
}
@ IVBMXNamespaceManager_tid
Definition: msxml_dispex.h:77
static const tid_t namespacemanager_iface_tids[]
Definition: mxnamespace.c:626

Definition at line 631 of file mxnamespace.c.

Referenced by MXNamespaceManager_create().

◆ namespacemanager_iface_tids

const tid_t namespacemanager_iface_tids[]
static
Initial value:

Definition at line 626 of file mxnamespace.c.

◆ VBMXNamespaceManagerVtbl

const struct IVBMXNamespaceManagerVtbl VBMXNamespaceManagerVtbl
static
Initial value:
=
{
}
static HRESULT WINAPI vbnamespacemanager_getURI(IVBMXNamespaceManager *iface, BSTR prefix, VARIANT *uri)
Definition: mxnamespace.c:588
static HRESULT WINAPI vbnamespacemanager_pushNodeContext(IVBMXNamespaceManager *iface, IXMLDOMNode *node, VARIANT_BOOL deep)
Definition: mxnamespace.c:538
static HRESULT WINAPI vbnamespacemanager_reset(IVBMXNamespaceManager *iface)
Definition: mxnamespace.c:516
static HRESULT WINAPI vbnamespacemanager_popContext(IVBMXNamespaceManager *iface)
Definition: mxnamespace.c:546
static HRESULT WINAPI vbnamespacemanager_pushContext(IVBMXNamespaceManager *iface)
Definition: mxnamespace.c:523
static HRESULT WINAPI vbnamespacemanager_getURIFromNode(IVBMXNamespaceManager *iface, BSTR prefix, IXMLDOMNode *node, VARIANT *uri)
Definition: mxnamespace.c:596
static ULONG WINAPI vbnamespacemanager_AddRef(IVBMXNamespaceManager *iface)
Definition: mxnamespace.c:430
static HRESULT WINAPI vbnamespacemanager_get_allowOverride(IVBMXNamespaceManager *iface, VARIANT_BOOL *override)
Definition: mxnamespace.c:503
static HRESULT WINAPI vbnamespacemanager_put_allowOverride(IVBMXNamespaceManager *iface, VARIANT_BOOL override)
Definition: mxnamespace.c:492
static HRESULT WINAPI vbnamespacemanager_getPrefixes(IVBMXNamespaceManager *iface, BSTR namespaceURI, IMXNamespacePrefixes **prefixes)
Definition: mxnamespace.c:580
static HRESULT WINAPI vbnamespacemanager_declarePrefix(IVBMXNamespaceManager *iface, BSTR prefix, BSTR namespaceURI)
Definition: mxnamespace.c:565
static HRESULT WINAPI vbnamespacemanager_GetTypeInfo(IVBMXNamespaceManager *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: mxnamespace.c:467
static ULONG WINAPI vbnamespacemanager_Release(IVBMXNamespaceManager *iface)
Definition: mxnamespace.c:438
static HRESULT WINAPI vbnamespacemanager_GetIDsOfNames(IVBMXNamespaceManager *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: mxnamespace.c:475
static HRESULT WINAPI vbnamespacemanager_GetTypeInfoCount(IVBMXNamespaceManager *iface, UINT *pctinfo)
Definition: mxnamespace.c:461
static HRESULT WINAPI vbnamespacemanager_QueryInterface(IVBMXNamespaceManager *iface, REFIID riid, void **obj)
Definition: mxnamespace.c:399
static HRESULT WINAPI vbnamespacemanager_Invoke(IVBMXNamespaceManager *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: mxnamespace.c:483
static HRESULT WINAPI vbnamespacemanager_getDeclaredPrefixes(IVBMXNamespaceManager *iface, IMXNamespacePrefixes **prefixes)
Definition: mxnamespace.c:572

Definition at line 604 of file mxnamespace.c.

Referenced by MXNamespaceManager_create().

◆ xmluriW

const WCHAR xmluriW[]
static
Initial value:
= {'h','t','t','p',':','/','/','w','w','w','.','w','3','.','o','r','g',
'/','X','M','L','/','1','9','9','8','/','n','a','m','e','s','p','a','c','e',0}

Definition at line 55 of file mxnamespace.c.

Referenced by alloc_ns_context().

◆ xmlW