aboutsummaryrefslogtreecommitdiff
path: root/src/json.hpp
diff options
context:
space:
mode:
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);
}
-
}