improved printing of bencoded structures
This commit is contained in:
@@ -401,8 +401,14 @@ namespace libtorrent
|
|||||||
}
|
}
|
||||||
#endif // TORRENT_USE_IOSTREAM
|
#endif // TORRENT_USE_IOSTREAM
|
||||||
|
|
||||||
std::string print_entry(lazy_entry const& e, bool single_line)
|
std::string print_entry(lazy_entry const& e, bool single_line, int indent)
|
||||||
{
|
{
|
||||||
|
char indent_str[200];
|
||||||
|
memset(indent_str, ' ', 200);
|
||||||
|
indent_str[0] = ',';
|
||||||
|
indent_str[1] = '\n';
|
||||||
|
indent_str[199] = 0;
|
||||||
|
if (indent < 197 && indent >= 0) indent_str[indent+2] = 0;
|
||||||
std::string ret;
|
std::string ret;
|
||||||
switch (e.type())
|
switch (e.type())
|
||||||
{
|
{
|
||||||
@@ -452,13 +458,13 @@ namespace libtorrent
|
|||||||
&& e.list_size() < 5))
|
&& e.list_size() < 5))
|
||||||
|| single_line;
|
|| single_line;
|
||||||
|
|
||||||
if (!one_liner) ret += "\n";
|
if (!one_liner) ret += indent_str + 1;
|
||||||
for (int i = 0; i < e.list_size(); ++i)
|
for (int i = 0; i < e.list_size(); ++i)
|
||||||
{
|
{
|
||||||
if (i == 0 && one_liner) ret += " ";
|
if (i == 0 && one_liner) ret += " ";
|
||||||
ret += print_entry(*e.list_at(i), single_line);
|
ret += print_entry(*e.list_at(i), single_line, indent + 2);
|
||||||
if (i < e.list_size() - 1) ret += (one_liner?", ":",\n");
|
if (i < e.list_size() - 1) ret += (one_liner?", ":indent_str);
|
||||||
else ret += (one_liner?" ":"\n");
|
else ret += (one_liner?" ":indent_str+1);
|
||||||
}
|
}
|
||||||
ret += "]";
|
ret += "]";
|
||||||
return ret;
|
return ret;
|
||||||
@@ -474,7 +480,7 @@ namespace libtorrent
|
|||||||
&& e.dict_size() < 5)
|
&& e.dict_size() < 5)
|
||||||
|| single_line;
|
|| single_line;
|
||||||
|
|
||||||
if (!one_liner) ret += "\n";
|
if (!one_liner) ret += indent_str+1;
|
||||||
for (int i = 0; i < e.dict_size(); ++i)
|
for (int i = 0; i < e.dict_size(); ++i)
|
||||||
{
|
{
|
||||||
if (i == 0 && one_liner) ret += " ";
|
if (i == 0 && one_liner) ret += " ";
|
||||||
@@ -482,9 +488,9 @@ namespace libtorrent
|
|||||||
ret += "'";
|
ret += "'";
|
||||||
ret += ent.first;
|
ret += ent.first;
|
||||||
ret += "': ";
|
ret += "': ";
|
||||||
ret += print_entry(*ent.second, single_line);
|
ret += print_entry(*ent.second, single_line, indent + 2);
|
||||||
if (i < e.dict_size() - 1) ret += (one_liner?", ":",\n");
|
if (i < e.dict_size() - 1) ret += (one_liner?", ":indent_str);
|
||||||
else ret += (one_liner?" ":"\n");
|
else ret += (one_liner?" ":indent_str+1);
|
||||||
}
|
}
|
||||||
ret += "}";
|
ret += "}";
|
||||||
return ret;
|
return ret;
|
||||||
|
Reference in New Issue
Block a user