Просмотр исходного кода

Merge branch 'master' of https://github.com/leethomason/tinyxml2

Conflicts:
	tinyxml2.cpp
	xmltest.cpp
Uli Kusterer 12 лет назад
Родитель
Сommit
2861a7e63a
5 измененных файлов с 55 добавлено и 101 удалено
  1. 1 1
      CMakeLists.txt
  2. 1 1
      dox
  3. 16 41
      tinyxml2.cpp
  4. 13 2
      tinyxml2.h
  5. 24 56
      xmltest.cpp

+ 1 - 1
CMakeLists.txt

@@ -10,7 +10,7 @@ include(GNUInstallDirs)
 ################################
 # set lib version here
 
-set(GENERIC_LIB_VERSION "1.0.13")
+set(GENERIC_LIB_VERSION "1.0.14")
 set(GENERIC_LIB_SOVERSION "1")
 
 

+ 1 - 1
dox

@@ -32,7 +32,7 @@ PROJECT_NAME           = "TinyXML-2"
 # 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

+ 16 - 41
tinyxml2.cpp

@@ -1293,71 +1293,46 @@ void	XMLElement::SetText( const char* inText )
 }
 
 
-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()

+ 13 - 2
tinyxml2.h

@@ -118,7 +118,7 @@ inline int TIXML_SNPRINTF( char* buffer, size_t size, const char* format, ... )
 
 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 @@ public:
     		<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 @@ private:
     //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

+ 24 - 56
xmltest.cpp

@@ -624,83 +624,51 @@ int main( int argc, const char ** argv )
 		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->SetText( "str" );
+		XMLTest( "SetText types", "str", element->GetText() );
 
-		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() );
+		element->SetText( 1 );
+		XMLTest( "SetText types", "1", element->GetText() );
 
-		str = "<foo><true /></foo>";
-		doc.Parse( str );
-		element = doc.RootElement();
-		XMLTest( "BoolFirstChild() normal use (open/close).", true, element->BoolFirstChild() );
+		element->SetText( 1U );
+		XMLTest( "SetText types", "1", element->GetText() );
 
-		str = "<foo></foo>";
-		doc.Parse( str );
-		element = doc.RootElement();
-		
-		element->SetBoolFirstChild(true);
-		XMLTest( "BoolFirstChild() after SetBoolFirstChild().", true, element->BoolFirstChild() );
+		element->SetText( true );
+		XMLTest( "SetText types", "1", element->GetText() ); // TODO: should be 'true'?
 
-		element->SetBoolFirstChild(false);
-		XMLTest( "BoolFirstChild() after SetBoolFirstChild() replace.", false, element->BoolFirstChild() );
+		element->SetText( 1.5f );
+		XMLTest( "SetText types", "1.5", 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( 1.5 );
+		XMLTest( "SetText types", "1.5", element->GetText() );
 	}