diff options
author | fanquake <fanquake@gmail.com> | 2022-06-11 14:29:09 +0100 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2022-06-15 12:56:44 +0100 |
commit | d873ff96e51a3e7f2fdc3fdd1baee2bbe7583e06 (patch) | |
tree | d75c5d34033c6c709985a4697053a31def926533 /src/univalue/lib | |
parent | e2aa7047f9b94232ff4958381321e6867d24b379 (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.h | 262 | ||||
-rw-r--r-- | src/univalue/lib/univalue_read.cpp | 2 | ||||
-rw-r--r-- | src/univalue/lib/univalue_utffilter.h | 119 | ||||
-rw-r--r-- | src/univalue/lib/univalue_write.cpp | 2 |
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> |