diff options
| author | qkrorlqr <[email protected]> | 2022-02-10 16:47:20 +0300 | 
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:47:20 +0300 | 
| commit | 9b89266638b10d40309e31dcb7caa2fc52b2aefd (patch) | |
| tree | aaf0d6ece270940a4f208e4202e4a37a15ce05b7 /library/cpp/json | |
| parent | 47af3b5bf148ddab250833ec454d30d7c4930c31 (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/json')
| -rw-r--r-- | library/cpp/json/easy_parse/json_easy_parser_impl.h | 4 | ||||
| -rw-r--r-- | library/cpp/json/json_reader.cpp | 182 | ||||
| -rw-r--r-- | library/cpp/json/json_reader.h | 4 | ||||
| -rw-r--r-- | library/cpp/json/rapidjson_helpers.cpp | 2 | ||||
| -rw-r--r-- | library/cpp/json/rapidjson_helpers.h | 198 | ||||
| -rw-r--r-- | library/cpp/json/ut/json_reader_ut.cpp | 26 | ||||
| -rw-r--r-- | library/cpp/json/ya.make | 4 | 
7 files changed, 210 insertions, 210 deletions
| diff --git a/library/cpp/json/easy_parse/json_easy_parser_impl.h b/library/cpp/json/easy_parse/json_easy_parser_impl.h index ec55d838b32..25016ec94a4 100644 --- a/library/cpp/json/easy_parse/json_easy_parser_impl.h +++ b/library/cpp/json/easy_parse/json_easy_parser_impl.h @@ -1,7 +1,7 @@  #pragma once -#include <util/generic/string.h> - +#include <util/generic/string.h>  +   namespace NJson {      namespace NImpl {          enum EType { diff --git a/library/cpp/json/json_reader.cpp b/library/cpp/json/json_reader.cpp index 072c8deafee..b50b591e24c 100644 --- a/library/cpp/json/json_reader.cpp +++ b/library/cpp/json/json_reader.cpp @@ -1,13 +1,13 @@  #include "json_reader.h" -#include "rapidjson_helpers.h" - +#include "rapidjson_helpers.h"  +   #include <contrib/libs/rapidjson/include/rapidjson/error/en.h>  #include <contrib/libs/rapidjson/include/rapidjson/error/error.h> -#include <contrib/libs/rapidjson/include/rapidjson/reader.h> +#include <contrib/libs/rapidjson/include/rapidjson/reader.h>  -#include <util/generic/stack.h> -#include <util/string/cast.h> +#include <util/generic/stack.h>  +#include <util/string/cast.h>   #include <util/system/yassert.h>  #include <util/string/builder.h> @@ -155,17 +155,17 @@ namespace NJson {      namespace {          struct TJsonValueBuilder { -#ifdef NDEBUG +#ifdef NDEBUG               using TItem = TJsonValue*; - +               inline TJsonValue& Access(TItem& item) const {                  return *item;              } -#else +#else               struct TItem {                  TJsonValue* V;                  size_t DuplicateKeyCount; - +                   TItem(TJsonValue* v)                      : V(v)                      , DuplicateKeyCount(0) @@ -175,19 +175,19 @@ namespace NJson {              inline TJsonValue& Access(TItem& item) const {                  return *item.V; -            } -#endif - +            }  +#endif  +               NJson::TJsonValue& V; - +               TStack<TItem> S; - +               TJsonValueBuilder(NJson::TJsonValue& v)                  : V(v)              {                  S.emplace(&V);              } - +               template <class T>              void Set(const T& t) {                  if (Access(S.top()).IsArray()) { @@ -196,23 +196,23 @@ namespace NJson {                      Access(S.top()) = t;                      S.pop();                  } -            } - +            }  +               bool Null() {                  Set(NJson::JSON_NULL);                  return true;              } - +               bool Bool(bool b) {                  Set(b);                  return true;              } - +               bool Int(int i) {                  Set(i);                  return true;              } - +               template <class U>              bool ProcessUint(U u) {                  if (Y_LIKELY(u <= static_cast<ui64>(Max<i64>()))) { @@ -221,26 +221,26 @@ namespace NJson {                      Set(u);                  }                  return true; -            } - +            }  +               bool Uint(unsigned u) {                  return ProcessUint(u);              } - +               bool Int64(i64 i) {                  Set(i);                  return true;              } - +               bool Uint64(ui64 u) {                  return ProcessUint(u);              } - +               bool Double(double d) {                  Set(d);                  return true;              } - +               bool RawNumber(const char* str, rapidjson::SizeType length, bool copy) {                  Y_ASSERT(false && "this method should never be called");                  Y_UNUSED(str); @@ -248,13 +248,13 @@ namespace NJson {                  Y_UNUSED(copy);                  return true;              } - +               bool String(const char* str, rapidjson::SizeType length, bool copy) {                  Y_ASSERT(copy);                  Set(TStringBuf(str, length));                  return true;              } - +               bool StartObject() {                  if (Access(S.top()).IsArray()) {                      S.emplace(&Access(S.top()).AppendValue(NJson::JSON_MAP)); @@ -262,35 +262,35 @@ namespace NJson {                      Access(S.top()).SetType(NJson::JSON_MAP);                  }                  return true; -            } - +            }  +               bool Key(const char* str, rapidjson::SizeType length, bool copy) {                  Y_ASSERT(copy);                  auto& value = Access(S.top())[TStringBuf(str, length)]; -                if (Y_UNLIKELY(value.GetType() != JSON_UNDEFINED)) { -#ifndef NDEBUG +                if (Y_UNLIKELY(value.GetType() != JSON_UNDEFINED)) {  +#ifndef NDEBUG                       ++S.top().DuplicateKeyCount; -#endif +#endif                       value.SetType(JSON_UNDEFINED);                  }                  S.emplace(&value);                  return true; -            } - +            }  +               inline int GetDuplicateKeyCount() const { -#ifdef NDEBUG +#ifdef NDEBUG                   return 0; -#else +#else                   return S.top().DuplicateKeyCount; -#endif +#endif               } - +               bool EndObject(rapidjson::SizeType memberCount) {                  Y_ASSERT(memberCount == Access(S.top()).GetMap().size() + GetDuplicateKeyCount());                  S.pop();                  return true;              } - +               bool StartArray() {                  if (Access(S.top()).IsArray()) {                      S.emplace(&Access(S.top()).AppendValue(NJson::JSON_ARRAY)); @@ -344,9 +344,9 @@ namespace NJson {                      return reader.Parse<rapidjson::kParseEscapedApostropheFlag>(is, handler);                  default:                      return reader.Parse<rapidjson::kParseNoFlags>(is, handler); -            } -        } - +            }  +        }  +           template <class TRapidJsonCompliantInputStream, class THandler>          bool ReadJson(TRapidJsonCompliantInputStream& is, const TJsonReaderConfig* config, THandler& handler, bool throwOnError) {              rapidjson::Reader reader; @@ -361,9 +361,9 @@ namespace NJson {                  }              } -            return true; -        } - +            return true;  +        }  +           template <class TRapidJsonCompliantInputStream>          bool ReadJsonTree(TRapidJsonCompliantInputStream& is, const TJsonReaderConfig* config, TJsonValue* out, bool throwOnError) {              out->SetType(NJson::JSON_NULL); @@ -371,57 +371,57 @@ namespace NJson {              TJsonValueBuilder handler(*out);              return ReadJson(is, config, handler, throwOnError); -        } - +        }  +           template <class TData>          bool ReadJsonTreeImpl(TData* in, const TJsonReaderConfig* config, TJsonValue* out, bool throwOnError) {              std::conditional_t<std::is_same<TData, TStringBuf>::value, TStringBufStreamWrapper, TInputStreamWrapper> is(*in);              return ReadJsonTree(is, config, out, throwOnError);          } - +           template <class TData>          bool ReadJsonTreeImpl(TData* in, bool allowComments, TJsonValue* out, bool throwOnError) {              TJsonReaderConfig config;              config.AllowComments = allowComments;              return ReadJsonTreeImpl(in, &config, out, throwOnError);          } - +           template <class TData>          bool ReadJsonTreeImpl(TData* in, TJsonValue* out, bool throwOnError) {              return ReadJsonTreeImpl(in, false, out, throwOnError); -        } +        }       } //namespace - +       bool ReadJsonTree(TStringBuf in, TJsonValue* out, bool throwOnError) {          return ReadJsonTreeImpl(&in, out, throwOnError); -    } - +    }  +       bool ReadJsonTree(TStringBuf in, bool allowComments, TJsonValue* out, bool throwOnError) {          return ReadJsonTreeImpl(&in, allowComments, out, throwOnError);      } - +       bool ReadJsonTree(TStringBuf in, const TJsonReaderConfig* config, TJsonValue* out, bool throwOnError) {          return ReadJsonTreeImpl(&in, config, out, throwOnError); -    } - +    }  +       bool ReadJsonTree(IInputStream* in, TJsonValue* out, bool throwOnError) {          return ReadJsonTreeImpl(in, out, throwOnError); -    } - +    }  +       bool ReadJsonTree(IInputStream* in, bool allowComments, TJsonValue* out, bool throwOnError) {          return ReadJsonTreeImpl(in, allowComments, out, throwOnError); -    } - +    }  +       bool ReadJsonTree(IInputStream* in, const TJsonReaderConfig* config, TJsonValue* out, bool throwOnError) {          return ReadJsonTreeImpl(in, config, out, throwOnError); -    } - +    }  +       bool ReadJsonFastTree(TStringBuf in, TJsonValue* out, bool throwOnError, bool notClosedBracketIsError) {          TParserCallbacks cb(*out, throwOnError, notClosedBracketIsError); - +           return ReadJsonFast(in, &cb);      } - +       TJsonValue ReadJsonFastTree(TStringBuf in, bool notClosedBracketIsError) {          TJsonValue value;          // There is no way to report an error apart from throwing an exception when we return result by value. @@ -432,7 +432,7 @@ namespace NJson {      namespace {          struct TJsonCallbacksWrapper {              TJsonCallbacks& Impl; - +               TJsonCallbacksWrapper(TJsonCallbacks& impl)                  : Impl(impl)              { @@ -462,67 +462,67 @@ namespace NJson {              bool Uint(unsigned u) {                  return ProcessUint(u);              } - +               bool Int64(i64 i) {                  return Impl.OnInteger(i);              } - +               bool Uint64(ui64 u) {                  return ProcessUint(u);              } - +               bool Double(double d) {                  return Impl.OnDouble(d);              } - +               bool RawNumber(const char* str, rapidjson::SizeType length, bool copy) {                  Y_ASSERT(false && "this method should never be called");                  Y_UNUSED(str);                  Y_UNUSED(length);                  Y_UNUSED(copy);                  return true; -            } - +            }  +               bool String(const char* str, rapidjson::SizeType length, bool copy) {                  Y_ASSERT(copy);                  return Impl.OnString(TStringBuf(str, length));              } - +               bool StartObject() {                  return Impl.OnOpenMap();              } - +               bool Key(const char* str, rapidjson::SizeType length, bool copy) {                  Y_ASSERT(copy);                  return Impl.OnMapKey(TStringBuf(str, length));              } - +               bool EndObject(rapidjson::SizeType memberCount) {                  Y_UNUSED(memberCount);                  return Impl.OnCloseMap();              } - +               bool StartArray() {                  return Impl.OnOpenArray();              } - +               bool EndArray(rapidjson::SizeType elementCount) {                  Y_UNUSED(elementCount);                  return Impl.OnCloseArray();              }          };      } - +       bool ReadJson(IInputStream* in, TJsonCallbacks* cbs) {          return ReadJson(in, false, cbs);      } - +       bool ReadJson(IInputStream* in, bool allowComments, TJsonCallbacks* cbs) {          TJsonReaderConfig config;          config.AllowComments = allowComments;          return ReadJson(in, &config, cbs);      } - +       bool ReadJson(IInputStream* in, bool allowComments, bool allowEscapedApostrophe, TJsonCallbacks* cbs) {          TJsonReaderConfig config;          config.AllowComments = allowComments; @@ -533,35 +533,35 @@ namespace NJson {      bool ReadJson(IInputStream* in, const TJsonReaderConfig* config, TJsonCallbacks* cbs) {          TJsonCallbacksWrapper wrapper(*cbs);          TInputStreamWrapper is(*in); - +           rapidjson::Reader reader;          auto result = Read(*config, reader, is, wrapper); - +           if (result.IsError()) {              cbs->OnError(result.Offset(), PrintError(result)); - +               return false; -        } - +        }  +           return cbs->OnEnd();      } - +       TJsonValue ReadJsonTree(IInputStream* in, bool throwOnError) {          TJsonValue out;          ReadJsonTree(in, &out, throwOnError);          return out;      } - +       TJsonValue ReadJsonTree(IInputStream* in, bool allowComments, bool throwOnError) {          TJsonValue out;          ReadJsonTree(in, allowComments, &out, throwOnError);          return out;      } - +       TJsonValue ReadJsonTree(IInputStream* in, const TJsonReaderConfig* config, bool throwOnError) {          TJsonValue out;          ReadJsonTree(in, config, &out, throwOnError);          return out; -    } - -} +    }  +  +}  diff --git a/library/cpp/json/json_reader.h b/library/cpp/json/json_reader.h index b6737883306..437bf18bad9 100644 --- a/library/cpp/json/json_reader.h +++ b/library/cpp/json/json_reader.h @@ -64,12 +64,12 @@ namespace NJson {          TJsonCallbacks c(throwOnError);          return ReadJson(in, config, &c);      } - +       inline bool ValidateJson(TStringBuf in, const TJsonReaderConfig& config = TJsonReaderConfig(), bool throwOnError = false) {          TMemoryInput min(in.data(), in.size());          return ValidateJson(&min, &config, throwOnError);      } - +       inline bool ValidateJsonThrow(IInputStream* in, const TJsonReaderConfig* config) {          return ValidateJson(in, config, true);      } diff --git a/library/cpp/json/rapidjson_helpers.cpp b/library/cpp/json/rapidjson_helpers.cpp index 2e8159a1038..9f42b55b759 100644 --- a/library/cpp/json/rapidjson_helpers.cpp +++ b/library/cpp/json/rapidjson_helpers.cpp @@ -1 +1 @@ -#include "rapidjson_helpers.h" +#include "rapidjson_helpers.h"  diff --git a/library/cpp/json/rapidjson_helpers.h b/library/cpp/json/rapidjson_helpers.h index aeb96ff6703..314623425e8 100644 --- a/library/cpp/json/rapidjson_helpers.h +++ b/library/cpp/json/rapidjson_helpers.h @@ -1,104 +1,104 @@ -#pragma once - -#include <util/generic/strbuf.h> -#include <util/stream/input.h> - -namespace NJson { -    struct TReadOnlyStreamBase { -        using Ch = char; - -        Ch* PutBegin() { -            Y_ASSERT(false); -            return nullptr; -        } - -        void Put(Ch) { -            Y_ASSERT(false); -        } - -        void Flush() { -            Y_ASSERT(false); -        } - -        size_t PutEnd(Ch*) { -            Y_ASSERT(false); -            return 0; -        } -    }; - +#pragma once  +  +#include <util/generic/strbuf.h>  +#include <util/stream/input.h>  +  +namespace NJson {  +    struct TReadOnlyStreamBase {  +        using Ch = char;  +  +        Ch* PutBegin() {  +            Y_ASSERT(false);  +            return nullptr;  +        }  +  +        void Put(Ch) {  +            Y_ASSERT(false);  +        }  +  +        void Flush() {  +            Y_ASSERT(false);  +        }  +  +        size_t PutEnd(Ch*) {  +            Y_ASSERT(false);  +            return 0;  +        }  +    };  +       struct TInputStreamWrapper : TReadOnlyStreamBase { -        Ch Peek() const { -            if (!Eof) { -                if (Pos >= Sz) { -                    if (Sz < BUF_SIZE) { -                        Sz += Helper.Read(Buf + Sz, BUF_SIZE - Sz); -                    } else { -                        Sz = Helper.Read(Buf, BUF_SIZE); -                        Pos = 0; -                    } -                } - -                if (Pos < Sz) { -                    return Buf[Pos]; -                } -            } - -            Eof = true; -            return 0; -        } - -        Ch Take() { -            auto c = Peek(); -            ++Pos; -            ++Count; -            return c; -        } - -        size_t Tell() const { -            return Count; -        } - +        Ch Peek() const {  +            if (!Eof) {  +                if (Pos >= Sz) {  +                    if (Sz < BUF_SIZE) {  +                        Sz += Helper.Read(Buf + Sz, BUF_SIZE - Sz);  +                    } else {  +                        Sz = Helper.Read(Buf, BUF_SIZE);  +                        Pos = 0;  +                    }  +                }  +  +                if (Pos < Sz) {  +                    return Buf[Pos];  +                }  +            }  +  +            Eof = true;  +            return 0;  +        }  +  +        Ch Take() {  +            auto c = Peek();  +            ++Pos;  +            ++Count;  +            return c;  +        }  +  +        size_t Tell() const {  +            return Count;  +        }  +           TInputStreamWrapper(IInputStream& helper) -            : Helper(helper) -            , Eof(false) -            , Sz(0) -            , Pos(0) -            , Count(0) -        { -        } - -        static const size_t BUF_SIZE = 1 << 12; - +            : Helper(helper)  +            , Eof(false)  +            , Sz(0)  +            , Pos(0)  +            , Count(0)  +        {  +        }  +  +        static const size_t BUF_SIZE = 1 << 12;  +           IInputStream& Helper; -        mutable char Buf[BUF_SIZE]; -        mutable bool Eof; -        mutable size_t Sz; -        mutable size_t Pos; -        size_t Count; -    }; - +        mutable char Buf[BUF_SIZE];  +        mutable bool Eof;  +        mutable size_t Sz;  +        mutable size_t Pos;  +        size_t Count;  +    };  +       struct TStringBufStreamWrapper : TReadOnlyStreamBase { -        Ch Peek() const { +        Ch Peek() const {               return Pos < Data.size() ? Data[Pos] : 0; -        } - -        Ch Take() { -            auto c = Peek(); -            ++Pos; -            return c; -        } - -        size_t Tell() const { -            return Pos; -        } - -        TStringBufStreamWrapper(TStringBuf data) -            : Data(data) -            , Pos(0) -        { -        } - -        TStringBuf Data; -        size_t Pos; -    }; -} +        }  +  +        Ch Take() {  +            auto c = Peek();  +            ++Pos;  +            return c;  +        }  +  +        size_t Tell() const {  +            return Pos;  +        }  +  +        TStringBufStreamWrapper(TStringBuf data)  +            : Data(data)  +            , Pos(0)  +        {  +        }  +  +        TStringBuf Data;  +        size_t Pos;  +    };  +}  diff --git a/library/cpp/json/ut/json_reader_ut.cpp b/library/cpp/json/ut/json_reader_ut.cpp index cd31afa0b8b..48bd0b9bbf2 100644 --- a/library/cpp/json/ut/json_reader_ut.cpp +++ b/library/cpp/json/ut/json_reader_ut.cpp @@ -383,19 +383,19 @@ Y_UNIT_TEST_SUITE(TJsonReaderTest) {          } catch (...) {          }      } // TJsonMemoryLeakTest - -    Y_UNIT_TEST(TJsonDuplicateKeysWithNullValuesTest) { -        const TString json = "{\"\":null,\"\":\"\"}"; - -        TStringInput in(json); -        NJson::TJsonValue v; -        UNIT_ASSERT(ReadJsonTree(&in, &v)); -        UNIT_ASSERT(v.IsMap()); -        UNIT_ASSERT_VALUES_EQUAL(1, v.GetMap().size()); -        UNIT_ASSERT_VALUES_EQUAL("", v.GetMap().begin()->first); -        UNIT_ASSERT(v.GetMap().begin()->second.IsString()); -        UNIT_ASSERT_VALUES_EQUAL("", v.GetMap().begin()->second.GetString()); -    } +  +    Y_UNIT_TEST(TJsonDuplicateKeysWithNullValuesTest) {  +        const TString json = "{\"\":null,\"\":\"\"}";  +  +        TStringInput in(json);  +        NJson::TJsonValue v;  +        UNIT_ASSERT(ReadJsonTree(&in, &v));  +        UNIT_ASSERT(v.IsMap());  +        UNIT_ASSERT_VALUES_EQUAL(1, v.GetMap().size());  +        UNIT_ASSERT_VALUES_EQUAL("", v.GetMap().begin()->first);  +        UNIT_ASSERT(v.GetMap().begin()->second.IsString());  +        UNIT_ASSERT_VALUES_EQUAL("", v.GetMap().begin()->second.GetString());  +    }   } diff --git a/library/cpp/json/ya.make b/library/cpp/json/ya.make index d58eead8ec4..04fecc54106 100644 --- a/library/cpp/json/ya.make +++ b/library/cpp/json/ya.make @@ -9,11 +9,11 @@ SRCS(      json_writer.cpp      json_reader.cpp      json_prettifier.cpp -    rapidjson_helpers.cpp +    rapidjson_helpers.cpp   )  PEERDIR( -    contrib/libs/rapidjson +    contrib/libs/rapidjson       library/cpp/json/common      library/cpp/json/fast_sax      library/cpp/json/writer | 
