Avoid endless loop when indent is set to -1, cleanup code

This commit is contained in:
fbraem
2013-03-09 20:45:22 +01:00
parent 727e3cd28d
commit c6d53a0608
2 changed files with 25 additions and 49 deletions

View File

@@ -61,38 +61,29 @@ Element::Ptr Array::get(int pos) const
std::string Array::toString(int indent) const std::string Array::toString(int indent) const
{ {
std::ostringstream oss; std::ostringstream oss;
oss << "["; oss << "[";
if ( indent > 0 )
{ if ( indent > 0 ) oss << std::endl;
oss << std::endl;
}
for(ElementSet::const_iterator it = _elements.begin(); it != _elements.end(); ++it) for(ElementSet::const_iterator it = _elements.begin(); it != _elements.end(); ++it)
{ {
if ( it != _elements.begin() ) if ( it != _elements.begin() )
{ {
oss << ","; oss << ",";
if ( indent > 0 ) if ( indent > 0 ) oss << std::endl;
{
oss << std::endl;
}
} }
for(int i = 0; i < indent; ++i) for(int i = 0; i < indent; ++i) oss << ' ';
{
oss << ' ';
}
oss << (*it)->toString(); oss << (*it)->toString();
} }
if ( indent > 0 ) if ( indent > 0 )
{ {
oss << std::endl; oss << std::endl;
indent -= 2; if ( indent >= 2 ) indent -= 2;
for(int i = 0; i < indent; ++i) for(int i = 0; i < indent; ++i) oss << ' ';
{
oss << ' ';
}
} }
oss << "]"; oss << "]";

View File

@@ -151,51 +151,36 @@ std::string Document::toString(int indent) const
{ {
std::ostringstream oss; std::ostringstream oss;
oss << "{"; oss << '{';
if ( indent > 0 )
{ if ( indent > 0 ) oss << std::endl;
oss << std::endl;
}
for(ElementSet::const_iterator it = _elements.begin(); it != _elements.end(); ++it) for(ElementSet::const_iterator it = _elements.begin(); it != _elements.end(); ++it)
{ {
if ( it != _elements.begin() ) if ( it != _elements.begin() )
{ {
oss << ","; oss << ',';
if ( indent > 0 ) if ( indent > 0 ) oss << std::endl;
{
oss << std::endl;
}
}
if ( indent > 0 )
{
for(int i = 0; i < indent; ++i)
{
oss << ' ';
}
}
oss << '"' << (*it)->name() << '"' << " : ";
if ( indent > 0 )
{
oss << (*it)->toString(indent + 2);
}
else
{
oss << (*it)->toString();
} }
for(int i = 0; i < indent; ++i) oss << ' ';
oss << '"' << (*it)->name() << '"';
oss << (( indent > 0 ) ? " : " : ":");
oss << (*it)->toString(indent > 0 ? indent + 2 : 0);
} }
if ( indent > 0 ) if ( indent > 0 )
{ {
oss << std::endl; oss << std::endl;
indent -= 2; if ( indent >= 2 ) indent -= 2;
for(int i = 0; i < indent; ++i)
{ for(int i = 0; i < indent; ++i) oss << ' ';
oss << ' ';
}
} }
oss << "}"; oss << '}';
return oss.str(); return oss.str();
} }