sync
diff --git a/tinyxml2.h b/tinyxml2.h
index 27f38c9..066e38d 100644
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -3,16 +3,19 @@
 

 /*

 	TODO

-	- const and non-const versions of API

+	X const and non-const versions of API

 	X memory pool the class construction

-	- attribute accessors

-	- node navigation

+	X attribute accessors

+	X node navigation

 	- handles

-	- visit pattern - change streamer?

-	- make constructors protected

-	- hide copy constructor

-	- hide = operator

+	X visit pattern - change streamer?

+	X make constructors protected

+	X hide copy constructor

+	X hide = operator

 	X UTF8 support: isAlpha, etc.

+	- tests from xml1

+	- perf test: xml1

+	- perf test: xenowar

 */

 

 #include <limits.h>

@@ -156,6 +159,7 @@
 	int size;			// number objects in use

 };

 

+

 class MemPool

 {

 public:

@@ -167,6 +171,7 @@
 	virtual void Free( void* ) = 0; 

 };

 

+

 template< int SIZE >

 class MemPoolT : public MemPool

 {

@@ -371,18 +376,17 @@
 	//virtual void Print( XMLStreamer* streamer );

 

 	virtual char* ParseDeep( char* );

-	void SetTextParent()		{ isTextParent = true; } 

-	bool IsTextParent() const	{ return isTextParent; }

 	virtual bool IsClosingElement() const { return false; }

 

 protected:

 	XMLNode( XMLDocument* );

 	virtual ~XMLNode();

+	XMLNode( const XMLNode& );	// not supported

+	void operator=( const XMLNode& );	// not supported

 	

 	XMLDocument*	document;

 	XMLNode*		parent;

-	bool			isTextParent;

-	mutable StrPair			value;

+	mutable StrPair	value;

 

 	XMLNode*		firstChild;

 	XMLNode*		lastChild;

@@ -402,6 +406,7 @@
 	friend class XMLDocument;

 public:

 	virtual bool Accept( XMLVisitor* visitor ) const;

+

 	virtual XMLText*	ToText()			{ return this; }

 	virtual const XMLText*	ToText() const	{ return this; }

 

@@ -413,6 +418,8 @@
 protected:

 	XMLText( XMLDocument* doc )	: XMLNode( doc ), isCData( false )	{}

 	virtual ~XMLText()												{}

+	XMLText( const XMLText& );	// not supported

+	void operator=( const XMLText& );	// not supported

 

 private:

 	bool isCData;

@@ -433,6 +440,8 @@
 protected:

 	XMLComment( XMLDocument* doc );

 	virtual ~XMLComment();

+	XMLComment( const XMLComment& );	// not supported

+	void operator=( const XMLComment& );	// not supported

 

 private:

 };

@@ -452,6 +461,8 @@
 protected:

 	XMLDeclaration( XMLDocument* doc );

 	virtual ~XMLDeclaration();

+	XMLDeclaration( const XMLDeclaration& );	// not supported

+	void operator=( const XMLDeclaration& );	// not supported

 };

 

 

@@ -469,6 +480,8 @@
 protected:

 	XMLUnknown( XMLDocument* doc );

 	virtual ~XMLUnknown();

+	XMLUnknown( const XMLUnknown& );	// not supported

+	void operator=( const XMLUnknown& );	// not supported

 };

 

 

@@ -476,15 +489,28 @@
 {

 	friend class XMLElement;

 public:

-	//virtual void Print( XMLStreamer* streamer );

-

 	const char* Name() const { return name.GetStr(); }

 	const char* Value() const { return value.GetStr(); }

 	const XMLAttribute* Next() const { return next; }

 

+	int QueryIntAttribute( const char* name, int* value ) const;

+	int QueryUnsignedAttribute( const char* name, unsigned int* value ) const;

+	int QueryBoolAttribute( const char* name, bool* value ) const;

+	int QueryDoubleAttribute( const char* name, double* _value ) const;

+	int QueryFloatAttribute( const char* name, float* _value ) const;

+

+	void SetAttribute( const char* name, const char* value );

+	void SetAttribute( const char* name, int value );

+	void SetAttribute( const char* name, unsigned value );

+	void SetAttribute( const char* name, bool value );

+	void SetAttribute( const char* name, double value );

+

 private:

 	XMLAttribute( XMLElement* element ) : next( 0 ) {}

 	virtual ~XMLAttribute()	{}

+	XMLAttribute( const XMLAttribute& );	// not supported

+	void operator=( const XMLAttribute& );	// not supported

+

 	char* ParseDeep( char* p );

 

 	mutable StrPair name;

@@ -530,11 +556,12 @@
 	virtual bool IsClosingElement() const { return closing; }

 	char* ParseDeep( char* p );

 

-protected:

+private:

 	XMLElement( XMLDocument* doc );

 	virtual ~XMLElement();

+	XMLElement( const XMLElement& );	// not supported

+	void operator=( const XMLElement& );	// not supported

 

-private:

 	char* ParseAttributes( char* p, bool *closedElement );

 

 	bool closing;

@@ -579,8 +606,8 @@
 	char* Identify( char* p, XMLNode** node );

 

 private:

-

-	XMLDocument( const XMLDocument& );	// intentionally not implemented

+	XMLDocument( const XMLDocument& );	// not supported

+	void operator=( const XMLDocument& );	// not supported

 	void InitDocument();

 

 	int errorID;