diff options
author | Ivan Korostelev <ivan.korostelev@gmail.com> | 2022-02-10 16:46:41 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:46:41 +0300 |
commit | f3a52f9d3e18d1159abbc85fa65eeda69d971657 (patch) | |
tree | 203885df8c9af6c414a9ec107514b91912970ab9 /library/cpp/json | |
parent | 99609724f661f7e21d1cb08e8d80e87c3632fdb3 (diff) | |
download | ydb-f3a52f9d3e18d1159abbc85fa65eeda69d971657.tar.gz |
Restoring authorship annotation for Ivan Korostelev <ivan.korostelev@gmail.com>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/json')
-rw-r--r-- | library/cpp/json/domscheme_traits.h | 344 |
1 files changed, 172 insertions, 172 deletions
diff --git a/library/cpp/json/domscheme_traits.h b/library/cpp/json/domscheme_traits.h index a5a99cd8cf..5d6077f270 100644 --- a/library/cpp/json/domscheme_traits.h +++ b/library/cpp/json/domscheme_traits.h @@ -1,16 +1,16 @@ -#pragma once - +#pragma once + #include "json_value.h" #include "json_reader.h" -#include "json_writer.h" -#include <util/generic/algorithm.h> - -struct TJsonTraits { +#include "json_writer.h" +#include <util/generic/algorithm.h> + +struct TJsonTraits { using TValue = NJson::TJsonValue; using TValueRef = TValue*; using TConstValueRef = const TValue*; using TStringType = TStringBuf; - + // anyvalue defaults template <class T> static inline TValue Value(T&& t) { @@ -32,110 +32,110 @@ struct TJsonTraits { return &v; } - // common ops - static inline bool IsNull(TConstValueRef v) { - return v->GetType() == NJson::JSON_UNDEFINED || v->IsNull(); - } - - static inline TString ToJson(TConstValueRef v) { - return NJson::WriteJson(v, false); - } - - // struct ops - static inline TValueRef GetField(TValueRef v, const TStringBuf& name) { - return &(*v)[name]; - } - - static inline TConstValueRef GetField(TConstValueRef v, const TStringBuf& name) { - return &(*v)[name]; - } - - // array ops - static bool IsArray(TConstValueRef v) { - return v->IsArray(); - } - - static inline void ArrayClear(TValueRef v) { - v->SetType(NJson::JSON_NULL); - v->SetType(NJson::JSON_ARRAY); - } - + // common ops + static inline bool IsNull(TConstValueRef v) { + return v->GetType() == NJson::JSON_UNDEFINED || v->IsNull(); + } + + static inline TString ToJson(TConstValueRef v) { + return NJson::WriteJson(v, false); + } + + // struct ops + static inline TValueRef GetField(TValueRef v, const TStringBuf& name) { + return &(*v)[name]; + } + + static inline TConstValueRef GetField(TConstValueRef v, const TStringBuf& name) { + return &(*v)[name]; + } + + // array ops + static bool IsArray(TConstValueRef v) { + return v->IsArray(); + } + + static inline void ArrayClear(TValueRef v) { + v->SetType(NJson::JSON_NULL); + v->SetType(NJson::JSON_ARRAY); + } + using TArrayIterator = size_t; static inline TValueRef ArrayElement(TValueRef v, TArrayIterator n) { - return &(*v)[n]; - } - + return &(*v)[n]; + } + static inline TConstValueRef ArrayElement(TConstValueRef v, TArrayIterator n) { - return &(*v)[n]; - } - - static inline size_t ArraySize(TConstValueRef v) { - return v->GetArray().size(); - } - - static inline TArrayIterator ArrayBegin(TConstValueRef) { - return 0; - } - - static inline TArrayIterator ArrayEnd(TConstValueRef v) { - return ArraySize(v); - } - - // dict ops - static bool IsDict(TConstValueRef v) { - return v->IsMap(); - } - - static inline void DictClear(TValueRef v) { - v->SetType(NJson::JSON_NULL); - v->SetType(NJson::JSON_MAP); - } - - static inline TValueRef DictElement(TValueRef v, TStringBuf key) { - return &(*v)[key]; - } - - static inline TConstValueRef DictElement(TConstValueRef v, TStringBuf key) { - return &(*v)[key]; - } - + return &(*v)[n]; + } + + static inline size_t ArraySize(TConstValueRef v) { + return v->GetArray().size(); + } + + static inline TArrayIterator ArrayBegin(TConstValueRef) { + return 0; + } + + static inline TArrayIterator ArrayEnd(TConstValueRef v) { + return ArraySize(v); + } + + // dict ops + static bool IsDict(TConstValueRef v) { + return v->IsMap(); + } + + static inline void DictClear(TValueRef v) { + v->SetType(NJson::JSON_NULL); + v->SetType(NJson::JSON_MAP); + } + + static inline TValueRef DictElement(TValueRef v, TStringBuf key) { + return &(*v)[key]; + } + + static inline TConstValueRef DictElement(TConstValueRef v, TStringBuf key) { + return &(*v)[key]; + } + static inline size_t DictSize(TConstValueRef v) { - return v->GetMap().size(); - } - + return v->GetMap().size(); + } + using TDictIterator = NJson::TJsonValue::TMapType::const_iterator; - - static inline TDictIterator DictBegin(TConstValueRef v) { - return v->GetMap().begin(); - } - - static inline TDictIterator DictEnd(TConstValueRef v) { - return v->GetMap().end(); - } - - static inline TStringBuf DictIteratorKey(TConstValueRef /*dict*/, const TDictIterator& it) { - return it->first; - } - - static inline TConstValueRef DictIteratorValue(TConstValueRef /*dict*/, const TDictIterator& it) { - return &it->second; - } - - // boolean ops - static inline void Get(TConstValueRef v, bool def, bool& b) { - b = + + static inline TDictIterator DictBegin(TConstValueRef v) { + return v->GetMap().begin(); + } + + static inline TDictIterator DictEnd(TConstValueRef v) { + return v->GetMap().end(); + } + + static inline TStringBuf DictIteratorKey(TConstValueRef /*dict*/, const TDictIterator& it) { + return it->first; + } + + static inline TConstValueRef DictIteratorValue(TConstValueRef /*dict*/, const TDictIterator& it) { + return &it->second; + } + + // boolean ops + static inline void Get(TConstValueRef v, bool def, bool& b) { + b = v->GetType() == NJson::JSON_UNDEFINED ? def : v->IsNull() ? def : v->GetBooleanRobust(); - } - - static inline void Get(TConstValueRef v, bool& b) { - Get(v, false, b); - } - - static inline bool IsValidPrimitive(const bool&, TConstValueRef v) { - return v->IsBoolean(); - } - + } + + static inline void Get(TConstValueRef v, bool& b) { + Get(v, false, b); + } + + static inline bool IsValidPrimitive(const bool&, TConstValueRef v) { + return v->IsBoolean(); + } + #define INTEGER_OPS(type, checkOp, getOp) \ static inline void Get(TConstValueRef v, type def, type& i) { \ i = v->checkOp() ? v->getOp() : def; \ @@ -144,73 +144,73 @@ struct TJsonTraits { i = v->getOp(); \ } \ static inline bool IsValidPrimitive(const type&, TConstValueRef v) { \ - return v->checkOp() && v->getOp() >= Min<type>() && v->getOp() <= Max<type>(); \ - } - - INTEGER_OPS(i8, IsInteger, GetInteger) - INTEGER_OPS(i16, IsInteger, GetInteger) - INTEGER_OPS(i32, IsInteger, GetInteger) - INTEGER_OPS(i64, IsInteger, GetInteger) - INTEGER_OPS(ui8, IsUInteger, GetUInteger) - INTEGER_OPS(ui16, IsUInteger, GetUInteger) - INTEGER_OPS(ui32, IsUInteger, GetUInteger) - INTEGER_OPS(ui64, IsUInteger, GetUInteger) - -#undef INTEGER_OPS - - // double ops - static inline bool Get(TConstValueRef v, double def, double& d) { - if (v->IsDouble()) { - d = v->GetDouble(); - return true; - } - d = def; - return false; - } - - static inline void Get(TConstValueRef v, double& d) { - d = v->GetDouble(); - } - - static inline bool IsValidPrimitive(const double&, TConstValueRef v) { - return v->IsDouble(); - } - - // string ops - static inline void Get(TConstValueRef v, TStringBuf def, TStringBuf& s) { - s = v->IsString() ? v->GetString() : def; - } - - static inline void Get(TConstValueRef v, TStringBuf& s) { - s = v->GetString(); - } - - static inline bool IsValidPrimitive(const TStringBuf&, TConstValueRef v) { - return v->IsString(); - } - - // generic set - template <class T> - static inline void Set(TValueRef v, T&& t) { - v->SetValue(t); - } - - static inline void Clear(TValueRef v) { - v->SetType(NJson::JSON_NULL); - } - - // validation ops + return v->checkOp() && v->getOp() >= Min<type>() && v->getOp() <= Max<type>(); \ + } + + INTEGER_OPS(i8, IsInteger, GetInteger) + INTEGER_OPS(i16, IsInteger, GetInteger) + INTEGER_OPS(i32, IsInteger, GetInteger) + INTEGER_OPS(i64, IsInteger, GetInteger) + INTEGER_OPS(ui8, IsUInteger, GetUInteger) + INTEGER_OPS(ui16, IsUInteger, GetUInteger) + INTEGER_OPS(ui32, IsUInteger, GetUInteger) + INTEGER_OPS(ui64, IsUInteger, GetUInteger) + +#undef INTEGER_OPS + + // double ops + static inline bool Get(TConstValueRef v, double def, double& d) { + if (v->IsDouble()) { + d = v->GetDouble(); + return true; + } + d = def; + return false; + } + + static inline void Get(TConstValueRef v, double& d) { + d = v->GetDouble(); + } + + static inline bool IsValidPrimitive(const double&, TConstValueRef v) { + return v->IsDouble(); + } + + // string ops + static inline void Get(TConstValueRef v, TStringBuf def, TStringBuf& s) { + s = v->IsString() ? v->GetString() : def; + } + + static inline void Get(TConstValueRef v, TStringBuf& s) { + s = v->GetString(); + } + + static inline bool IsValidPrimitive(const TStringBuf&, TConstValueRef v) { + return v->IsString(); + } + + // generic set + template <class T> + static inline void Set(TValueRef v, T&& t) { + v->SetValue(t); + } + + static inline void Clear(TValueRef v) { + v->SetType(NJson::JSON_NULL); + } + + // validation ops static inline TVector<TString> GetKeys(TConstValueRef v) { TVector<TString> res; - for (const auto& it : v->GetMap()) { - res.push_back(it.first); - } - Sort(res.begin(), res.end()); - return res; - } - - template <typename T> - static inline bool IsValidPrimitive(const T&, TConstValueRef) { - return false; - } -}; + for (const auto& it : v->GetMap()) { + res.push_back(it.first); + } + Sort(res.begin(), res.end()); + return res; + } + + template <typename T> + static inline bool IsValidPrimitive(const T&, TConstValueRef) { + return false; + } +}; |