msxml3: Store outer iface as IXMLDOMNode instead of IUnknown in xmlnode.
This commit is contained in:
parent
9f2c51800d
commit
f5348b25af
|
@ -556,7 +556,7 @@ IUnknown* create_attribute( xmlNodePtr attribute )
|
|||
This->lpVtbl = &domattr_vtbl;
|
||||
This->ref = 1;
|
||||
|
||||
init_xmlnode(&This->node, attribute, (IUnknown*)&This->lpVtbl, NULL);
|
||||
init_xmlnode(&This->node, attribute, (IXMLDOMNode*)&This->lpVtbl, NULL);
|
||||
|
||||
return (IUnknown*) &This->lpVtbl;
|
||||
}
|
||||
|
|
|
@ -835,7 +835,7 @@ IUnknown* create_cdata( xmlNodePtr text )
|
|||
This->lpVtbl = &domcdata_vtbl;
|
||||
This->ref = 1;
|
||||
|
||||
init_xmlnode(&This->node, text, (IUnknown*)&This->lpVtbl, NULL);
|
||||
init_xmlnode(&This->node, text, (IXMLDOMNode*)&This->lpVtbl, NULL);
|
||||
|
||||
return (IUnknown*) &This->lpVtbl;
|
||||
}
|
||||
|
|
|
@ -781,7 +781,7 @@ IUnknown* create_comment( xmlNodePtr comment )
|
|||
This->lpVtbl = &domcomment_vtbl;
|
||||
This->ref = 1;
|
||||
|
||||
init_xmlnode(&This->node, comment, (IUnknown*)&This->lpVtbl, NULL);
|
||||
init_xmlnode(&This->node, comment, (IXMLDOMNode*)&This->lpVtbl, NULL);
|
||||
|
||||
return (IUnknown*) &This->lpVtbl;
|
||||
}
|
||||
|
|
|
@ -526,7 +526,7 @@ IUnknown* create_doc_fragment( xmlNodePtr fragment )
|
|||
This->lpVtbl = &domfrag_vtbl;
|
||||
This->ref = 1;
|
||||
|
||||
init_xmlnode(&This->node, fragment, (IUnknown*)&This->lpVtbl, NULL);
|
||||
init_xmlnode(&This->node, fragment, (IXMLDOMNode*)&This->lpVtbl, NULL);
|
||||
|
||||
return (IUnknown*) &This->lpVtbl;
|
||||
}
|
||||
|
|
|
@ -2404,7 +2404,7 @@ HRESULT DOMDocument_create_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument3 **docu
|
|||
doc->safeopt = 0;
|
||||
doc->bsc = NULL;
|
||||
|
||||
init_xmlnode(&doc->node, (xmlNodePtr)xmldoc, (IUnknown*)&doc->lpVtbl, &domdoc_dispex);
|
||||
init_xmlnode(&doc->node, (xmlNodePtr)xmldoc, (IXMLDOMNode*)&doc->lpVtbl, &domdoc_dispex);
|
||||
|
||||
*document = (IXMLDOMDocument3*)&doc->lpVtbl;
|
||||
|
||||
|
|
|
@ -801,7 +801,7 @@ IUnknown* create_element( xmlNodePtr element )
|
|||
This->lpVtbl = &domelem_vtbl;
|
||||
This->ref = 1;
|
||||
|
||||
init_xmlnode(&This->node, element, (IUnknown*)&This->lpVtbl, &domelem_dispex);
|
||||
init_xmlnode(&This->node, element, (IXMLDOMNode*)&This->lpVtbl, &domelem_dispex);
|
||||
|
||||
return (IUnknown*) &This->lpVtbl;
|
||||
}
|
||||
|
|
|
@ -525,7 +525,7 @@ IUnknown* create_doc_entity_ref( xmlNodePtr entity )
|
|||
This->lpVtbl = &entityref_vtbl;
|
||||
This->ref = 1;
|
||||
|
||||
init_xmlnode(&This->node, entity, (IUnknown*)&This->lpVtbl, NULL);
|
||||
init_xmlnode(&This->node, entity, (IXMLDOMNode*)&This->lpVtbl, NULL);
|
||||
|
||||
return (IUnknown*) &This->lpVtbl;
|
||||
}
|
||||
|
|
|
@ -145,7 +145,7 @@ typedef struct _xmlnode
|
|||
{
|
||||
DispatchEx dispex;
|
||||
const struct IXMLDOMNodeVtbl *lpVtbl;
|
||||
IUnknown *pUnkOuter;
|
||||
IXMLDOMNode *iface;
|
||||
LONG ref;
|
||||
xmlNodePtr node;
|
||||
} xmlnode;
|
||||
|
@ -160,7 +160,7 @@ static inline IXMLDOMNode *IXMLDOMNode_from_impl(xmlnode *This)
|
|||
return (IXMLDOMNode*)&This->lpVtbl;
|
||||
}
|
||||
|
||||
extern void init_xmlnode(xmlnode*,xmlNodePtr,IUnknown*,dispex_static_data_t*);
|
||||
extern void init_xmlnode(xmlnode*,xmlNodePtr,IXMLDOMNode*,dispex_static_data_t*);
|
||||
extern void destroy_xmlnode(xmlnode*);
|
||||
|
||||
extern HRESULT DOMDocument_create_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument3 **document);
|
||||
|
|
|
@ -89,8 +89,8 @@ static HRESULT WINAPI xmlnode_QueryInterface(
|
|||
|
||||
TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
|
||||
|
||||
if(This->pUnkOuter)
|
||||
return IUnknown_QueryInterface(This->pUnkOuter, riid, ppvObject);
|
||||
if(This->iface)
|
||||
return IXMLDOMNode_QueryInterface(This->iface, riid, ppvObject);
|
||||
|
||||
if (IsEqualGUID(riid, &IID_IUnknown)) {
|
||||
*ppvObject = iface;
|
||||
|
@ -112,8 +112,8 @@ static ULONG WINAPI xmlnode_AddRef(
|
|||
{
|
||||
xmlnode *This = impl_from_IXMLDOMNode( iface );
|
||||
|
||||
if(This->pUnkOuter)
|
||||
return IUnknown_AddRef(This->pUnkOuter);
|
||||
if(This->iface)
|
||||
return IXMLDOMNode_AddRef(This->iface);
|
||||
|
||||
return InterlockedIncrement(&This->ref);
|
||||
}
|
||||
|
@ -124,8 +124,8 @@ static ULONG WINAPI xmlnode_Release(
|
|||
xmlnode *This = impl_from_IXMLDOMNode( iface );
|
||||
LONG ref;
|
||||
|
||||
if(This->pUnkOuter)
|
||||
return IUnknown_Release(This->pUnkOuter);
|
||||
if(This->iface)
|
||||
return IXMLDOMNode_Release(This->iface);
|
||||
|
||||
ref = InterlockedDecrement( &This->ref );
|
||||
if(!ref) {
|
||||
|
@ -1713,7 +1713,7 @@ void destroy_xmlnode(xmlnode *This)
|
|||
xmldoc_release(This->node->doc);
|
||||
}
|
||||
|
||||
void init_xmlnode(xmlnode *This, xmlNodePtr node, IUnknown *outer, dispex_static_data_t *dispex_data )
|
||||
void init_xmlnode(xmlnode *This, xmlNodePtr node, IXMLDOMNode *node_iface, dispex_static_data_t *dispex_data)
|
||||
{
|
||||
if(node)
|
||||
xmldoc_add_ref( node->doc );
|
||||
|
@ -1721,10 +1721,10 @@ void init_xmlnode(xmlnode *This, xmlNodePtr node, IUnknown *outer, dispex_static
|
|||
This->lpVtbl = &xmlnode_vtbl;
|
||||
This->ref = 1;
|
||||
This->node = node;
|
||||
This->pUnkOuter = outer;
|
||||
This->iface = node_iface;
|
||||
|
||||
if(dispex_data)
|
||||
init_dispex(&This->dispex, This->pUnkOuter, dispex_data);
|
||||
init_dispex(&This->dispex, (IUnknown*)This->iface, dispex_data);
|
||||
}
|
||||
|
||||
IXMLDOMNode *create_node( xmlNodePtr node )
|
||||
|
|
|
@ -611,7 +611,7 @@ IUnknown* create_pi( xmlNodePtr pi )
|
|||
This->lpVtbl = &dom_pi_vtbl;
|
||||
This->ref = 1;
|
||||
|
||||
init_xmlnode(&This->node, pi, (IUnknown*)&This->lpVtbl, NULL);
|
||||
init_xmlnode(&This->node, pi, (IXMLDOMNode*)&This->lpVtbl, NULL);
|
||||
|
||||
return (IUnknown*) &This->lpVtbl;
|
||||
}
|
||||
|
|
|
@ -811,7 +811,7 @@ IUnknown* create_text( xmlNodePtr text )
|
|||
This->lpVtbl = &domtext_vtbl;
|
||||
This->ref = 1;
|
||||
|
||||
init_xmlnode(&This->node, text, (IUnknown*)&This->lpVtbl, NULL);
|
||||
init_xmlnode(&This->node, text, (IXMLDOMNode*)&This->lpVtbl, NULL);
|
||||
|
||||
return (IUnknown*) &This->lpVtbl;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue