Merge branch 'master' of https://github.com/leethomason/tinyxml2
Conflicts:
tinyxml2.cpp
xmltest.cpp
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 399c4c2..12cac92 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,7 +10,7 @@
################################
# set lib version here
-set(GENERIC_LIB_VERSION "1.0.13")
+set(GENERIC_LIB_VERSION "1.0.14")
set(GENERIC_LIB_SOVERSION "1")
diff --git a/dox b/dox
index 2413b2e..10878f4 100755
--- a/dox
+++ b/dox
@@ -32,7 +32,7 @@
# This could be handy for archiving the generated documentation or
# if some version control system is used.
-PROJECT_NUMBER = 1.0.13
+PROJECT_NUMBER = 1.0.14
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index efaa29a..6081856 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -1293,71 +1293,46 @@
}
-void XMLElement::SetText( int inNum )
+void XMLElement::SetText( int v )
{
char buf[BUF_SIZE];
- XMLUtil::ToStr( inNum, buf, BUF_SIZE );
- if ( FirstChild() && FirstChild()->ToText() )
- FirstChild()->SetValue( buf );
- else {
- XMLText* theText = GetDocument()->NewText( buf );
- InsertFirstChild( theText );
- }
+ XMLUtil::ToStr( v, buf, BUF_SIZE );
+ SetText( buf );
}
-void XMLElement::SetText( unsigned inNum )
+void XMLElement::SetText( unsigned v )
{
char buf[BUF_SIZE];
- XMLUtil::ToStr( inNum, buf, BUF_SIZE );
- if ( FirstChild() && FirstChild()->ToText() )
- FirstChild()->SetValue( buf );
- else {
- XMLText* theText = GetDocument()->NewText( buf );
- InsertFirstChild( theText );
- }
+ XMLUtil::ToStr( v, buf, BUF_SIZE );
+ SetText( buf );
}
-void XMLElement::SetText( double inNum )
+void XMLElement::SetText( bool v )
{
char buf[BUF_SIZE];
- XMLUtil::ToStr( inNum, buf, BUF_SIZE );
- if ( FirstChild() && FirstChild()->ToText() )
- FirstChild()->SetValue( buf );
- else {
- XMLText* theText = GetDocument()->NewText( buf );
- InsertFirstChild( theText );
- }
+ XMLUtil::ToStr( v, buf, BUF_SIZE );
+ SetText( buf );
}
-void XMLElement::SetText( float inNum )
+void XMLElement::SetText( float v )
{
char buf[BUF_SIZE];
- XMLUtil::ToStr( inNum, buf, BUF_SIZE );
- if ( FirstChild() && FirstChild()->ToText() )
- FirstChild()->SetValue( buf );
- else {
- XMLText* theText = GetDocument()->NewText( buf );
- InsertFirstChild( theText );
- }
+ XMLUtil::ToStr( v, buf, BUF_SIZE );
+ SetText( buf );
}
-void XMLElement::SetText( long long inNum )
+
+void XMLElement::SetText( double v )
{
char buf[BUF_SIZE];
- XMLUtil::ToStr( inNum, buf, BUF_SIZE );
- if ( FirstChild() && FirstChild()->ToText() )
- FirstChild()->SetValue( buf );
- else {
- XMLText* theText = GetDocument()->NewText( buf );
- InsertFirstChild( theText );
- }
+ XMLUtil::ToStr( v, buf, BUF_SIZE );
+ SetText( buf );
}
-
void XMLElement::SetBoolFirstChild( bool inBool )
{
if( FirstChild() && FirstChild()->ToElement()
diff --git a/tinyxml2.h b/tinyxml2.h
index f1be6ca..f9269a1 100755
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -118,7 +118,7 @@
static const int TIXML2_MAJOR_VERSION = 1;
static const int TIXML2_MINOR_VERSION = 0;
-static const int TIXML2_PATCH_VERSION = 13;
+static const int TIXML2_PATCH_VERSION = 14;
namespace tinyxml2
{
@@ -1413,7 +1413,17 @@
<foo>Hullaballoo!</foo>
@endverbatim
*/
- void SetText( const char* inText );
+ void SetText( const char* inText );
+ /// Convenince method for setting text inside and element. See SetText() for important limitations.
+ void SetText( int value );
+ /// Convenince method for setting text inside and element. See SetText() for important limitations.
+ void SetText( unsigned value );
+ /// Convenince method for setting text inside and element. See SetText() for important limitations.
+ void SetText( bool value );
+ /// Convenince method for setting text inside and element. See SetText() for important limitations.
+ void SetText( double value );
+ /// Convenince method for setting text inside and element. See SetText() for important limitations.
+ void SetText( float value );
/// Sets the text to the given number.
void SetText( int inNum );
@@ -1547,6 +1557,7 @@
//void LinkAttribute( XMLAttribute* attrib );
char* ParseAttributes( char* p );
+ enum { BUF_SIZE = 200 };
int _closingType;
// The attribute list is ordered; there is no 'lastAttribute'
// because the list needs to be scanned for dupes before adding
diff --git a/xmltest.cpp b/xmltest.cpp
index 9fb021a..6fdc162 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -624,83 +624,51 @@
doc.Parse( str );
XMLElement* element = doc.RootElement();
- element->SetText("He kept turning his head to left and right, but I could not see anything through the darkness.");
- XMLTest( "SetText() normal use (open/close).", "He kept turning his head to left and right, but I could not see anything through the darkness.", element->GetText() );
+ element->SetText("darkness.");
+ XMLTest( "SetText() normal use (open/close).", "darkness.", element->GetText() );
- element->SetText("Suddenly, away on our left I saw a faint flickering blue flame.");
- XMLTest( "SetText() replace.", "Suddenly, away on our left I saw a faint flickering blue flame.", element->GetText() );
+ element->SetText("blue flame.");
+ XMLTest( "SetText() replace.", "blue flame.", element->GetText() );
str = "<foo/>";
doc.Parse( str );
element = doc.RootElement();
- element->SetText("The driver saw it at the same moment.");
- XMLTest( "SetText() normal use. (self-closing)", "The driver saw it at the same moment.", element->GetText() );
+ element->SetText("The driver");
+ XMLTest( "SetText() normal use. (self-closing)", "The driver", element->GetText() );
- element->SetText("<b>He at once checked the horses, and, jumping to the ground, disappeared into the darkness.</b>");
- XMLTest( "SetText() replace with tag-like text.", "<b>He at once checked the horses, and, jumping to the ground, disappeared into the darkness.</b>", element->GetText() );
+ element->SetText("<b>horses</b>");
+ XMLTest( "SetText() replace with tag-like text.", "<b>horses</b>", element->GetText() );
+ //doc.Print();
str = "<foo><bar>Text in nested element</bar></foo>";
doc.Parse( str );
element = doc.RootElement();
- element->SetText("I did not know what to do, the less as the howling of the wolves grew closer.");
- XMLTest( "SetText() prefix to nested non-text children.", "I did not know what to do, the less as the howling of the wolves grew closer.", element->GetText() );
- }
-
-
- // --------SetBoolFirstChild()-----------
- {
- const char* str = "<foo></foo>";
- XMLDocument doc;
- doc.Parse( str );
- XMLElement* element = doc.RootElement();
-
- element->SetBoolFirstChild(true);
- XMLTest( "SetBoolFirstChild() normal use (open/close).", "true", element->FirstChild()->ToElement()->Value() );
-
- element->SetBoolFirstChild(false);
- XMLTest( "SetBoolFirstChild() replace.", "false", element->FirstChild()->ToElement()->Value() );
+ element->SetText("wolves");
+ XMLTest( "SetText() prefix to nested non-text children.", "wolves", element->GetText() );
str = "<foo/>";
doc.Parse( str );
element = doc.RootElement();
-
- element->SetBoolFirstChild(false);
- XMLTest( "SetBoolFirstChild() normal use (self-closing).", "false", element->FirstChild()->ToElement()->Value() );
- }
-
-
- // --------BoolFirstChild()-----------
- {
- const char* str = "<foo><false /></foo>";
- XMLDocument doc;
- doc.Parse( str );
- XMLElement* element = doc.RootElement();
-
- XMLTest( "BoolFirstChild() normal use (open/close).", false, element->BoolFirstChild() );
-
- str = "<foo><true /></foo>";
- doc.Parse( str );
- element = doc.RootElement();
- XMLTest( "BoolFirstChild() normal use (open/close).", true, element->BoolFirstChild() );
-
- str = "<foo></foo>";
- doc.Parse( str );
- element = doc.RootElement();
- element->SetBoolFirstChild(true);
- XMLTest( "BoolFirstChild() after SetBoolFirstChild().", true, element->BoolFirstChild() );
+ element->SetText( "str" );
+ XMLTest( "SetText types", "str", element->GetText() );
- element->SetBoolFirstChild(false);
- XMLTest( "BoolFirstChild() after SetBoolFirstChild() replace.", false, element->BoolFirstChild() );
+ element->SetText( 1 );
+ XMLTest( "SetText types", "1", element->GetText() );
- str = "<foo/>";
- doc.Parse( str );
-
- element = doc.RootElement();
- element->SetBoolFirstChild(false);
- XMLTest( "BoolFirstChild() (self-closing) after SetBoolFirstChild() replace.", false, element->BoolFirstChild() );
+ element->SetText( 1U );
+ XMLTest( "SetText types", "1", element->GetText() );
+
+ element->SetText( true );
+ XMLTest( "SetText types", "1", element->GetText() ); // TODO: should be 'true'?
+
+ element->SetText( 1.5f );
+ XMLTest( "SetText types", "1.5", element->GetText() );
+
+ element->SetText( 1.5 );
+ XMLTest( "SetText types", "1.5", element->GetText() );
}