51typedef struct _xmlelem
53 IXMLElement IXMLElement_iface;
59static inline xmlelem *impl_from_IXMLElement(IXMLElement *iface)
66 xmlelem *
This = impl_from_IXMLElement(iface);
83 IXMLElement_AddRef(iface);
88static ULONG WINAPI xmlelem_AddRef(IXMLElement *iface)
90 xmlelem *
This = impl_from_IXMLElement(iface);
95static ULONG WINAPI xmlelem_Release(IXMLElement *iface)
97 xmlelem *
This = impl_from_IXMLElement(iface);
114 xmlelem *
This = impl_from_IXMLElement(iface);
126 xmlelem *
This = impl_from_IXMLElement(iface);
129 TRACE(
"(%p)->(%u %u %p)\n",
This, iTInfo, lcid, ppTInfo);
140 xmlelem *
This = impl_from_IXMLElement(iface);
147 if(!rgszNames || cNames == 0 || !rgDispId)
153 hr = ITypeInfo_GetIDsOfNames(
typeinfo, rgszNames, cNames, rgDispId);
162 DISPPARAMS* pDispParams,
VARIANT* pVarResult,
163 EXCEPINFO* pExcepInfo,
UINT* puArgErr)
165 xmlelem *
This = impl_from_IXMLElement(iface);
170 lcid,
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
176 pVarResult, pExcepInfo, puArgErr);
185 xmlelem *
This = impl_from_IXMLElement(iface);
192 if (*
This->node->name) {
193 *
p = bstr_from_xmlChar(
This->node->name);
206 xmlelem *
This = impl_from_IXMLElement(iface);
218 xmlelem *
This = impl_from_IXMLElement(iface);
227 if (!
This->node->parent)
233static HRESULT WINAPI xmlelem_setAttribute(IXMLElement *iface,
BSTR strPropertyName,
236 xmlelem *
This = impl_from_IXMLElement(iface);
242 if (!strPropertyName ||
V_VT(&PropertyValue) !=
VT_BSTR)
245 name = xmlchar_from_wchar(strPropertyName);
246 value = xmlchar_from_wchar(
V_BSTR(&PropertyValue));
257 static const WCHAR xmllangW[] = {
'x',
'm',
'l',
':',
'l',
'a',
'n',
'g',0 };
258 xmlelem *
This = impl_from_IXMLElement(iface);
284 xml_name = xmlchar_from_wchar(
name);
290 attr_name = bstr_from_xmlChar(
attr->
name);
316static HRESULT WINAPI xmlelem_removeAttribute(IXMLElement *iface,
BSTR strPropertyName)
318 xmlelem *
This = impl_from_IXMLElement(iface);
326 if (!strPropertyName)
329 name = xmlchar_from_wchar(strPropertyName);
344static HRESULT WINAPI xmlelem_get_children(IXMLElement *iface, IXMLElementCollection **
p)
346 xmlelem *
This = impl_from_IXMLElement(iface);
353 return XMLElementCollection_create(
This->node, (
LPVOID *)
p);
361 return XMLELEMTYPE_ELEMENT;
381 xmlelem *
This = impl_from_IXMLElement(iface);
388 *
p = type_libxml_to_msxml(
This->node->type);
389 TRACE(
"returning %d\n", *
p);
395 xmlelem *
This = impl_from_IXMLElement(iface);
413 xmlelem *
This = impl_from_IXMLElement(iface);
430static HRESULT WINAPI xmlelem_addChild(IXMLElement *iface, IXMLElement *pChildElem,
433 xmlelem *
This = impl_from_IXMLElement(iface);
434 xmlelem *childElem = impl_from_IXMLElement(pChildElem);
437 TRACE(
"(%p)->(%p %d %d)\n",
This, pChildElem, lIndex, lreserved);
450static HRESULT WINAPI xmlelem_removeChild(IXMLElement *iface, IXMLElement *pChildElem)
452 xmlelem *
This = impl_from_IXMLElement(iface);
453 xmlelem *childElem = impl_from_IXMLElement(pChildElem);
461 if (
This->node != childElem->node->parent)
466 childElem->own =
TRUE;
471static const struct IXMLElementVtbl xmlelem_vtbl =
473 xmlelem_QueryInterface,
476 xmlelem_GetTypeInfoCount,
478 xmlelem_GetIDsOfNames,
483 xmlelem_setAttribute,
484 xmlelem_getAttribute,
485 xmlelem_removeAttribute,
486 xmlelem_get_children,
498 TRACE(
"(%p)\n", ppObj);
509 elem->IXMLElement_iface.lpVtbl = &xmlelem_vtbl;
514 *ppObj = &
elem->IXMLElement_iface;
516 TRACE(
"returning iface %p\n", *ppObj);
523typedef struct _xmlelem_collection
525 IXMLElementCollection IXMLElementCollection_iface;
535static inline LONG xmlelem_collection_updatelength(xmlelem_collection *
collection)
548static inline xmlelem_collection *impl_from_IXMLElementCollection(IXMLElementCollection *iface)
550 return CONTAINING_RECORD(iface, xmlelem_collection, IXMLElementCollection_iface);
560 xmlelem_collection *
This = impl_from_IXMLElementCollection(iface);
580 IXMLElementCollection_AddRef(iface);
585static ULONG WINAPI xmlelem_collection_AddRef(IXMLElementCollection *iface)
587 xmlelem_collection *
This = impl_from_IXMLElementCollection(iface);
592static ULONG WINAPI xmlelem_collection_Release(IXMLElementCollection *iface)
594 xmlelem_collection *
This = impl_from_IXMLElementCollection(iface);
608static HRESULT WINAPI xmlelem_collection_GetTypeInfoCount(IXMLElementCollection *iface,
UINT* pctinfo)
614static HRESULT WINAPI xmlelem_collection_GetTypeInfo(IXMLElementCollection *iface,
UINT iTInfo,
629static HRESULT WINAPI xmlelem_collection_Invoke(IXMLElementCollection *iface,
DISPID dispIdMember,
631 DISPPARAMS* pDispParams,
VARIANT* pVarResult,
632 EXCEPINFO* pExcepInfo,
UINT* puArgErr)
638static HRESULT WINAPI xmlelem_collection_put_length(IXMLElementCollection *iface,
LONG v)
640 xmlelem_collection *
This = impl_from_IXMLElementCollection(iface);
645static HRESULT WINAPI xmlelem_collection_get_length(IXMLElementCollection *iface,
LONG *
p)
647 xmlelem_collection *
This = impl_from_IXMLElementCollection(iface);
654 *
p = xmlelem_collection_updatelength(
This);
660 xmlelem_collection *
This = impl_from_IXMLElementCollection(iface);
667 IXMLElementCollection_AddRef(iface);
675 xmlelem_collection *
This = impl_from_IXMLElementCollection(iface);
690 xmlelem_collection_updatelength(
This);
700static const struct IXMLElementCollectionVtbl xmlelem_collection_vtbl =
702 xmlelem_collection_QueryInterface,
703 xmlelem_collection_AddRef,
704 xmlelem_collection_Release,
705 xmlelem_collection_GetTypeInfoCount,
706 xmlelem_collection_GetTypeInfo,
707 xmlelem_collection_GetIDsOfNames,
708 xmlelem_collection_Invoke,
709 xmlelem_collection_put_length,
710 xmlelem_collection_get_length,
711 xmlelem_collection_get__newEnum,
712 xmlelem_collection_item
718static HRESULT WINAPI xmlelem_collection_IEnumVARIANT_QueryInterface(
729 IEnumVARIANT_AddRef(iface);
738static ULONG WINAPI xmlelem_collection_IEnumVARIANT_AddRef(
742 return IXMLElementCollection_AddRef(&this->IXMLElementCollection_iface);
745static ULONG WINAPI xmlelem_collection_IEnumVARIANT_Release(
749 return IXMLElementCollection_Release(&this->IXMLElementCollection_iface);
758 TRACE(
"(%p)->(%d %p %p)\n",
This, celt, rgVar, fetched);
768 This->current =
This->current->next;
772 if (fetched) *fetched = 0;
793 This->current =
This->node->children;
801 FIXME(
"(%p)->(%p): stub\n",
This, ppEnum);
805static const struct IEnumVARIANTVtbl xmlelem_collection_IEnumVARIANTvtbl =
807 xmlelem_collection_IEnumVARIANT_QueryInterface,
808 xmlelem_collection_IEnumVARIANT_AddRef,
809 xmlelem_collection_IEnumVARIANT_Release,
810 xmlelem_collection_IEnumVARIANT_Next,
811 xmlelem_collection_IEnumVARIANT_Skip,
812 xmlelem_collection_IEnumVARIANT_Reset,
813 xmlelem_collection_IEnumVARIANT_Clone
820 TRACE(
"(%p)\n", ppObj);
831 collection->IXMLElementCollection_iface.lpVtbl = &xmlelem_collection_vtbl;
832 collection->IEnumVARIANT_iface.lpVtbl = &xmlelem_collection_IEnumVARIANTvtbl;
839 *ppObj = &
collection->IXMLElementCollection_iface;
841 TRACE(
"returning iface %p\n", *ppObj);
HRESULT get_typeinfo(enum type_id tid, ITypeInfo **ret)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
GLuint GLuint GLsizei GLenum type
GLuint GLsizei GLsizei * length
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
static HTMLElementCollectionEnum * impl_from_IEnumVARIANT(IEnumVARIANT *iface)
struct task_struct * current
static const char * debugstr_variant(const VARIANT *var)
static ICollection collection
static VARIANTARG static DISPID
MSXML::enum XMLELEMTYPE_DOCUMENT
MSXML::enum XMLELEMTYPE_DTD
MSXML::enum XMLELEMTYPE_TEXT
MSXML::enum XMLELEMTYPE_COMMENT
MSXML::enum XMLELEMTYPE_OTHER
MSXML::enum XMLELEMTYPE_PI
UINT WINAPI SysStringLen(BSTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
#define IsEqualGUID(rguid1, rguid2)
XMLPUBVAR xmlFreeFunc xmlFree
XMLPUBFUN xmlNodePtr XMLCALL xmlAddChild(xmlNodePtr parent, xmlNodePtr cur)
XMLPUBFUN xmlChar *XMLCALL xmlNodeGetContent(const xmlNode *cur)
XMLPUBFUN xmlAttrPtr XMLCALL xmlHasProp(const xmlNode *node, const xmlChar *name)
XMLPUBFUN xmlNsPtr XMLCALL xmlSearchNs(xmlDocPtr doc, xmlNodePtr node, const xmlChar *nameSpace)
XMLPUBFUN int XMLCALL xmlRemoveProp(xmlAttrPtr cur)
XMLPUBFUN xmlChar *XMLCALL xmlGetNsProp(const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace)
XMLPUBFUN xmlNodePtr XMLCALL xmlAddNextSibling(xmlNodePtr cur, xmlNodePtr elem)
XMLPUBFUN void XMLCALL xmlUnlinkNode(xmlNodePtr cur)
XMLPUBFUN void XMLCALL xmlNodeSetContent(xmlNodePtr cur, const xmlChar *content)
XMLPUBFUN void XMLCALL xmlFreeNode(xmlNodePtr cur)
XMLPUBFUN xmlChar *XMLCALL xmlNodeListGetString(xmlDocPtr doc, const xmlNode *list, int inLine)
#define CONTAINING_RECORD(address, type, field)
void WINAPI VariantInit(VARIANTARG *pVarg)
_In_ DWORD _Out_ _In_ WORD wFlags
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
DWORD WINAPI CharUpperBuffW(_Inout_updates_(cchLength) LPWSTR lpsz, _In_ DWORD cchLength)