void init_xmlnode(xmlnode *This, xmlNodePtr node, IXMLDOMNode *node_iface, dispex_static_data_t *dispex_data) { if(node) { xmlnode_add_ref(node); xmldoc_add_ref(node->doc); } This->node = node; This->iface = node_iface; This->parent = NULL; init_dispex(&This->dispex, (IUnknown*)This->iface, dispex_data); }
IXMLDOMNamedNodeMap *create_nodemap(xmlNodePtr node, const struct nodemap_funcs *funcs) { xmlnodemap *This; This = heap_alloc( sizeof *This ); if ( !This ) return NULL; This->IXMLDOMNamedNodeMap_iface.lpVtbl = &XMLDOMNamedNodeMapVtbl; This->ISupportErrorInfo_iface.lpVtbl = &SupportErrorInfoVtbl; This->node = node; This->ref = 1; This->iterator = 0; This->enumvariant = NULL; This->funcs = funcs; init_dispex(&This->dispex, (IUnknown*)&This->IXMLDOMNamedNodeMap_iface, &xmlnodemap_dispex); xmlnode_add_ref(node); xmldoc_add_ref(node->doc); return &This->IXMLDOMNamedNodeMap_iface; }