finalize schema/data setup
Signed-off-by: Folling <mail@folling.io>
This commit is contained in:
parent
70820129ae
commit
195f51d3d0
89 changed files with 2324 additions and 6271 deletions
65
src/ikarus/values/data.hpp
Normal file
65
src/ikarus/values/data.hpp
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
#pragma once
|
||||
|
||||
#include <variant>
|
||||
#include <vector>
|
||||
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
#include <cppbase/pointer.hpp>
|
||||
#include <cppbase/result.hpp>
|
||||
|
||||
#include <ikarus/values/data.h>
|
||||
#include <ikarus/values/errors.hpp>
|
||||
#include <ikarus/values/schema.h>
|
||||
|
||||
struct IkarusValueData;
|
||||
|
||||
struct IkarusValueDataPrimitiveToggle {
|
||||
bool value;
|
||||
};
|
||||
|
||||
struct IkarusValueDataPrimitiveNumber {
|
||||
double value;
|
||||
};
|
||||
|
||||
struct IkarusValueDataPrimitiveString {
|
||||
std::string value;
|
||||
};
|
||||
|
||||
using IkarusValueDataPrimitive = std::variant<
|
||||
IkarusValueDataPrimitiveToggle,
|
||||
IkarusValueDataPrimitiveNumber,
|
||||
IkarusValueDataPrimitiveString>;
|
||||
|
||||
struct IkarusValueDataList {
|
||||
std::vector<cppbase::owning_ptr<IkarusValueData>> values;
|
||||
};
|
||||
|
||||
struct IkarusValueDataMap {
|
||||
std::vector<std::pair<
|
||||
cppbase::owning_ptr<IkarusValueData>,
|
||||
cppbase::owning_ptr<IkarusValueData>>>
|
||||
values;
|
||||
};
|
||||
|
||||
struct IkarusValueDataTuple {
|
||||
std::vector<cppbase::owning_ptr<IkarusValueData>> values;
|
||||
};
|
||||
|
||||
struct IkarusValueData {
|
||||
using IkarusValueDataVariant = std::variant<
|
||||
IkarusValueDataPrimitive,
|
||||
IkarusValueDataList,
|
||||
IkarusValueDataMap,
|
||||
IkarusValueDataTuple>;
|
||||
|
||||
static auto from_json(nlohmann::json const & json)
|
||||
-> cppbase::Result<IkarusValueData, IkarusValueDataParseError>;
|
||||
static auto to_json(nlohmann::json & json, IkarusValueData const & value)
|
||||
-> void;
|
||||
|
||||
IkarusValueDataVariant variant;
|
||||
};
|
||||
|
||||
auto get_primitive_type(IkarusValueDataPrimitive const & primitive)
|
||||
-> IkarusValuePrimitiveType;
|
||||
Loading…
Add table
Add a link
Reference in a new issue