Преглед изворни кода

Keep indentation control fully inside the XMLPrinter. You'll have to subclass it to override its standard behaviour by overwriting CompactMode().

Uli Kusterer пре 12 година
родитељ
комит
5d1d27e88b
2 измењених фајлова са 6 додато и 6 уклоњено
  1. 4 3
      tinyxml2.cpp
  2. 2 3
      tinyxml2.h

+ 4 - 3
tinyxml2.cpp

@@ -1323,7 +1323,6 @@ void	XMLElement::SetBoolFirstChild( bool inBool )
 	else if( !FirstChild() ) {
 		theBoolElem = GetDocument()->NewElement( inBool ? "true" : "false" );
 		InsertFirstChild( theBoolElem );
-		SetForceCompactMode(true);
 	}
 }
 
@@ -2190,7 +2189,9 @@ bool XMLPrinter::VisitEnter( const XMLDocument& doc )
 
 bool XMLPrinter::VisitEnter( const XMLElement& element, const XMLAttribute* attribute )
 {
-    OpenElement( element.Name(), _compactMode ? true : element.Parent()->GetForceCompactMode() );
+	const XMLElement*	parentElem = element.Parent()->ToElement();
+	bool		compactMode = parentElem ? CompactMode(*parentElem) : _compactMode;
+    OpenElement( element.Name(), compactMode );
     while ( attribute ) {
         PushAttribute( attribute->Name(), attribute->Value() );
         attribute = attribute->Next();
@@ -2201,7 +2202,7 @@ bool XMLPrinter::VisitEnter( const XMLElement& element, const XMLAttribute* attr
 
 bool XMLPrinter::VisitExit( const XMLElement& element )
 {
-    CloseElement( _compactMode ? true : element.GetForceCompactMode() );
+    CloseElement( CompactMode(element) );
     return true;
 }
 

+ 2 - 3
tinyxml2.h

@@ -822,9 +822,6 @@ public:
     // internal
     virtual char* ParseDeep( char*, StrPair* );
 	
-	bool	GetForceCompactMode() const		{ if( _forceCompactMode || !Parent() ) return _forceCompactMode; return Parent()->GetForceCompactMode(); };
-	void	SetForceCompactMode( bool b )	{ _forceCompactMode = b; };
-
 protected:
     XMLNode( XMLDocument* );
     virtual ~XMLNode();
@@ -2079,6 +2076,8 @@ public:
     }
 
 protected:
+	virtual bool CompactMode( const XMLElement& elem )	{ return _compactMode; };
+
     void SealElement();
     bool _elementJustOpened;
     DynArray< const char*, 10 > _stack;