Просмотр исходного кода

Merge branch 'master' of https://github.com/gamaral/tinyxml2

Lee Thomason 14 лет назад
Родитель
Сommit
d7e033ec0c
4 измененных файлов с 81 добавлено и 80 удалено
  1. 4 0
      Makefile
  2. 24 27
      tinyxml2.cpp
  3. 41 40
      tinyxml2.h
  4. 12 13
      xmltest.cpp

+ 4 - 0
Makefile

@@ -0,0 +1,4 @@
+all: xmltest
+xmltest: xmltest.cpp tinyxml2.cpp tinyxml2.h
+clean:
+	rm -f *.o xmltest

+ 24 - 27
tinyxml2.cpp

@@ -23,13 +23,10 @@ distribution.
 
 
 #include "tinyxml2.h"
 #include "tinyxml2.h"
 
 
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
 #include <new>
 #include <new>
-#include <stdarg.h>
-
 
 
 using namespace tinyxml2;
 using namespace tinyxml2;
 
 
@@ -684,7 +681,7 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEnd )
 			DELETE_NODE( node );
 			DELETE_NODE( node );
 			node = 0;
 			node = 0;
 			if ( !document->Error() ) {
 			if ( !document->Error() ) {
-				document->SetError( ERROR_PARSING, 0, 0 );
+				document->SetError( XML_ERROR_PARSING, 0, 0 );
 			}
 			}
 			break;
 			break;
 		}
 		}
@@ -703,16 +700,16 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEnd )
 		XMLElement* ele = node->ToElement();
 		XMLElement* ele = node->ToElement();
 		if ( ele ) {
 		if ( ele ) {
 			if ( endTag.Empty() && ele->ClosingType() == XMLElement::OPEN ) {
 			if ( endTag.Empty() && ele->ClosingType() == XMLElement::OPEN ) {
-				document->SetError( ERROR_MISMATCHED_ELEMENT, node->Value(), 0 );
+				document->SetError( XML_ERROR_MISMATCHED_ELEMENT, node->Value(), 0 );
 				p = 0;
 				p = 0;
 			}
 			}
 			else if ( !endTag.Empty() && ele->ClosingType() != XMLElement::OPEN ) {
 			else if ( !endTag.Empty() && ele->ClosingType() != XMLElement::OPEN ) {
-				document->SetError( ERROR_MISMATCHED_ELEMENT, node->Value(), 0 );
+				document->SetError( XML_ERROR_MISMATCHED_ELEMENT, node->Value(), 0 );
 				p = 0;
 				p = 0;
 			}
 			}
 			else if ( !endTag.Empty() ) {
 			else if ( !endTag.Empty() ) {
 				if ( !XMLUtil::StringEqual( endTag.GetStr(), node->Value() )) { 
 				if ( !XMLUtil::StringEqual( endTag.GetStr(), node->Value() )) { 
-					document->SetError( ERROR_MISMATCHED_ELEMENT, node->Value(), 0 );
+					document->SetError( XML_ERROR_MISMATCHED_ELEMENT, node->Value(), 0 );
 					p = 0;
 					p = 0;
 				}
 				}
 			}
 			}
@@ -735,14 +732,14 @@ char* XMLText::ParseDeep( char* p, StrPair* )
 	if ( this->CData() ) {
 	if ( this->CData() ) {
 		p = value.ParseText( p, "]]>", StrPair::NEEDS_NEWLINE_NORMALIZATION );
 		p = value.ParseText( p, "]]>", StrPair::NEEDS_NEWLINE_NORMALIZATION );
 		if ( !p ) {
 		if ( !p ) {
-			document->SetError( ERROR_PARSING_CDATA, start, 0 );
+			document->SetError( XML_ERROR_PARSING_CDATA, start, 0 );
 		}
 		}
 		return p;
 		return p;
 	}
 	}
 	else {
 	else {
 		p = value.ParseText( p, "<", document->ProcessEntities() ? StrPair::TEXT_ELEMENT : StrPair::TEXT_ELEMENT_LEAVE_ENTITIES );
 		p = value.ParseText( p, "<", document->ProcessEntities() ? StrPair::TEXT_ELEMENT : StrPair::TEXT_ELEMENT_LEAVE_ENTITIES );
 		if ( !p ) {
 		if ( !p ) {
-			document->SetError( ERROR_PARSING_TEXT, start, 0 );
+			document->SetError( XML_ERROR_PARSING_TEXT, start, 0 );
 		}
 		}
 		if ( p && *p ) {
 		if ( p && *p ) {
 			return p-1;
 			return p-1;
@@ -794,7 +791,7 @@ char* XMLComment::ParseDeep( char* p, StrPair* )
 	const char* start = p;
 	const char* start = p;
 	p = value.ParseText( p, "-->", StrPair::COMMENT );
 	p = value.ParseText( p, "-->", StrPair::COMMENT );
 	if ( p == 0 ) {
 	if ( p == 0 ) {
-		document->SetError( ERROR_PARSING_COMMENT, start, 0 );
+		document->SetError( XML_ERROR_PARSING_COMMENT, start, 0 );
 	}
 	}
 	return p;
 	return p;
 }
 }
@@ -841,7 +838,7 @@ char* XMLDeclaration::ParseDeep( char* p, StrPair* )
 	const char* start = p;
 	const char* start = p;
 	p = value.ParseText( p, "?>", StrPair::NEEDS_NEWLINE_NORMALIZATION );
 	p = value.ParseText( p, "?>", StrPair::NEEDS_NEWLINE_NORMALIZATION );
 	if ( p == 0 ) {
 	if ( p == 0 ) {
-		document->SetError( ERROR_PARSING_DECLARATION, start, 0 );
+		document->SetError( XML_ERROR_PARSING_DECLARATION, start, 0 );
 	}
 	}
 	return p;
 	return p;
 }
 }
@@ -888,7 +885,7 @@ char* XMLUnknown::ParseDeep( char* p, StrPair* )
 
 
 	p = value.ParseText( p, ">", StrPair::NEEDS_NEWLINE_NORMALIZATION );
 	p = value.ParseText( p, ">", StrPair::NEEDS_NEWLINE_NORMALIZATION );
 	if ( !p ) {
 	if ( !p ) {
-		document->SetError( ERROR_PARSING_UNKNOWN, start, 0 );
+		document->SetError( XML_ERROR_PARSING_UNKNOWN, start, 0 );
 	}
 	}
 	return p;
 	return p;
 }
 }
@@ -939,7 +936,7 @@ int XMLAttribute::QueryIntValue( int* value ) const
 {
 {
 	if ( TIXML_SSCANF( Value(), "%d", value ) == 1 )
 	if ( TIXML_SSCANF( Value(), "%d", value ) == 1 )
 		return XML_NO_ERROR;
 		return XML_NO_ERROR;
-	return WRONG_ATTRIBUTE_TYPE;
+	return XML_WRONG_ATTRIBUTE_TYPE;
 }
 }
 
 
 
 
@@ -947,7 +944,7 @@ int XMLAttribute::QueryUnsignedValue( unsigned int* value ) const
 {
 {
 	if ( TIXML_SSCANF( Value(), "%u", value ) == 1 )
 	if ( TIXML_SSCANF( Value(), "%u", value ) == 1 )
 		return XML_NO_ERROR;
 		return XML_NO_ERROR;
-	return WRONG_ATTRIBUTE_TYPE;
+	return XML_WRONG_ATTRIBUTE_TYPE;
 }
 }
 
 
 
 
@@ -964,7 +961,7 @@ int XMLAttribute::QueryBoolValue( bool* value ) const
 		*value = false;
 		*value = false;
 		return XML_NO_ERROR;
 		return XML_NO_ERROR;
 	}
 	}
-	return WRONG_ATTRIBUTE_TYPE;
+	return XML_WRONG_ATTRIBUTE_TYPE;
 }
 }
 
 
 
 
@@ -972,7 +969,7 @@ int XMLAttribute::QueryDoubleValue( double* value ) const
 {
 {
 	if ( TIXML_SSCANF( Value(), "%lf", value ) == 1 )
 	if ( TIXML_SSCANF( Value(), "%lf", value ) == 1 )
 		return XML_NO_ERROR;
 		return XML_NO_ERROR;
-	return WRONG_ATTRIBUTE_TYPE;
+	return XML_WRONG_ATTRIBUTE_TYPE;
 }
 }
 
 
 
 
@@ -980,7 +977,7 @@ int XMLAttribute::QueryFloatValue( float* value ) const
 {
 {
 	if ( TIXML_SSCANF( Value(), "%f", value ) == 1 )
 	if ( TIXML_SSCANF( Value(), "%f", value ) == 1 )
 		return XML_NO_ERROR;
 		return XML_NO_ERROR;
-	return WRONG_ATTRIBUTE_TYPE;
+	return XML_WRONG_ATTRIBUTE_TYPE;
 }
 }
 
 
 
 
@@ -1132,7 +1129,7 @@ char* XMLElement::ParseAttributes( char* p )
 	while( p ) {
 	while( p ) {
 		p = XMLUtil::SkipWhiteSpace( p );
 		p = XMLUtil::SkipWhiteSpace( p );
 		if ( !p || !(*p) ) {
 		if ( !p || !(*p) ) {
-			document->SetError( ERROR_PARSING_ELEMENT, start, Name() );
+			document->SetError( XML_ERROR_PARSING_ELEMENT, start, Name() );
 			return 0;
 			return 0;
 		}
 		}
 
 
@@ -1144,7 +1141,7 @@ char* XMLElement::ParseAttributes( char* p )
 			p = attrib->ParseDeep( p, document->ProcessEntities() );
 			p = attrib->ParseDeep( p, document->ProcessEntities() );
 			if ( !p || Attribute( attrib->Name() ) ) {
 			if ( !p || Attribute( attrib->Name() ) ) {
 				DELETE_ATTRIBUTE( attrib );
 				DELETE_ATTRIBUTE( attrib );
-				document->SetError( ERROR_PARSING_ATTRIBUTE, start, p );
+				document->SetError( XML_ERROR_PARSING_ATTRIBUTE, start, p );
 				return 0;
 				return 0;
 			}
 			}
 			LinkAttribute( attrib );
 			LinkAttribute( attrib );
@@ -1160,7 +1157,7 @@ char* XMLElement::ParseAttributes( char* p )
 			break;
 			break;
 		}
 		}
 		else {
 		else {
-			document->SetError( ERROR_PARSING_ELEMENT, start, p );
+			document->SetError( XML_ERROR_PARSING_ELEMENT, start, p );
 			return 0;
 			return 0;
 		}
 		}
 	}
 	}
@@ -1353,7 +1350,7 @@ int XMLDocument::LoadFile( const char* filename )
 #pragma warning ( pop )
 #pragma warning ( pop )
 #endif
 #endif
 	if ( !fp ) {
 	if ( !fp ) {
-		SetError( ERROR_FILE_NOT_FOUND, filename, 0 );
+		SetError( XML_ERROR_FILE_NOT_FOUND, filename, 0 );
 		return errorID;
 		return errorID;
 	}
 	}
 	LoadFile( fp );
 	LoadFile( fp );
@@ -1383,7 +1380,7 @@ int XMLDocument::LoadFile( FILE* fp )
 	p = XMLUtil::SkipWhiteSpace( p );
 	p = XMLUtil::SkipWhiteSpace( p );
 	p = XMLUtil::ReadBOM( p, &writeBOM );
 	p = XMLUtil::ReadBOM( p, &writeBOM );
 	if ( !p || !*p ) {
 	if ( !p || !*p ) {
-		SetError( ERROR_EMPTY_DOCUMENT, 0, 0 );
+		SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );
 		return errorID;
 		return errorID;
 	}
 	}
 
 
@@ -1414,13 +1411,13 @@ int XMLDocument::Parse( const char* p )
 	InitDocument();
 	InitDocument();
 
 
 	if ( !p || !*p ) {
 	if ( !p || !*p ) {
-		SetError( ERROR_EMPTY_DOCUMENT, 0, 0 );
+		SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );
 		return errorID;
 		return errorID;
 	}
 	}
 	p = XMLUtil::SkipWhiteSpace( p );
 	p = XMLUtil::SkipWhiteSpace( p );
 	p = XMLUtil::ReadBOM( p, &writeBOM );
 	p = XMLUtil::ReadBOM( p, &writeBOM );
 	if ( !p || !*p ) {
 	if ( !p || !*p ) {
-		SetError( ERROR_EMPTY_DOCUMENT, 0, 0 );
+		SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );
 		return errorID;
 		return errorID;
 	}
 	}
 
 

+ 41 - 40
tinyxml2.h

@@ -24,11 +24,13 @@ distribution.
 #ifndef TINYXML2_INCLUDED
 #ifndef TINYXML2_INCLUDED
 #define TINYXML2_INCLUDED
 #define TINYXML2_INCLUDED
 
 
-
-#include <limits.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <memory.h>		// Needed by mac.
+#include <cctype>
+#include <climits>
+#include <cstdio>
+#include <cstring>
+#if __APPLE__
+#  include <memory.h>
+#endif
 
 
 /* 
 /* 
    TODO: add 'lastAttribute' for faster parsing.
    TODO: add 'lastAttribute' for faster parsing.
@@ -36,7 +38,6 @@ distribution.
 */
 */
 /*
 /*
 	gcc: g++ -Wall tinyxml2.cpp xmltest.cpp -o gccxmltest.exe
 	gcc: g++ -Wall tinyxml2.cpp xmltest.cpp -o gccxmltest.exe
-
 */
 */
 
 
 #if defined( _DEBUG ) || defined( DEBUG ) || defined (__DEBUG__)
 #if defined( _DEBUG ) || defined( DEBUG ) || defined (__DEBUG__)
@@ -120,15 +121,15 @@ public:
 		ATTRIBUTE_NAME		= 0,
 		ATTRIBUTE_NAME		= 0,
 		ATTRIBUTE_VALUE		= NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
 		ATTRIBUTE_VALUE		= NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
 		ATTRIBUTE_VALUE_LEAVE_ENTITIES		= NEEDS_NEWLINE_NORMALIZATION,
 		ATTRIBUTE_VALUE_LEAVE_ENTITIES		= NEEDS_NEWLINE_NORMALIZATION,
-		COMMENT				= NEEDS_NEWLINE_NORMALIZATION,
+		COMMENT				= NEEDS_NEWLINE_NORMALIZATION
 	};
 	};
 
 
 	StrPair() : flags( 0 ), start( 0 ), end( 0 ) {}
 	StrPair() : flags( 0 ), start( 0 ), end( 0 ) {}
 	~StrPair();
 	~StrPair();
 
 
-	void Set( char* start, char* end, int flags ) {
+	void Set( char* start_, char* end_, int flags_ ) {
 		Reset();
 		Reset();
-		this->start = start; this->end = end; this->flags = flags | NEEDS_FLUSH;
+		this->start = start_; this->end = end_; this->flags = flags_ | NEEDS_FLUSH;
 	}
 	}
 	const char* GetStr();
 	const char* GetStr();
 	bool Empty() const { return start == end; }
 	bool Empty() const { return start == end; }
@@ -381,7 +382,7 @@ public:
 		}
 		}
 		return false;
 		return false;
 	}
 	}
-	inline static int IsUTF8Continuation( unsigned char p ) { return p & 0x80; }
+	inline static int IsUTF8Continuation( const char p ) { return p & 0x80; }
 	inline static int IsAlphaNum( unsigned char anyByte )	{ return ( anyByte < 128 ) ? isalnum( anyByte ) : 1; }
 	inline static int IsAlphaNum( unsigned char anyByte )	{ return ( anyByte < 128 ) ? isalnum( anyByte ) : 1; }
 	inline static int IsAlpha( unsigned char anyByte )		{ return ( anyByte < 128 ) ? isalpha( anyByte ) : 1; }
 	inline static int IsAlpha( unsigned char anyByte )		{ return ( anyByte < 128 ) ? isalpha( anyByte ) : 1; }
 
 
@@ -472,7 +473,7 @@ public:
 	    element with the specified name.
 	    element with the specified name.
 	*/
 	*/
 	const XMLElement* FirstChildElement( const char* value=0 ) const;
 	const XMLElement* FirstChildElement( const char* value=0 ) const;
-	XMLElement* FirstChildElement( const char* value=0 )	{ return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->FirstChildElement( value )); }
+	XMLElement* FirstChildElement( const char* value_=0 )	{ return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->FirstChildElement( value_ )); }
 
 
 	/// Get the last child node, or null if none exists.
 	/// Get the last child node, or null if none exists.
 	const XMLNode*	LastChild() const						{ return lastChild; }
 	const XMLNode*	LastChild() const						{ return lastChild; }
@@ -482,7 +483,7 @@ public:
 	    element with the specified name.
 	    element with the specified name.
 	*/
 	*/
 	const XMLElement* LastChildElement( const char* value=0 ) const;
 	const XMLElement* LastChildElement( const char* value=0 ) const;
-	XMLElement* LastChildElement( const char* value=0 )	{ return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->LastChildElement(value) ); }
+	XMLElement* LastChildElement( const char* value_=0 )	{ return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->LastChildElement(value_) ); }
 	
 	
 	/// Get the previous (left) sibling node of this node.
 	/// Get the previous (left) sibling node of this node.
 	const XMLNode*	PreviousSibling() const					{ return prev; }
 	const XMLNode*	PreviousSibling() const					{ return prev; }
@@ -490,7 +491,7 @@ public:
 
 
 	/// Get the previous (left) sibling element of this node, with an opitionally supplied name.
 	/// Get the previous (left) sibling element of this node, with an opitionally supplied name.
 	const XMLElement*	PreviousSiblingElement( const char* value=0 ) const ;
 	const XMLElement*	PreviousSiblingElement( const char* value=0 ) const ;
-	XMLElement*	PreviousSiblingElement( const char* value=0 ) { return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->PreviousSiblingElement( value ) ); }
+	XMLElement*	PreviousSiblingElement( const char* value_=0 ) { return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->PreviousSiblingElement( value_ ) ); }
 	
 	
 	/// Get the next (right) sibling node of this node.
 	/// Get the next (right) sibling node of this node.
 	const XMLNode*	NextSibling() const						{ return next; }
 	const XMLNode*	NextSibling() const						{ return next; }
@@ -498,7 +499,7 @@ public:
 		
 		
 	/// Get the next (right) sibling element of this node, with an opitionally supplied name.
 	/// Get the next (right) sibling element of this node, with an opitionally supplied name.
 	const XMLElement*	NextSiblingElement( const char* value=0 ) const;
 	const XMLElement*	NextSiblingElement( const char* value=0 ) const;
- 	XMLElement*	NextSiblingElement( const char* value=0 )	{ return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->NextSiblingElement( value ) ); }
+ 	XMLElement*	NextSiblingElement( const char* value_=0 )	{ return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->NextSiblingElement( value_ ) ); }
 
 
 	/**
 	/**
 		Add a child node as the last (right) child.
 		Add a child node as the last (right) child.
@@ -616,7 +617,7 @@ public:
 	virtual const XMLText*	ToText() const	{ return this; }
 	virtual const XMLText*	ToText() const	{ return this; }
 
 
 	/// Declare whether this should be CDATA or standard text.
 	/// Declare whether this should be CDATA or standard text.
-	void SetCData( bool isCData )			{ this->isCData = isCData; }
+	void SetCData( bool isCData_ )			{ this->isCData = isCData_; }
 	/// Returns true if this is a CDATA text element.
 	/// Returns true if this is a CDATA text element.
 	bool CData() const						{ return isCData; }
 	bool CData() const						{ return isCData; }
 
 
@@ -724,22 +725,22 @@ enum {
 	XML_NO_ERROR = 0,
 	XML_NO_ERROR = 0,
 	XML_SUCCESS = 0,
 	XML_SUCCESS = 0,
 
 
-	NO_ATTRIBUTE,
-	WRONG_ATTRIBUTE_TYPE,
-
-	ERROR_FILE_NOT_FOUND,
-	ERROR_ELEMENT_MISMATCH,
-	ERROR_PARSING_ELEMENT,
-	ERROR_PARSING_ATTRIBUTE,
-	ERROR_IDENTIFYING_TAG,
-	ERROR_PARSING_TEXT,
-	ERROR_PARSING_CDATA,
-	ERROR_PARSING_COMMENT,
-	ERROR_PARSING_DECLARATION,
-	ERROR_PARSING_UNKNOWN,
-	ERROR_EMPTY_DOCUMENT,
-	ERROR_MISMATCHED_ELEMENT,
-	ERROR_PARSING
+	XML_NO_ATTRIBUTE,
+	XML_WRONG_ATTRIBUTE_TYPE,
+
+	XML_ERROR_FILE_NOT_FOUND,
+	XML_ERROR_ELEMENT_MISMATCH,
+	XML_ERROR_PARSING_ELEMENT,
+	XML_ERROR_PARSING_ATTRIBUTE,
+	XML_ERROR_IDENTIFYING_TAG,
+	XML_ERROR_PARSING_TEXT,
+	XML_ERROR_PARSING_CDATA,
+	XML_ERROR_PARSING_COMMENT,
+	XML_ERROR_PARSING_DECLARATION,
+	XML_ERROR_PARSING_UNKNOWN,
+	XML_ERROR_EMPTY_DOCUMENT,
+	XML_ERROR_MISMATCHED_ELEMENT,
+	XML_ERROR_PARSING
 };
 };
 
 
 
 
@@ -773,7 +774,7 @@ public:
 
 
 	/** QueryIntAttribute interprets the attribute as an integer, and returns the value
 	/** QueryIntAttribute interprets the attribute as an integer, and returns the value
 		in the provided paremeter. The function will return XML_NO_ERROR on success,
 		in the provided paremeter. The function will return XML_NO_ERROR on success,
-		and WRONG_ATTRIBUTE_TYPE if the conversion is not successful.
+		and XML_WRONG_ATTRIBUTE_TYPE if the conversion is not successful.
 	*/
 	*/
 	int QueryIntValue( int* value ) const;
 	int QueryIntValue( int* value ) const;
 	/// See QueryIntAttribute
 	/// See QueryIntAttribute
@@ -855,8 +856,8 @@ public:
 	float	 FloatAttribute( const char* name ) const	{ float f=0;	QueryFloatAttribute( name, &f );		return f; }
 	float	 FloatAttribute( const char* name ) const	{ float f=0;	QueryFloatAttribute( name, &f );		return f; }
 
 
 	/** Given an attribute name, QueryIntAttribute() returns 
 	/** Given an attribute name, QueryIntAttribute() returns 
-		XML_NO_ERROR, WRONG_ATTRIBUTE_TYPE if the conversion
-		can't be performed, or NO_ATTRIBUTE if the attribute
+		XML_NO_ERROR, XML_WRONG_ATTRIBUTE_TYPE if the conversion
+		can't be performed, or XML_NO_ATTRIBUTE if the attribute
 		doesn't exist. If successful, the result of the conversion
 		doesn't exist. If successful, the result of the conversion
 		will be written to 'value'. If not successful, nothing will
 		will be written to 'value'. If not successful, nothing will
 		be written to 'value'. This allows you to provide default
 		be written to 'value'. This allows you to provide default
@@ -867,15 +868,15 @@ public:
 		QueryIntAttribute( "foo", &value );		// if "foo" isn't found, value will still be 10
 		QueryIntAttribute( "foo", &value );		// if "foo" isn't found, value will still be 10
 		@endverbatim
 		@endverbatim
 	*/
 	*/
-	int QueryIntAttribute( const char* name, int* value ) const					{ const XMLAttribute* a = FindAttribute( name ); if ( !a ) return NO_ATTRIBUTE; return a->QueryIntValue( value ); } 
+	int QueryIntAttribute( const char* name, int* value ) const					{ const XMLAttribute* a = FindAttribute( name ); if ( !a ) return XML_NO_ATTRIBUTE; return a->QueryIntValue( value ); } 
 	/// See QueryIntAttribute()
 	/// See QueryIntAttribute()
-	int QueryUnsignedAttribute( const char* name, unsigned int* value ) const	{ const XMLAttribute* a = FindAttribute( name ); if ( !a ) return NO_ATTRIBUTE; return a->QueryUnsignedValue( value ); }
+	int QueryUnsignedAttribute( const char* name, unsigned int* value ) const	{ const XMLAttribute* a = FindAttribute( name ); if ( !a ) return XML_NO_ATTRIBUTE; return a->QueryUnsignedValue( value ); }
 	/// See QueryIntAttribute()
 	/// See QueryIntAttribute()
-	int QueryBoolAttribute( const char* name, bool* value ) const				{ const XMLAttribute* a = FindAttribute( name ); if ( !a ) return NO_ATTRIBUTE; return a->QueryBoolValue( value ); }
+	int QueryBoolAttribute( const char* name, bool* value ) const				{ const XMLAttribute* a = FindAttribute( name ); if ( !a ) return XML_NO_ATTRIBUTE; return a->QueryBoolValue( value ); }
 	/// See QueryIntAttribute()
 	/// See QueryIntAttribute()
-	int QueryDoubleAttribute( const char* name, double* value ) const			{ const XMLAttribute* a = FindAttribute( name ); if ( !a ) return NO_ATTRIBUTE; return a->QueryDoubleValue( value ); }
+	int QueryDoubleAttribute( const char* name, double* value ) const			{ const XMLAttribute* a = FindAttribute( name ); if ( !a ) return XML_NO_ATTRIBUTE; return a->QueryDoubleValue( value ); }
 	/// See QueryIntAttribute()
 	/// See QueryIntAttribute()
-	int QueryFloatAttribute( const char* name, float* value ) const				{ const XMLAttribute* a = FindAttribute( name ); if ( !a ) return NO_ATTRIBUTE; return a->QueryFloatValue( value ); }
+	int QueryFloatAttribute( const char* name, float* value ) const				{ const XMLAttribute* a = FindAttribute( name ); if ( !a ) return XML_NO_ATTRIBUTE; return a->QueryFloatValue( value ); }
 
 
 	/// Sets the named attribute to value.
 	/// Sets the named attribute to value.
 	void SetAttribute( const char* name, const char* value )	{ XMLAttribute* a = FindOrCreateAttribute( name ); a->SetAttribute( value ); }
 	void SetAttribute( const char* name, const char* value )	{ XMLAttribute* a = FindOrCreateAttribute( name ); a->SetAttribute( value ); }
@@ -1219,7 +1220,7 @@ private:
 };
 };
 
 
 
 
-};	// tinyxml2
+}	// tinyxml2
 
 
 
 
 
 

+ 12 - 13
xmltest.cpp

@@ -1,9 +1,8 @@
 #include "tinyxml2.h"
 #include "tinyxml2.h"
 
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
 
 
 #if defined( _MSC_VER )
 #if defined( _MSC_VER )
 	#include <crtdbg.h>
 	#include <crtdbg.h>
@@ -72,7 +71,7 @@ void NullLineEndings( char* p )
 }
 }
 
 
 
 
-int main( int /*argc*/, const char* /*argv*/ )
+int main( int /*argc*/, const char ** /*argv*/ )
 {
 {
 	#if defined( _MSC_VER ) && defined( DEBUG )
 	#if defined( _MSC_VER ) && defined( DEBUG )
 		_CrtMemCheckpoint( &startMemState );
 		_CrtMemCheckpoint( &startMemState );
@@ -196,7 +195,7 @@ int main( int /*argc*/, const char* /*argv*/ )
 		XMLTest( "Programmatic DOM", true, doc->FirstChildElement()->FirstChildElement()->BoolAttribute( "attrib" ) );
 		XMLTest( "Programmatic DOM", true, doc->FirstChildElement()->FirstChildElement()->BoolAttribute( "attrib" ) );
 		int value = 10;
 		int value = 10;
 		int result = doc->FirstChildElement()->LastChildElement()->QueryIntAttribute( "attrib", &value );
 		int result = doc->FirstChildElement()->LastChildElement()->QueryIntAttribute( "attrib", &value );
-		XMLTest( "Programmatic DOM", result, NO_ATTRIBUTE );
+		XMLTest( "Programmatic DOM", result, XML_NO_ATTRIBUTE );
 		XMLTest( "Programmatic DOM", value, 10 );
 		XMLTest( "Programmatic DOM", value, 10 );
 
 
 		doc->Print();
 		doc->Print();
@@ -250,7 +249,7 @@ int main( int /*argc*/, const char* /*argv*/ )
 
 
 		XMLDocument doc;
 		XMLDocument doc;
 		doc.Parse( error );
 		doc.Parse( error );
-		XMLTest( "Bad XML", doc.ErrorID(), ERROR_PARSING_ATTRIBUTE );
+		XMLTest( "Bad XML", doc.ErrorID(), XML_ERROR_PARSING_ATTRIBUTE );
 	}
 	}
 
 
 	{
 	{
@@ -273,9 +272,9 @@ int main( int /*argc*/, const char* /*argv*/ )
 		XMLTest( "Query attribute: double as int", result, XML_NO_ERROR );
 		XMLTest( "Query attribute: double as int", result, XML_NO_ERROR );
 		XMLTest( "Query attribute: double as int", iVal, 2 );
 		XMLTest( "Query attribute: double as int", iVal, 2 );
 		result = ele->QueryIntAttribute( "attr2", &iVal );
 		result = ele->QueryIntAttribute( "attr2", &iVal );
-		XMLTest( "Query attribute: not a number", result, WRONG_ATTRIBUTE_TYPE );
+		XMLTest( "Query attribute: not a number", result, XML_WRONG_ATTRIBUTE_TYPE );
 		result = ele->QueryIntAttribute( "bar", &iVal );
 		result = ele->QueryIntAttribute( "bar", &iVal );
-		XMLTest( "Query attribute: does not exist", result, NO_ATTRIBUTE );
+		XMLTest( "Query attribute: does not exist", result, XML_NO_ATTRIBUTE );
 	}
 	}
 
 
 	{
 	{
@@ -569,7 +568,7 @@ int main( int /*argc*/, const char* /*argv*/ )
 		XMLDocument doc;
 		XMLDocument doc;
 		doc.Parse( doctype );
 		doc.Parse( doctype );
 		
 		
-		XMLTest( "Parsing repeated attributes.", ERROR_PARSING_ATTRIBUTE, doc.ErrorID() );	// is an  error to tinyxml (didn't use to be, but caused issues)
+		XMLTest( "Parsing repeated attributes.", XML_ERROR_PARSING_ATTRIBUTE, doc.ErrorID() );	// is an  error to tinyxml (didn't use to be, but caused issues)
 		doc.PrintError();
 		doc.PrintError();
 	}
 	}
 
 
@@ -583,11 +582,11 @@ int main( int /*argc*/, const char* /*argv*/ )
 	}
 	}
 
 
 	{
 	{
-		// Empty documents should return TIXML_ERROR_PARSING_EMPTY, bug 1070717
+		// Empty documents should return TIXML_XML_ERROR_PARSING_EMPTY, bug 1070717
 		const char* str = "    ";
 		const char* str = "    ";
 		XMLDocument doc;
 		XMLDocument doc;
 		doc.Parse( str );
 		doc.Parse( str );
-		XMLTest( "Empty document error", ERROR_EMPTY_DOCUMENT, doc.ErrorID() );
+		XMLTest( "Empty document error", XML_ERROR_EMPTY_DOCUMENT, doc.ErrorID() );
 	}
 	}
 
 
 	{
 	{
@@ -614,7 +613,7 @@ int main( int /*argc*/, const char* /*argv*/ )
 		xml.Parse("<x> ");
 		xml.Parse("<x> ");
 		XMLTest("Missing end tag with trailing whitespace", xml.Error(), true);
 		XMLTest("Missing end tag with trailing whitespace", xml.Error(), true);
 		xml.Parse("<x></y>");
 		xml.Parse("<x></y>");
-		XMLTest("Mismatched tags", xml.ErrorID(), ERROR_MISMATCHED_ELEMENT);
+		XMLTest("Mismatched tags", xml.ErrorID(), XML_ERROR_MISMATCHED_ELEMENT);
 	} 
 	}