Merge pull request #121 from fbraem/develop

MongoDB: Avoid endless loop when indent is set to 1, cleanup code
This commit is contained in:
Aleksandar Fabijanic 2013-03-09 15:09:21 -08:00
Родитель 727e3cd28d c6d53a0608
Коммит b915a4c4ec
2 изменённых файлов: 25 добавлений и 49 удалений

Просмотреть файл

@ -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 << "]";

Просмотреть файл

@ -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();
} }