msxml3: Implement domtext dt-related functions.

These should always be handled by the parent node.
oldstable
Adam Martinson 2010-11-22 20:57:58 -06:00 committed by Alexandre Julliard
parent 643cbafabc
commit 6f537c4df1
2 changed files with 88 additions and 8 deletions

View File

@ -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);

View File

@ -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(