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::ostringstream oss;
oss << "[";
if ( indent > 0 )
{
oss << std::endl;
}
if ( indent > 0 ) oss << std::endl;
for(ElementSet::const_iterator it = _elements.begin(); it != _elements.end(); ++it)
{
if ( it != _elements.begin() )
{
oss << ",";
if ( indent > 0 )
{
oss << std::endl;
}
if ( indent > 0 ) oss << std::endl;
}
for(int i = 0; i < indent; ++i)
{
oss << ' ';
}
for(int i = 0; i < indent; ++i) oss << ' ';
oss << (*it)->toString();
}
if ( indent > 0 )
{
oss << std::endl;
indent -= 2;
for(int i = 0; i < indent; ++i)
{
oss << ' ';
}
if ( indent >= 2 ) indent -= 2;
for(int i = 0; i < indent; ++i) oss << ' ';
}
oss << "]";

View File

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