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);