diff options
author | Claudius Holeksa <mail@keldu.de> | 2023-06-20 17:00:38 +0200 |
---|---|---|
committer | Claudius Holeksa <mail@keldu.de> | 2023-06-20 17:00:38 +0200 |
commit | 056ab6893ca18c33c7fb01d24498f9149fba4e8a (patch) | |
tree | 8ab44a999552beb3cd72f80c1166ec94e849e4fc /src/codec-json/json.h | |
parent | f5629bf0da55ebaaddc5cf551c36ed7362dc54b5 (diff) |
c++, codec-json: Minor progress on arrays for json decoding
Diffstat (limited to 'src/codec-json/json.h')
-rw-r--r-- | src/codec-json/json.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/codec-json/json.h b/src/codec-json/json.h index 58b64aa..1fe6bb5 100644 --- a/src/codec-json/json.h +++ b/src/codec-json/json.h @@ -20,6 +20,16 @@ public: data(std::size_t ring_size_):buffer_{ring_size_}{} + data(const std::string_view& view__): + buffer_{view__.size()} + { + auto ptr = reinterpret_cast<const uint8_t*>(view__.data()); + if(!ptr){ + return; + } + buffer_.push(*ptr, view__.size()); + } + buffer& get_buffer(){ return buffer_; } @@ -93,6 +103,12 @@ public: error_or<void> decode(data<Schema, encode::Json>& from_decode, data<Schema, ToEncoding>& to_decode){ buffer_view buff_v{from_decode.get_buffer()}; + auto eov = impl::json_decode<Schema, Schema, ToEncoding>::decode(buff_v, to_decode); + if(eov.is_error()){ + return std::move(eov.get_error()); + } + from_decode.get_buffer().read_advance(buff_v.read_offset()); + return void_t {}; } }; |