aboutsummaryrefslogtreecommitdiff
path: root/src/json.hpp
diff options
context:
space:
mode:
authorDylan <boss@tehbox.org>2026-06-11 22:11:09 +1200
committerDylan <boss@tehbox.org>2026-06-11 22:11:09 +1200
commit49a8dae0f3a6e589dfad65cbbf230137a7b67f4a (patch)
tree12eb15246e6e53911a91fde2d715c5d3a78dc614 /src/json.hpp
parent79a977bc3bea7777de861e4c1adda6d9f9feec99 (diff)
downloadtehjson-49a8dae0f3a6e589dfad65cbbf230137a7b67f4a.tar.gz
tehjson-49a8dae0f3a6e589dfad65cbbf230137a7b67f4a.zip
feat: Started to add arrays
Only supports arrays of ints so far
Diffstat (limited to 'src/json.hpp')
-rw-r--r--src/json.hpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/json.hpp b/src/json.hpp
index 6f19ddd..8ecd947 100644
--- a/src/json.hpp
+++ b/src/json.hpp
@@ -16,13 +16,41 @@ namespace TehJSON
}
template<typename T>
+ std::string TehJSON::JSON::serializeData(std::vector<T>* data)
+ {
+ std::string res = "[";
+ for(int i = 0; i < data->size(); i++)
+ {
+ T x = data->at(i);
+ // res += "inty";
+ res += TehJSON::JSON::serializeData<T>(&x);
+ if(i != data->size() - 1)
+ res += ", ";
+ }
+ res += "]";
+ return res;
+ }
+
+ template<typename T>
+ void TehJSON::JSON::set(std::vector<T> value)
+ {
+ if(children.size() != 0)
+ throw std::runtime_error("Node is not a leaf (has children already)!");
+ isLeaf = true;
+ dataSerializer = [](std::shared_ptr<void> data) -> std::string {
+ return TehJSON::JSON::serializeData<T>((std::vector<T>*)(data.get()));
+ };
+ data = std::make_shared<std::vector<T>>(value);
+ }
+ template<typename T>
void JSON::set(T value)
{
if(children.size() != 0)
throw std::runtime_error("Node is not a leaf (has children already)!");
isLeaf = true;
- dataSerializer = JSON::serializeData<T>;
+ dataSerializer = [](std::shared_ptr<void> data) -> std::string {
+ return JSON::serializeData<T>((T*)(data.get()));
+ };
data = std::make_shared<T>(value);
}
-
}