blob: d609109b3df36d571f878f5b716a1e0896097987 [file] [log] [blame]
Mike McCormack3b5c2222005-08-03 10:58:47 +00001/*
2 * DOM Document implementation
3 *
4 * Copyright 2005 Mike McCormack
5 *
Huw Daviesd1b21b52005-11-08 12:46:43 +00006 * This library is free software; you can redistribute it and/or
Mike McCormack3b5c2222005-08-03 10:58:47 +00007 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
Huw Daviesd1b21b52005-11-08 12:46:43 +000011 * This library is distributed in the hope that it will be useful,
Mike McCormack3b5c2222005-08-03 10:58:47 +000012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21#define COBJMACROS
22
23#include "config.h"
24
25#include <stdarg.h>
26#include "windef.h"
27#include "winbase.h"
28#include "winuser.h"
29#include "ole2.h"
Huw Davies5b8be5d2005-11-08 19:59:36 +000030#include "msxml2.h"
Mike McCormack3b5c2222005-08-03 10:58:47 +000031
32#include "msxml_private.h"
33
34#include "wine/debug.h"
35
36WINE_DEFAULT_DEBUG_CHANNEL(msxml);
37
Jacek Caban049e9b62005-08-08 12:13:31 +000038#ifdef HAVE_LIBXML2
39
Mike McCormack3b5c2222005-08-03 10:58:47 +000040typedef struct _domelem
41{
42 const struct IXMLDOMElementVtbl *lpVtbl;
43 LONG ref;
Mike McCormack65293d82005-08-10 09:54:22 +000044 IXMLDOMNode *node;
Mike McCormack3b5c2222005-08-03 10:58:47 +000045} domelem;
46
47static inline domelem *impl_from_IXMLDOMElement( IXMLDOMElement *iface )
48{
49 return (domelem *)((char*)iface - FIELD_OFFSET(domelem, lpVtbl));
50}
51
Mike McCormack23f192d2005-08-18 10:48:13 +000052static inline xmlNodePtr get_element( domelem *This )
53{
54 return xmlNodePtr_from_domnode( This->node, XML_ELEMENT_NODE );
55}
56
Mike McCormack3b5c2222005-08-03 10:58:47 +000057static HRESULT WINAPI domelem_QueryInterface(
58 IXMLDOMElement *iface,
59 REFIID riid,
60 void** ppvObject )
61{
Huw Davies82aa9182005-10-31 21:04:31 +000062 TRACE("%p %s %p\n", iface, debugstr_guid(riid), ppvObject);
Mike McCormack3b5c2222005-08-03 10:58:47 +000063
64 if ( IsEqualGUID( riid, &IID_IXMLDOMElement ) ||
65 IsEqualGUID( riid, &IID_IUnknown ) ||
66 IsEqualGUID( riid, &IID_IDispatch ) ||
67 IsEqualGUID( riid, &IID_IXMLDOMNode ) )
68 {
69 *ppvObject = iface;
70 }
71 else
72 return E_NOINTERFACE;
73
74 IXMLDOMElement_AddRef( iface );
75
76 return S_OK;
77}
78
79static ULONG WINAPI domelem_AddRef(
80 IXMLDOMElement *iface )
81{
82 domelem *This = impl_from_IXMLDOMElement( iface );
83 return InterlockedIncrement( &This->ref );
84}
85
86static ULONG WINAPI domelem_Release(
87 IXMLDOMElement *iface )
88{
89 domelem *This = impl_from_IXMLDOMElement( iface );
90 ULONG ref;
91
92 ref = InterlockedDecrement( &This->ref );
93 if ( ref == 0 )
94 {
Mike McCormack65293d82005-08-10 09:54:22 +000095 IXMLDOMNode_Release( This->node );
Mike McCormack3b5c2222005-08-03 10:58:47 +000096 HeapFree( GetProcessHeap(), 0, This );
97 }
98
99 return ref;
100}
101
102static HRESULT WINAPI domelem_GetTypeInfoCount(
103 IXMLDOMElement *iface,
104 UINT* pctinfo )
105{
106 FIXME("\n");
107 return E_NOTIMPL;
108}
109
110static HRESULT WINAPI domelem_GetTypeInfo(
111 IXMLDOMElement *iface,
112 UINT iTInfo, LCID lcid,
113 ITypeInfo** ppTInfo )
114{
115 FIXME("\n");
116 return E_NOTIMPL;
117}
118
119static HRESULT WINAPI domelem_GetIDsOfNames(
120 IXMLDOMElement *iface,
121 REFIID riid, LPOLESTR* rgszNames,
122 UINT cNames, LCID lcid, DISPID* rgDispId )
123{
124 FIXME("\n");
125 return E_NOTIMPL;
126}
127
128static HRESULT WINAPI domelem_Invoke(
129 IXMLDOMElement *iface,
130 DISPID dispIdMember, REFIID riid, LCID lcid,
131 WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
132 EXCEPINFO* pExcepInfo, UINT* puArgErr )
133{
134 FIXME("\n");
135 return E_NOTIMPL;
136}
137
138static HRESULT WINAPI domelem_get_nodeName(
139 IXMLDOMElement *iface,
140 BSTR* p )
141{
Mike McCormack23f192d2005-08-18 10:48:13 +0000142 domelem *This = impl_from_IXMLDOMElement( iface );
143 return IXMLDOMNode_get_nodeName( This->node, p );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000144}
145
146static HRESULT WINAPI domelem_get_nodeValue(
147 IXMLDOMElement *iface,
148 VARIANT* var1 )
149{
Mike McCormack23f192d2005-08-18 10:48:13 +0000150 domelem *This = impl_from_IXMLDOMElement( iface );
151 return IXMLDOMNode_get_nodeValue( This->node, var1 );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000152}
153
154static HRESULT WINAPI domelem_put_nodeValue(
155 IXMLDOMElement *iface,
156 VARIANT var1 )
157{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000158 domelem *This = impl_from_IXMLDOMElement( iface );
159 return IXMLDOMNode_put_nodeValue( This->node, var1 );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000160}
161
162static HRESULT WINAPI domelem_get_nodeType(
163 IXMLDOMElement *iface,
164 DOMNodeType* domNodeType )
165{
Mike McCormack23f192d2005-08-18 10:48:13 +0000166 domelem *This = impl_from_IXMLDOMElement( iface );
167 return IXMLDOMNode_get_nodeType( This->node, domNodeType );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000168}
169
170static HRESULT WINAPI domelem_get_parentNode(
171 IXMLDOMElement *iface,
172 IXMLDOMNode** parent )
173{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000174 domelem *This = impl_from_IXMLDOMElement( iface );
175 return IXMLDOMNode_get_parentNode( This->node, parent );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000176}
177
178static HRESULT WINAPI domelem_get_childNodes(
179 IXMLDOMElement *iface,
180 IXMLDOMNodeList** outList)
181{
Mike McCormack23f192d2005-08-18 10:48:13 +0000182 domelem *This = impl_from_IXMLDOMElement( iface );
183 return IXMLDOMNode_get_childNodes( This->node, outList );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000184}
185
186static HRESULT WINAPI domelem_get_firstChild(
187 IXMLDOMElement *iface,
188 IXMLDOMNode** domNode)
189{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000190 domelem *This = impl_from_IXMLDOMElement( iface );
191 return IXMLDOMNode_get_firstChild( This->node, domNode );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000192}
193
194static HRESULT WINAPI domelem_get_lastChild(
195 IXMLDOMElement *iface,
196 IXMLDOMNode** domNode)
197{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000198 domelem *This = impl_from_IXMLDOMElement( iface );
199 return IXMLDOMNode_get_lastChild( This->node, domNode );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000200}
201
202static HRESULT WINAPI domelem_get_previousSibling(
203 IXMLDOMElement *iface,
204 IXMLDOMNode** domNode)
205{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000206 domelem *This = impl_from_IXMLDOMElement( iface );
207 return IXMLDOMNode_get_previousSibling( This->node, domNode );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000208}
209
210static HRESULT WINAPI domelem_get_nextSibling(
211 IXMLDOMElement *iface,
212 IXMLDOMNode** domNode)
213{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000214 domelem *This = impl_from_IXMLDOMElement( iface );
215 return IXMLDOMNode_get_nextSibling( This->node, domNode );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000216}
217
218static HRESULT WINAPI domelem_get_attributes(
219 IXMLDOMElement *iface,
220 IXMLDOMNamedNodeMap** attributeMap)
221{
Mike McCormack23f192d2005-08-18 10:48:13 +0000222 domelem *This = impl_from_IXMLDOMElement( iface );
223 return IXMLDOMNode_get_attributes( This->node, attributeMap );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000224}
225
226static HRESULT WINAPI domelem_insertBefore(
227 IXMLDOMElement *iface,
228 IXMLDOMNode* newNode, VARIANT var1,
229 IXMLDOMNode** outOldNode)
230{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000231 domelem *This = impl_from_IXMLDOMElement( iface );
232 return IXMLDOMNode_insertBefore( This->node, newNode, var1, outOldNode );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000233}
234
235static HRESULT WINAPI domelem_replaceChild(
236 IXMLDOMElement *iface,
237 IXMLDOMNode* newNode,
238 IXMLDOMNode* oldNode,
239 IXMLDOMNode** outOldNode)
240{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000241 domelem *This = impl_from_IXMLDOMElement( iface );
242 return IXMLDOMNode_replaceChild( This->node, newNode, oldNode, outOldNode );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000243}
244
245static HRESULT WINAPI domelem_removeChild(
246 IXMLDOMElement *iface,
247 IXMLDOMNode* domNode, IXMLDOMNode** oldNode)
248{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000249 domelem *This = impl_from_IXMLDOMElement( iface );
250 return IXMLDOMNode_removeChild( This->node, domNode, oldNode );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000251}
252
253static HRESULT WINAPI domelem_appendChild(
254 IXMLDOMElement *iface,
255 IXMLDOMNode* newNode, IXMLDOMNode** outNewNode)
256{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000257 domelem *This = impl_from_IXMLDOMElement( iface );
258 return IXMLDOMNode_appendChild( This->node, newNode, outNewNode );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000259}
260
261static HRESULT WINAPI domelem_hasChildNodes(
262 IXMLDOMElement *iface,
263 VARIANT_BOOL* pbool)
264{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000265 domelem *This = impl_from_IXMLDOMElement( iface );
266 return IXMLDOMNode_hasChildNodes( This->node, pbool );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000267}
268
269static HRESULT WINAPI domelem_get_ownerDocument(
270 IXMLDOMElement *iface,
271 IXMLDOMDocument** domDocument)
272{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000273 domelem *This = impl_from_IXMLDOMElement( iface );
274 return IXMLDOMNode_get_ownerDocument( This->node, domDocument );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000275}
276
277static HRESULT WINAPI domelem_cloneNode(
278 IXMLDOMElement *iface,
279 VARIANT_BOOL pbool, IXMLDOMNode** outNode)
280{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000281 domelem *This = impl_from_IXMLDOMElement( iface );
282 return IXMLDOMNode_cloneNode( This->node, pbool, outNode );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000283}
284
285static HRESULT WINAPI domelem_get_nodeTypeString(
286 IXMLDOMElement *iface,
287 BSTR* p)
288{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000289 domelem *This = impl_from_IXMLDOMElement( iface );
290 return IXMLDOMNode_get_nodeTypeString( This->node, p );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000291}
292
293static HRESULT WINAPI domelem_get_text(
294 IXMLDOMElement *iface,
295 BSTR* p)
296{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000297 domelem *This = impl_from_IXMLDOMElement( iface );
298 return IXMLDOMNode_get_text( This->node, p );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000299}
300
301static HRESULT WINAPI domelem_put_text(
302 IXMLDOMElement *iface,
303 BSTR p)
304{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000305 domelem *This = impl_from_IXMLDOMElement( iface );
306 return IXMLDOMNode_put_text( This->node, p );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000307}
308
309static HRESULT WINAPI domelem_get_specified(
310 IXMLDOMElement *iface,
311 VARIANT_BOOL* pbool)
312{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000313 domelem *This = impl_from_IXMLDOMElement( iface );
314 return IXMLDOMNode_get_specified( This->node, pbool );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000315}
316
317static HRESULT WINAPI domelem_get_definition(
318 IXMLDOMElement *iface,
319 IXMLDOMNode** domNode)
320{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000321 domelem *This = impl_from_IXMLDOMElement( iface );
322 return IXMLDOMNode_get_definition( This->node, domNode );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000323}
324
325static HRESULT WINAPI domelem_get_nodeTypedValue(
326 IXMLDOMElement *iface,
327 VARIANT* var1)
328{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000329 domelem *This = impl_from_IXMLDOMElement( iface );
330 return IXMLDOMNode_get_nodeTypedValue( This->node, var1 );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000331}
332
333static HRESULT WINAPI domelem_put_nodeTypedValue(
334 IXMLDOMElement *iface,
335 VARIANT var1)
336{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000337 domelem *This = impl_from_IXMLDOMElement( iface );
338 return IXMLDOMNode_put_nodeTypedValue( This->node, var1 );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000339}
340
341static HRESULT WINAPI domelem_get_dataType(
342 IXMLDOMElement *iface,
343 VARIANT* var1)
344{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000345 domelem *This = impl_from_IXMLDOMElement( iface );
346 return IXMLDOMNode_get_dataType( This->node, var1 );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000347}
348
349static HRESULT WINAPI domelem_put_dataType(
350 IXMLDOMElement *iface,
351 BSTR p)
352{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000353 domelem *This = impl_from_IXMLDOMElement( iface );
354 return IXMLDOMNode_put_dataType( This->node, p );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000355}
356
357static HRESULT WINAPI domelem_get_xml(
358 IXMLDOMElement *iface,
359 BSTR* p)
360{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000361 domelem *This = impl_from_IXMLDOMElement( iface );
362 return IXMLDOMNode_get_xml( This->node, p );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000363}
364
365static HRESULT WINAPI domelem_transformNode(
366 IXMLDOMElement *iface,
367 IXMLDOMNode* domNode, BSTR* p)
368{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000369 domelem *This = impl_from_IXMLDOMElement( iface );
370 return IXMLDOMNode_transformNode( This->node, domNode, p );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000371}
372
373static HRESULT WINAPI domelem_selectNodes(
374 IXMLDOMElement *iface,
375 BSTR p, IXMLDOMNodeList** outList)
376{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000377 domelem *This = impl_from_IXMLDOMElement( iface );
378 return IXMLDOMNode_selectNodes( This->node, p, outList );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000379}
380
381static HRESULT WINAPI domelem_selectSingleNode(
382 IXMLDOMElement *iface,
383 BSTR p, IXMLDOMNode** outNode)
384{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000385 domelem *This = impl_from_IXMLDOMElement( iface );
386 return IXMLDOMNode_selectSingleNode( This->node, p, outNode );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000387}
388
389static HRESULT WINAPI domelem_get_parsed(
390 IXMLDOMElement *iface,
391 VARIANT_BOOL* pbool)
392{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000393 domelem *This = impl_from_IXMLDOMElement( iface );
394 return IXMLDOMNode_get_parsed( This->node, pbool );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000395}
396
397static HRESULT WINAPI domelem_get_namespaceURI(
398 IXMLDOMElement *iface,
399 BSTR* p)
400{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000401 domelem *This = impl_from_IXMLDOMElement( iface );
402 return IXMLDOMNode_get_namespaceURI( This->node, p );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000403}
404
405static HRESULT WINAPI domelem_get_prefix(
406 IXMLDOMElement *iface,
407 BSTR* p)
408{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000409 domelem *This = impl_from_IXMLDOMElement( iface );
410 return IXMLDOMNode_get_prefix( This->node, p );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000411}
412
413static HRESULT WINAPI domelem_get_baseName(
414 IXMLDOMElement *iface,
415 BSTR* p)
416{
Mike McCormack23f192d2005-08-18 10:48:13 +0000417 domelem *This = impl_from_IXMLDOMElement( iface );
418 return IXMLDOMNode_get_baseName( This->node, p );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000419}
420
421static HRESULT WINAPI domelem_transformNodeToObject(
422 IXMLDOMElement *iface,
423 IXMLDOMNode* domNode, VARIANT var1)
424{
Mike McCormackd61f8f82005-08-22 09:23:52 +0000425 domelem *This = impl_from_IXMLDOMElement( iface );
426 return IXMLDOMNode_transformNodeToObject( This->node, domNode, var1 );
Mike McCormack3b5c2222005-08-03 10:58:47 +0000427}
428
429static HRESULT WINAPI domelem_get_tagName(
430 IXMLDOMElement *iface,
431 BSTR* p)
432{
Mike McCormack77392f22005-08-11 10:57:58 +0000433 domelem *This = impl_from_IXMLDOMElement( iface );
434 xmlNodePtr element;
435
436 TRACE("%p\n", This );
437
438 if ( !This->node )
439 return E_FAIL;
440
Mike McCormack23f192d2005-08-18 10:48:13 +0000441 element = get_element( This );
Mike McCormack77392f22005-08-11 10:57:58 +0000442 if ( !element )
443 return E_FAIL;
444
445 *p = bstr_from_xmlChar( element->name );
446
447 return S_OK;
Mike McCormack3b5c2222005-08-03 10:58:47 +0000448}
449
450static HRESULT WINAPI domelem_getAttribute(
451 IXMLDOMElement *iface,
452 BSTR p, VARIANT* var)
453{
454 FIXME("\n");
455 return E_NOTIMPL;
456}
457
458static HRESULT WINAPI domelem_setAttribute(
459 IXMLDOMElement *iface,
460 BSTR p, VARIANT var)
461{
462 FIXME("\n");
463 return E_NOTIMPL;
464}
465
466static HRESULT WINAPI domelem_removeAttribute(
467 IXMLDOMElement *iface,
468 BSTR p)
469{
470 FIXME("\n");
471 return E_NOTIMPL;
472}
473
474static HRESULT WINAPI domelem_getAttributeNode(
475 IXMLDOMElement *iface,
476 BSTR p, IXMLDOMAttribute** attributeNode )
477{
478 FIXME("\n");
479 return E_NOTIMPL;
480}
481
482static HRESULT WINAPI domelem_setAttributeNode(
483 IXMLDOMElement *iface,
484 IXMLDOMAttribute* domAttribute,
485 IXMLDOMAttribute** attributeNode)
486{
487 FIXME("\n");
488 return E_NOTIMPL;
489}
490
491static HRESULT WINAPI domelem_removeAttributeNode(
492 IXMLDOMElement *iface,
493 IXMLDOMAttribute* domAttribute,
494 IXMLDOMAttribute** attributeNode)
495{
496 FIXME("\n");
497 return E_NOTIMPL;
498}
499
500static HRESULT WINAPI domelem_getElementsByTagName(
501 IXMLDOMElement *iface,
502 BSTR p, IXMLDOMNodeList** resultList)
503{
504 FIXME("\n");
505 return E_NOTIMPL;
506}
507
508static HRESULT WINAPI domelem_normalize(
509 IXMLDOMElement *iface )
510{
511 FIXME("\n");
512 return E_NOTIMPL;
513}
514
Mike McCormack67630652005-08-08 15:04:00 +0000515static const struct IXMLDOMElementVtbl domelem_vtbl =
Mike McCormack3b5c2222005-08-03 10:58:47 +0000516{
517 domelem_QueryInterface,
518 domelem_AddRef,
519 domelem_Release,
520 domelem_GetTypeInfoCount,
521 domelem_GetTypeInfo,
522 domelem_GetIDsOfNames,
523 domelem_Invoke,
524 domelem_get_nodeName,
525 domelem_get_nodeValue,
526 domelem_put_nodeValue,
527 domelem_get_nodeType,
528 domelem_get_parentNode,
529 domelem_get_childNodes,
530 domelem_get_firstChild,
531 domelem_get_lastChild,
532 domelem_get_previousSibling,
533 domelem_get_nextSibling,
534 domelem_get_attributes,
535 domelem_insertBefore,
536 domelem_replaceChild,
537 domelem_removeChild,
538 domelem_appendChild,
539 domelem_hasChildNodes,
540 domelem_get_ownerDocument,
541 domelem_cloneNode,
542 domelem_get_nodeTypeString,
543 domelem_get_text,
544 domelem_put_text,
545 domelem_get_specified,
546 domelem_get_definition,
547 domelem_get_nodeTypedValue,
548 domelem_put_nodeTypedValue,
549 domelem_get_dataType,
550 domelem_put_dataType,
551 domelem_get_xml,
552 domelem_transformNode,
553 domelem_selectNodes,
554 domelem_selectSingleNode,
555 domelem_get_parsed,
556 domelem_get_namespaceURI,
557 domelem_get_prefix,
558 domelem_get_baseName,
559 domelem_transformNodeToObject,
560 domelem_get_tagName,
561 domelem_getAttribute,
562 domelem_setAttribute,
563 domelem_removeAttribute,
564 domelem_getAttributeNode,
565 domelem_setAttributeNode,
566 domelem_removeAttributeNode,
567 domelem_getElementsByTagName,
568 domelem_normalize,
569};
570
Mike McCormack65293d82005-08-10 09:54:22 +0000571IXMLDOMElement* create_element( xmlNodePtr element )
Mike McCormack3b5c2222005-08-03 10:58:47 +0000572{
Mike McCormack65293d82005-08-10 09:54:22 +0000573 domelem *This;
Mike McCormack3b5c2222005-08-03 10:58:47 +0000574
Mike McCormack65293d82005-08-10 09:54:22 +0000575 This = HeapAlloc( GetProcessHeap(), 0, sizeof *This );
576 if ( !This )
577 return NULL;
Mike McCormack3b5c2222005-08-03 10:58:47 +0000578
Mike McCormack65293d82005-08-10 09:54:22 +0000579 This->lpVtbl = &domelem_vtbl;
Mike McCormack23860232005-08-19 10:03:27 +0000580 This->node = create_node( element );
Mike McCormack65293d82005-08-10 09:54:22 +0000581 This->ref = 1;
Mike McCormack3b5c2222005-08-03 10:58:47 +0000582
Mike McCormack65293d82005-08-10 09:54:22 +0000583 if ( !This->node )
584 {
585 HeapFree( GetProcessHeap(), 0, This );
586 return NULL;
587 }
Mike McCormack3b5c2222005-08-03 10:58:47 +0000588
Mike McCormack65293d82005-08-10 09:54:22 +0000589 return (IXMLDOMElement*) &This->lpVtbl;
Mike McCormack3b5c2222005-08-03 10:58:47 +0000590}
Jacek Caban049e9b62005-08-08 12:13:31 +0000591
592#endif