mirror of https://github.com/AxioDL/tinyxml2.git
Merge pull request #513 from leethomason/bool-write
Bool serialization.
This commit is contained in:
commit
b37cb42b78
15
tinyxml2.cpp
15
tinyxml2.cpp
|
@ -368,6 +368,19 @@ const char* StrPair::GetStr()
|
|||
|
||||
// --------- XMLUtil ----------- //
|
||||
|
||||
const char* XMLUtil::writeBoolTrue = "true";
|
||||
const char* XMLUtil::writeBoolFalse = "false";
|
||||
|
||||
void XMLUtil::SetBoolSerialization(const char* writeTrue, const char* writeFalse)
|
||||
{
|
||||
static const char* defTrue = "true";
|
||||
static const char* defFalse = "false";
|
||||
|
||||
writeBoolTrue = (writeTrue) ? writeTrue : defTrue;
|
||||
writeBoolFalse = (writeFalse) ? writeFalse : defFalse;
|
||||
}
|
||||
|
||||
|
||||
const char* XMLUtil::ReadBOM( const char* p, bool* bom )
|
||||
{
|
||||
TIXMLASSERT( p );
|
||||
|
@ -545,7 +558,7 @@ void XMLUtil::ToStr( unsigned v, char* buffer, int bufferSize )
|
|||
|
||||
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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
13
tinyxml2.h
13
tinyxml2.h
|
@ -527,7 +527,7 @@ enum XMLError {
|
|||
/*
|
||||
Utility functionality.
|
||||
*/
|
||||
class XMLUtil
|
||||
class TINYXML2_LIB XMLUtil
|
||||
{
|
||||
public:
|
||||
static const char* SkipWhiteSpace( const char* p, int* curLineNumPtr ) {
|
||||
|
@ -605,6 +605,17 @@ public:
|
|||
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);
|
||||
|
||||
// Changes what is serialized for a boolean value.
|
||||
// Default to "true" and "false". Shouldn't be changed
|
||||
// unless you have a special testing or compatibility need.
|
||||
// Be careful: static, global, & not thread safe.
|
||||
// Be sure to set static const memory as parameters.
|
||||
static void SetBoolSerialization(const char* writeTrue, const char* writeFalse);
|
||||
|
||||
private:
|
||||
static const char* writeBoolTrue;
|
||||
static const char* writeBoolFalse;
|
||||
};
|
||||
|
||||
|
||||
|
|
12
xmltest.cpp
12
xmltest.cpp
|
@ -752,6 +752,18 @@ int main( int argc, const char ** argv )
|
|||
XMLTest("Attribute: bool", true, v, true);
|
||||
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::SetBoolSerialization("1", "0");
|
||||
element->SetAttribute("attrib", true);
|
||||
result = element->Attribute("attrib");
|
||||
XMLTest("Bool true is '1'", "1", result);
|
||||
|
||||
XMLUtil::SetBoolSerialization(0, 0);
|
||||
}
|
||||
{
|
||||
element->SetAttribute("attrib", 100.0);
|
||||
double v = 0;
|
||||
|
|
Loading…
Reference in New Issue