From d6038e0283e9f814e408fe4d3dd54cce6b0b32d4 Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Wed, 30 Jul 2003 16:37:18 +0000 Subject: [PATCH] applying cleanup patch from Bjorn Reese for xmlTextReaderNodeType() and * xmlreader.c include/libxml/xmlreader.h: applying cleanup patch from Bjorn Reese for xmlTextReaderNodeType() and significant whitespace. There is an enum for node type values now. Daniel --- ChangeLog | 7 +++++++ include/libxml/xmlreader.h | 21 +++++++++++++++++++++ xmlreader.c | 38 +++++++++++++++++++++++--------------- 3 files changed, 51 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index ec4c513c..2ef5423c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Wed Jul 30 12:29:38 EDT 2003 Daniel Veillard + + * xmlreader.c include/libxml/xmlreader.h: applying cleanup + patch from Bjorn Reese for xmlTextReaderNodeType() and + significant whitespace. There is an enum for node type + values now. + Wed Jul 30 11:08:21 EDT 2003 Daniel Veillard * encoding.c: applying patch from Peter Jacobi to added diff --git a/include/libxml/xmlreader.h b/include/libxml/xmlreader.h index 99396b7c..18ca8d14 100644 --- a/include/libxml/xmlreader.h +++ b/include/libxml/xmlreader.h @@ -33,6 +33,27 @@ typedef enum { XML_PARSER_SEVERITY_ERROR = 4 } xmlParserSeverities; +enum { + XML_READER_TYPE_NONE = 0, + XML_READER_TYPE_ELEMENT = 1, + XML_READER_TYPE_ATTRIBUTE = 2, + XML_READER_TYPE_TEXT = 3, + XML_READER_TYPE_CDATA = 4, + XML_READER_TYPE_ENTITY_REFERENCE = 5, + XML_READER_TYPE_ENTITY = 6, + XML_READER_TYPE_PROCESSING_INSTRUCTION = 7, + XML_READER_TYPE_COMMENT = 8, + XML_READER_TYPE_DOCUMENT = 9, + XML_READER_TYPE_DOCUMENT_TYPE = 10, + XML_READER_TYPE_DOCUMENT_FRAGMENT = 11, + XML_READER_TYPE_NOTATION = 12, + XML_READER_TYPE_WHITESPACE = 13, + XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14, + XML_READER_TYPE_END_ELEMENT = 15, + XML_READER_TYPE_END_ENTITY = 16, + XML_READER_TYPE_XML_DECLARATION = 17 +}; + typedef struct _xmlTextReader xmlTextReader; typedef xmlTextReader *xmlTextReaderPtr; diff --git a/xmlreader.c b/xmlreader.c index 59dc6bb4..92d1b00d 100644 --- a/xmlreader.c +++ b/xmlreader.c @@ -1888,10 +1888,11 @@ xmlTextReaderAttributeCount(xmlTextReaderPtr reader) { int xmlTextReaderNodeType(xmlTextReaderPtr reader) { xmlNodePtr node; + if (reader == NULL) return(-1); if (reader->node == NULL) - return(0); + return(XML_READER_TYPE_NONE); if (reader->curnode != NULL) node = reader->curnode; else @@ -1900,43 +1901,50 @@ xmlTextReaderNodeType(xmlTextReaderPtr reader) { case XML_ELEMENT_NODE: if ((reader->state == XML_TEXTREADER_END) || (reader->state == XML_TEXTREADER_BACKTRACK)) - return(15); - return(1); + return(XML_READER_TYPE_END_ELEMENT); + return(XML_READER_TYPE_ELEMENT); case XML_NAMESPACE_DECL: case XML_ATTRIBUTE_NODE: - return(2); + return(XML_READER_TYPE_ATTRIBUTE); case XML_TEXT_NODE: - return(3); /* TODO: SignificantWhitespace == 14 Whitespace == 13 */ + if (xmlIsBlankNode(reader->node)) { + if (xmlNodeGetSpacePreserve(reader->node)) + return(XML_READER_TYPE_SIGNIFICANT_WHITESPACE); + else + return(XML_READER_TYPE_WHITESPACE); + } else { + return(XML_READER_TYPE_TEXT); + } case XML_CDATA_SECTION_NODE: - return(4); + return(XML_READER_TYPE_CDATA); case XML_ENTITY_REF_NODE: - return(5); + return(XML_READER_TYPE_ENTITY_REFERENCE); case XML_ENTITY_NODE: - return(6); + return(XML_READER_TYPE_ENTITY); case XML_PI_NODE: - return(7); + return(XML_READER_TYPE_PROCESSING_INSTRUCTION); case XML_COMMENT_NODE: - return(8); + return(XML_READER_TYPE_COMMENT); case XML_DOCUMENT_NODE: case XML_HTML_DOCUMENT_NODE: #ifdef LIBXML_DOCB_ENABLED case XML_DOCB_DOCUMENT_NODE: #endif - return(9); + return(XML_READER_TYPE_DOCUMENT); case XML_DOCUMENT_FRAG_NODE: - return(11); + return(XML_READER_TYPE_DOCUMENT_FRAGMENT); case XML_NOTATION_NODE: - return(12); + return(XML_READER_TYPE_NOTATION); case XML_DOCUMENT_TYPE_NODE: case XML_DTD_NODE: - return(10); + return(XML_READER_TYPE_DOCUMENT_TYPE); case XML_ELEMENT_DECL: case XML_ATTRIBUTE_DECL: case XML_ENTITY_DECL: case XML_XINCLUDE_START: case XML_XINCLUDE_END: - return(0); + return(XML_READER_TYPE_NONE); } return(-1); }