diff options
Diffstat (limited to 'src/univalue/univalue_write.cpp')
-rw-r--r-- | src/univalue/univalue_write.cpp | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/src/univalue/univalue_write.cpp b/src/univalue/univalue_write.cpp deleted file mode 100644 index bce3997af7..0000000000 --- a/src/univalue/univalue_write.cpp +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2014 BitPay Inc. -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include <ctype.h> -#include <iomanip> -#include <sstream> -#include <stdio.h> -#include "univalue.h" -#include "univalue_escapes.h" - -// TODO: Using UTF8 - -using namespace std; - -static string json_escape(const string& inS) -{ - string outS; - outS.reserve(inS.size() * 2); - - for (unsigned int i = 0; i < inS.size(); i++) { - unsigned char ch = inS[i]; - const char *escStr = escapes[ch]; - - if (escStr) - outS += escStr; - - else if (isprint(ch)) - outS += ch; - - else { - char tmpesc[16]; - sprintf(tmpesc, "\\u%04x", ch); - outS += tmpesc; - } - } - - return outS; -} - -string UniValue::write(unsigned int prettyIndent, - unsigned int indentLevel) const -{ - string s; - s.reserve(1024); - - unsigned int modIndent = indentLevel; - if (modIndent == 0) - modIndent = 1; - - switch (typ) { - case VNULL: - s += "null"; - break; - case VOBJ: - writeObject(prettyIndent, modIndent, s); - break; - case VARR: - writeArray(prettyIndent, modIndent, s); - break; - case VSTR: - s += "\"" + json_escape(val) + "\""; - break; - case VNUM: - s += val; - break; - case VBOOL: - s += (val == "1" ? "true" : "false"); - break; - } - - return s; -} - -static void indentStr(unsigned int prettyIndent, unsigned int indentLevel, string& s) -{ - s.append(prettyIndent * indentLevel, ' '); -} - -void UniValue::writeArray(unsigned int prettyIndent, unsigned int indentLevel, string& s) const -{ - s += "["; - if (prettyIndent) - s += "\n"; - - for (unsigned int i = 0; i < values.size(); i++) { - if (prettyIndent) - indentStr(prettyIndent, indentLevel, s); - s += values[i].write(prettyIndent, indentLevel + 1); - if (i != (values.size() - 1)) { - s += ","; - if (prettyIndent) - s += " "; - } - if (prettyIndent) - s += "\n"; - } - - if (prettyIndent) - indentStr(prettyIndent, indentLevel - 1, s); - s += "]"; -} - -void UniValue::writeObject(unsigned int prettyIndent, unsigned int indentLevel, string& s) const -{ - s += "{"; - if (prettyIndent) - s += "\n"; - - for (unsigned int i = 0; i < keys.size(); i++) { - if (prettyIndent) - indentStr(prettyIndent, indentLevel, s); - s += "\"" + json_escape(keys[i]) + "\":"; - if (prettyIndent) - s += " "; - s += values[i].write(prettyIndent, indentLevel + 1); - if (i != (values.size() - 1)) - s += ","; - if (prettyIndent) - s += "\n"; - } - - if (prettyIndent) - indentStr(prettyIndent, indentLevel - 1, s); - s += "}"; -} - |