aboutsummaryrefslogtreecommitdiff
path: root/src/univalue/gen/gen.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2015-10-01 16:23:59 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2015-10-01 16:36:15 +0200
commitf297042cae572753e6c25d25caf92091e88b76df (patch)
tree59a0827f7d3500f1b145e4f5653f1f8b94c1e037 /src/univalue/gen/gen.cpp
parent17d0e638b66b9dd51370335c9b0a7039de3f81fa (diff)
parent95acf3cc6d90d9406030ce897efdee8be0550a53 (diff)
downloadbitcoin-f297042cae572753e6c25d25caf92091e88b76df.tar.xz
Merge pull request #6637
95acf3c remove $(@F) and subdirs from univalue make (Jonas Schnelli) 9623e93 [Univalue] add univalue over subtree (Jonas Schnelli) 2f9f082 Squashed 'src/univalue/' content from commit 87d9045 (Jonas Schnelli) 0917306 remove univalue, prepare for subtree (Jonas Schnelli)
Diffstat (limited to 'src/univalue/gen/gen.cpp')
-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;
+}
+