aboutsummaryrefslogtreecommitdiff
path: root/src/univalue/gen
diff options
context:
space:
mode:
authorJonas Schnelli <dev@jonasschnelli.ch>2015-10-01 10:37:19 +0200
committerJonas Schnelli <dev@jonasschnelli.ch>2015-10-01 10:37:19 +0200
commit6e16a41313dbc25d88def143cf1e0a964e36c7c0 (patch)
tree46da94414e5fa2e58ad15dda39152376afbad81e /src/univalue/gen
parent0917306fdf39b12556b95fe91be2e7b44d34bb9f (diff)
parent2f9f082b5ef3c495c70598ef23383effef675f9a (diff)
Merge commit '2f9f082b5ef3c495c70598ef23383effef675f9a' as 'src/univalue'
Diffstat (limited to 'src/univalue/gen')
-rw-r--r--src/univalue/gen/gen.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/univalue/gen/gen.cpp b/src/univalue/gen/gen.cpp
new file mode 100644
index 0000000000..5e5a4d4aed
--- /dev/null
+++ b/src/univalue/gen/gen.cpp
@@ -0,0 +1,77 @@
+// Copyright 2014 BitPay Inc.
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+//
+// To re-create univalue_escapes.h:
+// $ g++ -o gen gen.cpp
+// $ ./gen > univalue_escapes.h
+//
+
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+#include "univalue.h"
+
+using namespace std;
+
+static bool initEscapes;
+static const char *escapes[256];
+
+static void initJsonEscape()
+{
+ escapes[(int)'"'] = "\\\"";
+ escapes[(int)'\\'] = "\\\\";
+ escapes[(int)'\b'] = "\\b";
+ escapes[(int)'\f'] = "\\f";
+ escapes[(int)'\n'] = "\\n";
+ escapes[(int)'\r'] = "\\r";
+ escapes[(int)'\t'] = "\\t";
+
+ initEscapes = true;
+}
+
+static void outputEscape()
+{
+ printf( "// Automatically generated file. Do not modify.\n"
+ "#ifndef BITCOIN_UNIVALUE_UNIVALUE_ESCAPES_H\n"
+ "#define BITCOIN_UNIVALUE_UNIVALUE_ESCAPES_H\n"
+ "static const char *escapes[256] = {\n");
+
+ for (unsigned int i = 0; i < 256; i++) {
+ if (!escapes[i]) {
+ printf("\tNULL,\n");
+ } else {
+ printf("\t\"");
+
+ unsigned int si;
+ for (si = 0; si < strlen(escapes[i]); si++) {
+ char ch = escapes[i][si];
+ switch (ch) {
+ case '"':
+ printf("\\\"");
+ break;
+ case '\\':
+ printf("\\\\");
+ break;
+ default:
+ printf("%c", escapes[i][si]);
+ break;
+ }
+ }
+
+ printf("\",\n");
+ }
+ }
+
+ printf( "};\n"
+ "#endif // BITCOIN_UNIVALUE_UNIVALUE_ESCAPES_H\n");
+}
+
+int main (int argc, char *argv[])
+{
+ initJsonEscape();
+ outputEscape();
+ return 0;
+}
+