[PATCH 2/3] Get rid of ::get_dataType() forward to IXMLDOMNode interface
Nikolay Sivov
nsivov at codeweavers.com
Mon Oct 18 18:13:30 CDT 2010
---
dlls/msxml3/attribute.c | 5 +++--
dlls/msxml3/cdata.c | 5 +++--
dlls/msxml3/comment.c | 5 +++--
dlls/msxml3/docfrag.c | 5 +++--
dlls/msxml3/domdoc.c | 5 +++--
dlls/msxml3/element.c | 18 ++++++++++++++++--
dlls/msxml3/entityref.c | 5 +++--
dlls/msxml3/msxml_private.h | 10 +++++++++-
dlls/msxml3/node.c | 41 ++---------------------------------------
dlls/msxml3/pi.c | 5 +++--
dlls/msxml3/text.c | 5 +++--
11 files changed, 51 insertions(+), 58 deletions(-)
diff --git a/dlls/msxml3/attribute.c b/dlls/msxml3/attribute.c
index 15c84a6..1a56a35 100644
--- a/dlls/msxml3/attribute.c
+++ b/dlls/msxml3/attribute.c
@@ -422,10 +422,11 @@ static HRESULT WINAPI domattr_put_nodeTypedValue(
static HRESULT WINAPI domattr_get_dataType(
IXMLDOMAttribute *iface,
- VARIANT* var1)
+ VARIANT* typename)
{
domattr *This = impl_from_IXMLDOMAttribute( iface );
- return IXMLDOMNode_get_dataType( IXMLDOMNode_from_impl(&This->node), var1 );
+ TRACE("(%p)->(%p)\n", This, typename);
+ return return_null_var( typename );
}
static HRESULT WINAPI domattr_put_dataType(
diff --git a/dlls/msxml3/cdata.c b/dlls/msxml3/cdata.c
index b87bbe1..bbe8a87 100644
--- a/dlls/msxml3/cdata.c
+++ b/dlls/msxml3/cdata.c
@@ -433,10 +433,11 @@ static HRESULT WINAPI domcdata_put_nodeTypedValue(
static HRESULT WINAPI domcdata_get_dataType(
IXMLDOMCDATASection *iface,
- VARIANT* var1)
+ VARIANT* typename)
{
domcdata *This = impl_from_IXMLDOMCDATASection( iface );
- return IXMLDOMNode_get_dataType( IXMLDOMNode_from_impl(&This->node), var1 );
+ TRACE("(%p)->(%p)\n", This, typename);
+ return return_null_var( typename );
}
static HRESULT WINAPI domcdata_put_dataType(
diff --git a/dlls/msxml3/comment.c b/dlls/msxml3/comment.c
index 0f2b61a..86d4bca 100644
--- a/dlls/msxml3/comment.c
+++ b/dlls/msxml3/comment.c
@@ -426,10 +426,11 @@ static HRESULT WINAPI domcomment_put_nodeTypedValue(
static HRESULT WINAPI domcomment_get_dataType(
IXMLDOMComment *iface,
- VARIANT* var1)
+ VARIANT* typename)
{
domcomment *This = impl_from_IXMLDOMComment( iface );
- return IXMLDOMNode_get_dataType( IXMLDOMNode_from_impl(&This->node), var1 );
+ TRACE("(%p)->(%p)\n", This, typename);
+ return return_null_var( typename );
}
static HRESULT WINAPI domcomment_put_dataType(
diff --git a/dlls/msxml3/docfrag.c b/dlls/msxml3/docfrag.c
index 99f8e81..d700493 100644
--- a/dlls/msxml3/docfrag.c
+++ b/dlls/msxml3/docfrag.c
@@ -430,10 +430,11 @@ static HRESULT WINAPI domfrag_put_nodeTypedValue(
static HRESULT WINAPI domfrag_get_dataType(
IXMLDOMDocumentFragment *iface,
- VARIANT* var1)
+ VARIANT* typename)
{
domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
- return IXMLDOMNode_get_dataType( IXMLDOMNode_from_impl(&This->node), var1 );
+ TRACE("(%p)->(%p)\n", This, typename);
+ return return_null_var( typename );
}
static HRESULT WINAPI domfrag_put_dataType(
diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index 1adc84d..9f3f1eb 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -1154,10 +1154,11 @@ static HRESULT WINAPI domdoc_put_nodeTypedValue(
static HRESULT WINAPI domdoc_get_dataType(
IXMLDOMDocument3 *iface,
- VARIANT* dataTypeName )
+ VARIANT* typename )
{
domdoc *This = impl_from_IXMLDOMDocument3( iface );
- return IXMLDOMNode_get_dataType( IXMLDOMNode_from_impl(&This->node), dataTypeName );
+ TRACE("(%p)->(%p)\n", This, typename);
+ return return_null_var( typename );
}
diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
index 16651e8..7f3d7ef 100644
--- a/dlls/msxml3/element.c
+++ b/dlls/msxml3/element.c
@@ -438,10 +438,24 @@ static HRESULT WINAPI domelem_put_nodeTypedValue(
static HRESULT WINAPI domelem_get_dataType(
IXMLDOMElement *iface,
- VARIANT* var1)
+ VARIANT* typename)
{
domelem *This = impl_from_IXMLDOMElement( iface );
- return IXMLDOMNode_get_dataType( IXMLDOMNode_from_impl(&This->node), var1 );
+ xmlChar *pVal = xmlGetNsProp(get_element(This), (const xmlChar*)"dt",
+ (const xmlChar*)"urn:schemas-microsoft-com:datatypes");
+
+ TRACE("(%p)->(%p)\n", This, typename);
+
+ V_VT(typename) = VT_NULL;
+
+ if (pVal)
+ {
+ V_VT(typename) = VT_BSTR;
+ V_BSTR(typename) = bstr_from_xmlChar( pVal );
+ xmlFree(pVal);
+ }
+
+ return (V_VT(typename) != VT_NULL) ? S_OK : S_FALSE;
}
static HRESULT WINAPI domelem_put_dataType(
diff --git a/dlls/msxml3/entityref.c b/dlls/msxml3/entityref.c
index cc2aa1d..f4c31c9 100644
--- a/dlls/msxml3/entityref.c
+++ b/dlls/msxml3/entityref.c
@@ -424,10 +424,11 @@ static HRESULT WINAPI entityref_put_nodeTypedValue(
static HRESULT WINAPI entityref_get_dataType(
IXMLDOMEntityReference *iface,
- VARIANT* var1)
+ VARIANT* typename)
{
entityref *This = impl_from_IXMLDOMEntityReference( iface );
- return IXMLDOMNode_get_dataType( IXMLDOMNode_from_impl(&This->node), var1 );
+ FIXME("(%p)->(%p): should return a valid value\n", This, typename);
+ return return_null_var( typename );
}
static HRESULT WINAPI entityref_put_dataType(
diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h
index b16267c..5d0ac7a 100644
--- a/dlls/msxml3/msxml_private.h
+++ b/dlls/msxml3/msxml_private.h
@@ -172,7 +172,6 @@ extern HRESULT node_get_next_sibling(xmlnode*,IXMLDOMNode**);
extern HRESULT node_insert_before(xmlnode*,IXMLDOMNode*,const VARIANT*,IXMLDOMNode**);
extern HRESULT node_replace_child(xmlnode*,IXMLDOMNode*,IXMLDOMNode*,IXMLDOMNode**);
-
extern HRESULT DOMDocument_create_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument3 **document);
static inline BSTR bstr_from_xmlChar(const xmlChar *str)
@@ -223,6 +222,15 @@ static inline HRESULT return_null_ptr(void **p)
return S_FALSE;
}
+static inline HRESULT return_null_var(VARIANT *p)
+{
+ if(!p)
+ return E_INVALIDARG;
+
+ V_VT(p) = VT_NULL;
+ return S_FALSE;
+}
+
#endif
extern void* libxslt_handle;
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index 8a92fe6..6716c5d 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -1020,45 +1020,8 @@ static HRESULT WINAPI xmlnode_get_dataType(
IXMLDOMNode *iface,
VARIANT* dataTypeName)
{
- xmlnode *This = impl_from_IXMLDOMNode( iface );
- xmlChar *pVal;
-
- TRACE("(%p)->(%p)\n", This, dataTypeName);
-
- if(!dataTypeName)
- return E_INVALIDARG;
-
- /* Attribute, CDATA Section, Comment, Document, Document Fragment,
- Entity, Notation, PI, and Text Node are non-typed. */
- V_BSTR(dataTypeName) = NULL;
- V_VT(dataTypeName) = VT_NULL;
-
- switch ( This->node->type )
- {
- case XML_ELEMENT_NODE:
- pVal = xmlGetNsProp(This->node, (const xmlChar*)"dt",
- (const xmlChar*)"urn:schemas-microsoft-com:datatypes");
- if (pVal)
- {
- V_VT(dataTypeName) = VT_BSTR;
- V_BSTR(dataTypeName) = bstr_from_xmlChar( pVal );
- xmlFree(pVal);
- }
- break;
- case XML_ENTITY_REF_NODE:
- FIXME("XML_ENTITY_REF_NODE should return a valid value.\n");
- break;
- default:
- TRACE("Type %d returning NULL\n", This->node->type);
- }
-
- /* non-typed nodes return S_FALSE */
- if(V_VT(dataTypeName) == VT_NULL)
- {
- return S_FALSE;
- }
-
- return S_OK;
+ ERR("Should not be called\n");
+ return E_NOTIMPL;
}
static HRESULT WINAPI xmlnode_put_dataType(
diff --git a/dlls/msxml3/pi.c b/dlls/msxml3/pi.c
index 2d33d80..2467603 100644
--- a/dlls/msxml3/pi.c
+++ b/dlls/msxml3/pi.c
@@ -440,10 +440,11 @@ static HRESULT WINAPI dom_pi_put_nodeTypedValue(
static HRESULT WINAPI dom_pi_get_dataType(
IXMLDOMProcessingInstruction *iface,
- VARIANT* var1)
+ VARIANT* typename)
{
dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
- return IXMLDOMNode_get_dataType( IXMLDOMNode_from_impl(&This->node), var1 );
+ TRACE("(%p)->(%p)\n", This, typename);
+ return return_null_var( typename );
}
static HRESULT WINAPI dom_pi_put_dataType(
diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c
index be61376..2e79cd9 100644
--- a/dlls/msxml3/text.c
+++ b/dlls/msxml3/text.c
@@ -439,10 +439,11 @@ static HRESULT WINAPI domtext_put_nodeTypedValue(
static HRESULT WINAPI domtext_get_dataType(
IXMLDOMText *iface,
- VARIANT* var1)
+ VARIANT* typename)
{
domtext *This = impl_from_IXMLDOMText( iface );
- return IXMLDOMNode_get_dataType( IXMLDOMNode_from_impl(&This->node), var1 );
+ TRACE("(%p)->(%p)\n", This, typename);
+ return return_null_var( typename );
}
static HRESULT WINAPI domtext_put_dataType(
--
1.5.6.5
--------------050802050009010404060304--
More information about the wine-patches
mailing list