aboutsummaryrefslogtreecommitdiff
path: root/src/univalue/lib
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2022-06-11 14:29:09 +0100
committerfanquake <fanquake@gmail.com>2022-06-15 12:56:44 +0100
commitd873ff96e51a3e7f2fdc3fdd1baee2bbe7583e06 (patch)
treed75c5d34033c6c709985a4697053a31def926533 /src/univalue/lib
parente2aa7047f9b94232ff4958381321e6867d24b379 (diff)
refactor: cleanups post unsubtree'ing univalue
Mostly changes to remove src/univalue exceptions from the various linters, and the required code changes to make them happy. As well as minor doc changes.
Diffstat (limited to 'src/univalue/lib')
-rw-r--r--src/univalue/lib/univalue_escapes.h262
-rw-r--r--src/univalue/lib/univalue_read.cpp2
-rw-r--r--src/univalue/lib/univalue_utffilter.h119
-rw-r--r--src/univalue/lib/univalue_write.cpp2
4 files changed, 2 insertions, 383 deletions
diff --git a/src/univalue/lib/univalue_escapes.h b/src/univalue/lib/univalue_escapes.h
deleted file mode 100644
index 3f714f8e5b..0000000000
--- a/src/univalue/lib/univalue_escapes.h
+++ /dev/null
@@ -1,262 +0,0 @@
-// Automatically generated file. Do not modify.
-#ifndef BITCOIN_UNIVALUE_UNIVALUE_ESCAPES_H
-#define BITCOIN_UNIVALUE_UNIVALUE_ESCAPES_H
-static const char *escapes[256] = {
- "\\u0000",
- "\\u0001",
- "\\u0002",
- "\\u0003",
- "\\u0004",
- "\\u0005",
- "\\u0006",
- "\\u0007",
- "\\b",
- "\\t",
- "\\n",
- "\\u000b",
- "\\f",
- "\\r",
- "\\u000e",
- "\\u000f",
- "\\u0010",
- "\\u0011",
- "\\u0012",
- "\\u0013",
- "\\u0014",
- "\\u0015",
- "\\u0016",
- "\\u0017",
- "\\u0018",
- "\\u0019",
- "\\u001a",
- "\\u001b",
- "\\u001c",
- "\\u001d",
- "\\u001e",
- "\\u001f",
- nullptr,
- nullptr,
- "\\\"",
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- "\\\\",
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- "\\u007f",
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
-};
-#endif // BITCOIN_UNIVALUE_UNIVALUE_ESCAPES_H
diff --git a/src/univalue/lib/univalue_read.cpp b/src/univalue/lib/univalue_read.cpp
index a6ed75e57a..2f2385383c 100644
--- a/src/univalue/lib/univalue_read.cpp
+++ b/src/univalue/lib/univalue_read.cpp
@@ -3,7 +3,7 @@
// file COPYING or https://opensource.org/licenses/mit-license.php.
#include <univalue.h>
-#include "univalue_utffilter.h"
+#include <univalue_utffilter.h>
#include <cstdio>
#include <cstdint>
diff --git a/src/univalue/lib/univalue_utffilter.h b/src/univalue/lib/univalue_utffilter.h
deleted file mode 100644
index c24ac58eaf..0000000000
--- a/src/univalue/lib/univalue_utffilter.h
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2016 Wladimir J. van der Laan
-// Distributed under the MIT software license, see the accompanying
-// file COPYING or https://opensource.org/licenses/mit-license.php.
-#ifndef UNIVALUE_UTFFILTER_H
-#define UNIVALUE_UTFFILTER_H
-
-#include <string>
-
-/**
- * Filter that generates and validates UTF-8, as well as collates UTF-16
- * surrogate pairs as specified in RFC4627.
- */
-class JSONUTF8StringFilter
-{
-public:
- explicit JSONUTF8StringFilter(std::string &s):
- str(s), is_valid(true), codepoint(0), state(0), surpair(0)
- {
- }
- // Write single 8-bit char (may be part of UTF-8 sequence)
- void push_back(unsigned char ch)
- {
- if (state == 0) {
- if (ch < 0x80) // 7-bit ASCII, fast direct pass-through
- str.push_back(ch);
- else if (ch < 0xc0) // Mid-sequence character, invalid in this state
- is_valid = false;
- else if (ch < 0xe0) { // Start of 2-byte sequence
- codepoint = (ch & 0x1f) << 6;
- state = 6;
- } else if (ch < 0xf0) { // Start of 3-byte sequence
- codepoint = (ch & 0x0f) << 12;
- state = 12;
- } else if (ch < 0xf8) { // Start of 4-byte sequence
- codepoint = (ch & 0x07) << 18;
- state = 18;
- } else // Reserved, invalid
- is_valid = false;
- } else {
- if ((ch & 0xc0) != 0x80) // Not a continuation, invalid
- is_valid = false;
- state -= 6;
- codepoint |= (ch & 0x3f) << state;
- if (state == 0)
- push_back_u(codepoint);
- }
- }
- // Write codepoint directly, possibly collating surrogate pairs
- void push_back_u(unsigned int codepoint_)
- {
- if (state) // Only accept full codepoints in open state
- is_valid = false;
- if (codepoint_ >= 0xD800 && codepoint_ < 0xDC00) { // First half of surrogate pair
- if (surpair) // Two subsequent surrogate pair openers - fail
- is_valid = false;
- else
- surpair = codepoint_;
- } else if (codepoint_ >= 0xDC00 && codepoint_ < 0xE000) { // Second half of surrogate pair
- if (surpair) { // Open surrogate pair, expect second half
- // Compute code point from UTF-16 surrogate pair
- append_codepoint(0x10000 | ((surpair - 0xD800)<<10) | (codepoint_ - 0xDC00));
- surpair = 0;
- } else // Second half doesn't follow a first half - fail
- is_valid = false;
- } else {
- if (surpair) // First half of surrogate pair not followed by second - fail
- is_valid = false;
- else
- append_codepoint(codepoint_);
- }
- }
- // Check that we're in a state where the string can be ended
- // No open sequences, no open surrogate pairs, etc
- bool finalize()
- {
- if (state || surpair)
- is_valid = false;
- return is_valid;
- }
-private:
- std::string &str;
- bool is_valid;
- // Current UTF-8 decoding state
- unsigned int codepoint;
- int state; // Top bit to be filled in for next UTF-8 byte, or 0
-
- // Keep track of the following state to handle the following section of
- // RFC4627:
- //
- // To escape an extended character that is not in the Basic Multilingual
- // Plane, the character is represented as a twelve-character sequence,
- // encoding the UTF-16 surrogate pair. So, for example, a string
- // containing only the G clef character (U+1D11E) may be represented as
- // "\uD834\uDD1E".
- //
- // Two subsequent \u.... may have to be replaced with one actual codepoint.
- unsigned int surpair; // First half of open UTF-16 surrogate pair, or 0
-
- void append_codepoint(unsigned int codepoint_)
- {
- if (codepoint_ <= 0x7f)
- str.push_back((char)codepoint_);
- else if (codepoint_ <= 0x7FF) {
- str.push_back((char)(0xC0 | (codepoint_ >> 6)));
- str.push_back((char)(0x80 | (codepoint_ & 0x3F)));
- } else if (codepoint_ <= 0xFFFF) {
- str.push_back((char)(0xE0 | (codepoint_ >> 12)));
- str.push_back((char)(0x80 | ((codepoint_ >> 6) & 0x3F)));
- str.push_back((char)(0x80 | (codepoint_ & 0x3F)));
- } else if (codepoint_ <= 0x1FFFFF) {
- str.push_back((char)(0xF0 | (codepoint_ >> 18)));
- str.push_back((char)(0x80 | ((codepoint_ >> 12) & 0x3F)));
- str.push_back((char)(0x80 | ((codepoint_ >> 6) & 0x3F)));
- str.push_back((char)(0x80 | (codepoint_ & 0x3F)));
- }
- }
-};
-
-#endif
diff --git a/src/univalue/lib/univalue_write.cpp b/src/univalue/lib/univalue_write.cpp
index 18833077b7..4a3cbba20f 100644
--- a/src/univalue/lib/univalue_write.cpp
+++ b/src/univalue/lib/univalue_write.cpp
@@ -3,7 +3,7 @@
// file COPYING or https://opensource.org/licenses/mit-license.php.
#include <univalue.h>
-#include "univalue_escapes.h"
+#include <univalue_escapes.h>
#include <memory>
#include <string>