ability to set bool write values
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 018f9a9..7f5641e 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -368,6 +368,25 @@
 

 // --------- XMLUtil ----------- //

 

+char* XMLUtil::writeBoolTrue  = "true";

+char* XMLUtil::writeBoolFalse = "false";

+

+void XMLUtil::SetBool(const char* writeTrue, const char* writeFalse)

+{

+	static const char* defTrue = "true";

+	static const char* defFalse = "false";

+	if (writeTrue)

+		writeBoolTrue = (char*) writeTrue;

+	else

+		writeBoolTrue = (char*) defTrue;

+

+	if (writeFalse)

+		writeBoolFalse = (char*) writeFalse;

+	else

+		writeBoolFalse = (char*) defFalse;

+}

+

+

 const char* XMLUtil::ReadBOM( const char* p, bool* bom )

 {

     TIXMLASSERT( p );

@@ -545,7 +564,7 @@
 

 void XMLUtil::ToStr( bool v, char* buffer, int bufferSize )

 {

-    TIXML_SNPRINTF( buffer, bufferSize, "%s", v ? "true" : "false" );

+    TIXML_SNPRINTF( buffer, bufferSize, "%s", v ? writeBoolTrue : writeBoolFalse);

 }

 

 /*

diff --git a/tinyxml2.h b/tinyxml2.h
index de589bd..53f411a 100755
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -527,7 +527,7 @@
 /*

 	Utility functionality.

 */

-class XMLUtil

+class TINYXML2_LIB XMLUtil

 {

 public:

     static const char* SkipWhiteSpace( const char* p, int* curLineNumPtr )	{

@@ -605,6 +605,19 @@
     static bool	ToFloat( const char* str, float* value );

     static bool ToDouble( const char* str, double* value );

 	static bool ToInt64(const char* str, int64_t* value);

+

+	// Default to "true" and "false". If you

+	// need different values, can assign them. (For instance

+	// if you need "true" to be "1".)

+	// Be careful: static, global, & not thread safe.

+	// Be sure to set static const memory as parameters.

+	// Shouldn't be set unless you have a special reason 

+	// such as back-compatibility or testing.

+	static void SetBool(const char* writeTrue, const char* writeFalse);

+

+private:

+	static char* writeBoolTrue;

+	static char* writeBoolFalse;

 };

 

 

diff --git a/xmltest.cpp b/xmltest.cpp
index b6bb76f..27c9665 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -753,6 +753,18 @@
 			XMLTest("Attribute: bool", true, element->BoolAttribute("attrib"), true);

 		}

 		{

+			element->SetAttribute("attrib", true);

+			const char* result = element->Attribute("attrib");

+			XMLTest("Bool true is 'true'", "true", result);

+

+			XMLUtil::SetBool("1", "0");

+			element->SetAttribute("attrib", true);

+			result = element->Attribute("attrib");

+			XMLTest("Bool true is '1'", "1", result);

+

+			XMLUtil::SetBool(0, 0);

+		}

+		{

 			element->SetAttribute("attrib", 100.0);

 			double v = 0;

 			element->QueryDoubleAttribute("attrib", &v);