From 14affb72b669fa61947c1f8d288baf9bee782f05 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 12 Sep 2024 18:25:52 +0300 Subject: [PATCH] add new Map and List bytebuffer-related methods --- src/data/dynamic.cpp | 16 ++++++++++++++++ src/data/dynamic.hpp | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/src/data/dynamic.cpp b/src/data/dynamic.cpp index 42100735..ea363fec 100644 --- a/src/data/dynamic.cpp +++ b/src/data/dynamic.cpp @@ -129,6 +129,12 @@ Map& List::putMap() { return *map; } +ByteBuffer& List::putBytes(size_t size) { + auto bytes = create_bytes(size); + put(bytes); + return *bytes; +} + void List::remove(size_t index) { values.erase(values.begin() + index); } @@ -280,6 +286,12 @@ Map& Map::putMap(const std::string& key) { return *obj; } +ByteBuffer& Map::putBytes(const std::string& key, size_t size) { + auto bytes = create_bytes(size); + put(key, bytes); + return *bytes; +} + bool Map::has(const std::string& key) const { return values.find(key) != values.end(); } @@ -312,6 +324,10 @@ Map_sptr dynamic::create_map( return std::make_shared(entries); } +ByteBuffer_sptr dynamic::create_bytes(size_t size) { + return std::make_shared(size); +} + number_t dynamic::get_number(const Value& value) { if (auto num = std::get_if(&value)) { return *num; diff --git a/src/data/dynamic.hpp b/src/data/dynamic.hpp index ed7a0786..193b224d 100644 --- a/src/data/dynamic.hpp +++ b/src/data/dynamic.hpp @@ -27,6 +27,8 @@ namespace dynamic { Map_sptr create_map( std::initializer_list> entries = {} ); + ByteBuffer_sptr create_bytes(size_t size); + number_t get_number(const Value& value); integer_t get_integer(const Value& value); @@ -82,6 +84,7 @@ namespace dynamic { List& putList(); Map& putMap(); + ByteBuffer& putBytes(size_t size); void remove(size_t index); }; @@ -173,6 +176,7 @@ namespace dynamic { List& putList(const std::string& key); Map& putMap(const std::string& key); + ByteBuffer& putBytes(const std::string& key, size_t size); bool has(const std::string& key) const; size_t size() const;