Adam Martinson : msxml3: Implement domtext dt-related functions.
Alexandre Julliard
julliard at winehq.org
Wed Nov 24 11:28:38 CST 2010
Module: wine
Branch: master
Commit: 6f537c4df11b70d2cb8338035557e694ac8f8cb8
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6f537c4df11b70d2cb8338035557e694ac8f8cb8
Author: Adam Martinson <amartinson at codeweavers.com>
Date: Mon Nov 22 20:57:58 2010 -0600
msxml3: Implement domtext dt-related functions.
These should always be handled by the parent node.
---
dlls/msxml3/node.c | 2 +-
dlls/msxml3/text.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++----
2 files changed, 88 insertions(+), 8 deletions(-)
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index c135f20..2db7115 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -852,7 +852,7 @@ static HRESULT WINAPI xmlnode_get_nodeTypedValue(
V_VT(typedValue) = VT_NULL;
- if (This->node->type == XML_TEXT_NODE || This->node->type == XML_ENTITY_REF_NODE)
+ if (This->node->type == XML_ENTITY_REF_NODE)
{
VariantInit(&type);
hres = IXMLDOMNode_get_dataType(This->iface, &type);
diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c
index 9b25008..76d81c2 100644
--- a/dlls/msxml3/text.c
+++ b/dlls/msxml3/text.c
@@ -435,7 +435,29 @@ static HRESULT WINAPI domtext_get_nodeTypedValue(
VARIANT* var1)
{
domtext *This = impl_from_IXMLDOMText( iface );
- return IXMLDOMNode_get_nodeTypedValue( IXMLDOMNode_from_impl(&This->node), var1 );
+ IXMLDOMNode* parent = NULL;
+ HRESULT hr;
+
+ TRACE("(%p)->(%p)\n", This, var1);
+
+ if (!var1)
+ return E_INVALIDARG;
+
+ hr = domtext_get_parentNode(iface, &parent);
+
+ if (hr == S_OK)
+ {
+ hr = IXMLDOMNode_get_nodeTypedValue(parent, var1);
+ IXMLDOMNode_Release(parent);
+ }
+ else
+ {
+ V_VT(var1) = VT_NULL;
+ V_BSTR(var1) = NULL;
+ hr = S_FALSE;
+ }
+
+ return hr;
}
static HRESULT WINAPI domtext_put_nodeTypedValue(
@@ -443,24 +465,82 @@ static HRESULT WINAPI domtext_put_nodeTypedValue(
VARIANT var1)
{
domtext *This = impl_from_IXMLDOMText( iface );
- return IXMLDOMNode_put_nodeTypedValue( IXMLDOMNode_from_impl(&This->node), var1 );
+ IXMLDOMNode* parent = NULL;
+ HRESULT hr;
+
+ TRACE("(%p)->(VARIANT)\n", This);
+
+ hr = domtext_get_parentNode(iface, &parent);
+
+ if (hr == S_OK)
+ {
+ hr = IXMLDOMNode_put_nodeTypedValue(parent, var1);
+ IXMLDOMNode_Release(parent);
+ }
+ else
+ {
+ hr = S_FALSE;
+ }
+
+ return hr;
}
static HRESULT WINAPI domtext_get_dataType(
IXMLDOMText *iface,
- VARIANT* typename)
+ VARIANT* dtName)
{
domtext *This = impl_from_IXMLDOMText( iface );
- TRACE("(%p)->(%p)\n", This, typename);
- return return_null_var( typename );
+ IXMLDOMNode* parent = NULL;
+ HRESULT hr;
+
+ TRACE("(%p)->(%p)\n", This, dtName);
+
+ if (!dtName)
+ return E_INVALIDARG;
+
+ hr = domtext_get_parentNode(iface, &parent);
+
+ if (hr == S_OK)
+ {
+ hr = IXMLDOMNode_get_dataType(parent, dtName);
+ IXMLDOMNode_Release(parent);
+ }
+ else
+ {
+ V_VT(dtName) = VT_NULL;
+ V_BSTR(dtName) = NULL;
+ hr = S_FALSE;
+ }
+
+ return hr;
}
static HRESULT WINAPI domtext_put_dataType(
IXMLDOMText *iface,
- BSTR p)
+ BSTR dtName)
{
domtext *This = impl_from_IXMLDOMText( iface );
- return IXMLDOMNode_put_dataType( IXMLDOMNode_from_impl(&This->node), p );
+ IXMLDOMNode* parent = NULL;
+ HRESULT hr;
+
+ TRACE("(%p)->(%p)\n", This, dtName);
+
+ if (!dtName)
+ return E_INVALIDARG;
+
+ hr = domtext_get_parentNode(iface, &parent);
+
+ if (hr == S_OK)
+ {
+ hr = IXMLDOMNode_put_dataType(parent, dtName);
+ IXMLDOMNode_Release(parent);
+ }
+ else
+ {
+ hr = S_FALSE;
+ }
+
+ return hr;
}
static HRESULT WINAPI domtext_get_xml(
More information about the wine-cvs
mailing list