added whitespace=collapse support. tests work. code needs review
diff --git a/tinyxml2.h b/tinyxml2.h
index e1c22c5..b766d35 100644
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -24,11 +24,21 @@
 #ifndef TINYXML2_INCLUDED

 #define TINYXML2_INCLUDED

 

-#include <cctype>

-#include <climits>

-#include <cstdio>

-#include <cstring>

-#include <cstdarg>

+#ifdef ANDROID_NDK

+	#include <ctype.h>

+	#include <limits.h>

+	#include <stdio.h>

+	#include <stdlib.h>

+	#include <string.h>

+	#include <stdarg.h>

+#else

+	#include <cctype>

+	#include <climits>

+	#include <cstdio>

+	#include <cstdlib>

+	#include <cstring>

+	#include <cstdarg>

+#endif

 

 /* 

    TODO: intern strings instead of allocation.

@@ -112,6 +122,7 @@
 	enum {

 		NEEDS_ENTITY_PROCESSING			= 0x01,

 		NEEDS_NEWLINE_NORMALIZATION		= 0x02,

+		COLLAPSE_WHITESPACE				= 0x04,

 

 		TEXT_ELEMENT		= NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,

 		TEXT_ELEMENT_LEAVE_ENTITIES		= NEEDS_NEWLINE_NORMALIZATION,

@@ -140,6 +151,7 @@
 

 private:

 	void Reset();

+	void CollapseWhitespace();

 

 	enum {

 		NEEDS_FLUSH = 0x100,

@@ -365,6 +377,7 @@
 	// correct, but simple, and usually works.

 	static const char* SkipWhiteSpace( const char* p )	{ while( !IsUTF8Continuation(*p) && isspace( *reinterpret_cast<const unsigned char*>(p) ) ) { ++p; } return p; }

 	static char* SkipWhiteSpace( char* p )				{ while( !IsUTF8Continuation(*p) && isspace( *reinterpret_cast<unsigned char*>(p) ) )		{ ++p; } return p; }

+	static bool IsWhiteSpace( char p )					{ return !IsUTF8Continuation(p) && isspace( static_cast<unsigned char>(p) ); }

 

 	inline static bool StringEqual( const char* p, const char* q, int nChar=INT_MAX )  {

 		int n = 0;

@@ -1031,6 +1044,12 @@
 };

 

 

+enum Whitespace {

+	PRESERVE_WHITESPACE,

+	COLLAPSE_WHITESPACE

+};	   

+

+	

 /** A Document binds together all the functionality. 

 	It can be saved, loaded, and printed to the screen.

 	All Nodes are connected and allocated to a Document.

@@ -1041,7 +1060,7 @@
 	friend class XMLElement;

 public:

 	/// constructor

-	XMLDocument( bool processEntities = true ); 

+	XMLDocument( bool processEntities = true, Whitespace = PRESERVE_WHITESPACE ); 

 	~XMLDocument();

 

 	virtual XMLDocument* ToDocument()				{ return this; }

@@ -1086,7 +1105,8 @@
 	*/

 	int SaveFile( FILE* );

 

-	bool ProcessEntities() const						{ return processEntities; }

+	bool ProcessEntities() const		{ return processEntities; }

+	Whitespace WhitespaceMode() const	{ return whitespace; }

 

 	/**

 		Returns true if this document has a leading Byte Order Mark of UTF8.

@@ -1189,6 +1209,7 @@
 	bool writeBOM;

 	bool processEntities;

 	int errorID;

+	Whitespace whitespace;

 	const char* errorStr1;

 	const char* errorStr2;

 	char* charBuffer;