[2/3] xmllite: Implement GetNodeType() for reader
Nikolay Sivov
nsivov at codeweavers.com
Tue Nov 20 05:14:40 CST 2012
Implement GetNodeType() for reader
-------------- next part --------------
>From e222921895741714fa9b864dab2f2360bf04b70b Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Sun, 18 Nov 2012 19:00:24 -0500
Subject: [PATCH 2/6] Implement GetNodeType() for reader
---
dlls/xmllite/reader.c | 8 ++++++--
dlls/xmllite/tests/reader.c | 12 ++++++++++++
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c
index 188b419..1970ac8 100644
--- a/dlls/xmllite/reader.c
+++ b/dlls/xmllite/reader.c
@@ -87,6 +87,7 @@ typedef struct _xmlreader
xmlreaderinput *input;
IMalloc *imalloc;
XmlReadState state;
+ XmlNodeType nodetype;
DtdProcessing dtdmode;
UINT line, pos; /* reader position in XML stream */
} xmlreader;
@@ -469,8 +470,10 @@ static HRESULT WINAPI xmlreader_Read(IXmlReader* iface, XmlNodeType *node_type)
static HRESULT WINAPI xmlreader_GetNodeType(IXmlReader* iface, XmlNodeType *node_type)
{
- FIXME("(%p %p): stub\n", iface, node_type);
- return E_NOTIMPL;
+ xmlreader *This = impl_from_IXmlReader(iface);
+ TRACE("(%p)->(%p)\n", This, node_type);
+ *node_type = This->nodetype;
+ return This->state == XmlReadState_Closed ? S_FALSE : S_OK;
}
static HRESULT WINAPI xmlreader_MoveToFirstAttribute(IXmlReader* iface)
@@ -725,6 +728,7 @@ HRESULT WINAPI CreateXmlReader(REFIID riid, void **obj, IMalloc *imalloc)
reader->line = reader->pos = 0;
reader->imalloc = imalloc;
if (imalloc) IMalloc_AddRef(imalloc);
+ reader->nodetype = XmlNodeType_None;
*obj = &reader->IXmlReader_iface;
diff --git a/dlls/xmllite/tests/reader.c b/dlls/xmllite/tests/reader.c
index f5b7680..7d77fe9 100644
--- a/dlls/xmllite/tests/reader.c
+++ b/dlls/xmllite/tests/reader.c
@@ -351,6 +351,7 @@ static void test_reader_create(void)
IXmlReader *reader;
IUnknown *input;
DtdProcessing dtd;
+ XmlNodeType nodetype;
/* crashes native */
if (0)
@@ -364,6 +365,11 @@ static void test_reader_create(void)
test_read_state(reader, XmlReadState_Closed, -1, FALSE);
+ nodetype = XmlNodeType_Element;
+ hr = IXmlReader_GetNodeType(reader, &nodetype);
+ ok(hr == S_FALSE, "got %08x\n", hr);
+ ok(nodetype == XmlNodeType_None, "got %d\n", nodetype);
+
dtd = 2;
hr = IXmlReader_GetProperty(reader, XmlReaderProperty_DtdProcessing, (LONG_PTR*)&dtd);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
@@ -403,6 +409,7 @@ static void test_readerinput(void)
IXmlReader *reader, *reader2;
IUnknown *obj, *input;
IStream *stream, *stream2;
+ XmlNodeType nodetype;
HRESULT hr;
LONG ref;
@@ -444,6 +451,11 @@ static void test_readerinput(void)
test_read_state(reader, XmlReadState_Initial, -1, FALSE);
+ nodetype = XmlNodeType_Element;
+ hr = IXmlReader_GetNodeType(reader, &nodetype);
+ ok(hr == S_OK, "got %08x\n", hr);
+ ok(nodetype == XmlNodeType_None, "got %d\n", nodetype);
+
/* IXmlReader grabs a IXmlReaderInput reference */
ref = IUnknown_AddRef(reader_input);
ok(ref == 3, "Expected 3, got %d\n", ref);
--
1.7.10.4
More information about the wine-patches
mailing list