From 49a8dae0f3a6e589dfad65cbbf230137a7b67f4a Mon Sep 17 00:00:00 2001 From: Dylan Date: Thu, 11 Jun 2026 22:11:09 +1200 Subject: feat: Started to add arrays Only supports arrays of ints so far --- src/json.hpp | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'src/json.hpp') diff --git a/src/json.hpp b/src/json.hpp index 6f19ddd..8ecd947 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -15,14 +15,42 @@ namespace TehJSON return *static_cast(data.get()); } + template + std::string TehJSON::JSON::serializeData(std::vector* data) + { + std::string res = "["; + for(int i = 0; i < data->size(); i++) + { + T x = data->at(i); + // res += "inty"; + res += TehJSON::JSON::serializeData(&x); + if(i != data->size() - 1) + res += ", "; + } + res += "]"; + return res; + } + + template + void TehJSON::JSON::set(std::vector value) + { + if(children.size() != 0) + throw std::runtime_error("Node is not a leaf (has children already)!"); + isLeaf = true; + dataSerializer = [](std::shared_ptr data) -> std::string { + return TehJSON::JSON::serializeData((std::vector*)(data.get())); + }; + data = std::make_shared>(value); + } template 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; + dataSerializer = [](std::shared_ptr data) -> std::string { + return JSON::serializeData((T*)(data.get())); + }; data = std::make_shared(value); } - } -- cgit v1.2.3