finalize schema/data setup
Signed-off-by: Folling <mail@folling.io>
This commit is contained in:
parent
4d7bf09c4e
commit
954b8a11a3
89 changed files with 2324 additions and 6271 deletions
51
src/ikarus/values/schema.hpp
Normal file
51
src/ikarus/values/schema.hpp
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <variant>
|
||||
#include <vector>
|
||||
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
#include <cppbase/pointer.hpp>
|
||||
#include <cppbase/result.hpp>
|
||||
|
||||
#include <ikarus/values/errors.hpp>
|
||||
#include <ikarus/values/schema.h>
|
||||
|
||||
struct IkarusValue;
|
||||
struct IkarusValueData;
|
||||
struct IkarusValueSchema;
|
||||
|
||||
struct IkarusValueSchemaPrimitive {
|
||||
IkarusValuePrimitiveType type;
|
||||
};
|
||||
|
||||
struct IkarusValueSchemaList {
|
||||
cppbase::owning_ptr<IkarusValueSchema> sub_schema;
|
||||
};
|
||||
|
||||
struct IkarusValueSchemaMap {
|
||||
cppbase::owning_ptr<IkarusValueSchema> key_schema;
|
||||
cppbase::owning_ptr<IkarusValueSchema> value_schema;
|
||||
};
|
||||
|
||||
struct IkarusValueSchemaTuple {
|
||||
std::vector<cppbase::owning_ptr<IkarusValueSchema>> sub_schemas;
|
||||
};
|
||||
|
||||
struct IkarusValueSchema {
|
||||
using IkarusValueSchemaVariant = std::variant<
|
||||
IkarusValueSchemaPrimitive,
|
||||
IkarusValueSchemaList,
|
||||
IkarusValueSchemaMap,
|
||||
IkarusValueSchemaTuple>;
|
||||
|
||||
static auto from_json(nlohmann::json const & json)
|
||||
-> cppbase::Result<IkarusValueSchema, IkarusValueSchemaParseError>;
|
||||
static auto to_json(nlohmann::json & json, IkarusValueSchema const & value)
|
||||
-> void;
|
||||
|
||||
auto validate(IkarusValueData const & data) const -> bool;
|
||||
|
||||
IkarusValueSchemaVariant variant;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue