summaryrefslogtreecommitdiff
path: root/modules/core/c++/abstract/schema.hpp
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2026-07-16 17:23:34 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2026-07-16 17:23:34 +0200
commit879188f7c55b4f8383002b6bf09ef32dd592ab90 (patch)
tree32e8e1c4816337fa6457f30c51ddf996e888aeb0 /modules/core/c++/abstract/schema.hpp
parent91f75c895fb2c344805ddcb91439b93bba0293c4 (diff)
parentbd9f266756849a7381d7a4ff575d5f1ccc6e28bb (diff)
downloadlibs-lbm-879188f7c55b4f8383002b6bf09ef32dd592ab90.tar.gz
Merge branch 'dev'
Diffstat (limited to 'modules/core/c++/abstract/schema.hpp')
-rw-r--r--modules/core/c++/abstract/schema.hpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/modules/core/c++/abstract/schema.hpp b/modules/core/c++/abstract/schema.hpp
new file mode 100644
index 0000000..8305005
--- /dev/null
+++ b/modules/core/c++/abstract/schema.hpp
@@ -0,0 +1,60 @@
+#pragma once
+
+#include "string_literal.hpp"
+#include "templates.hpp"
+
+namespace kel {
+namespace sch {
+struct Void {};
+
+struct UnsignedInteger {};
+struct SignedInteger {};
+struct FloatingPoint {};
+
+template<typename StorageT, typename InterfaceT>
+struct MixedPrecision {
+ using Meta = Void;
+ using StorageType = StorageT;
+ using InterfaceType = InterfaceT;
+};
+
+template<typename PrimType, uint64_t N>
+struct Primitive {
+ using Meta = Void;
+ using StorageType = PrimType;
+ using InterfaceType = PrimType;
+ static constexpr uint64_t Bytes = N;
+};
+
+template<typename T, uint64_t... Dims>
+struct FixedArray {
+ using Meta = Void;
+ using Inner = T;
+ static constexpr std::array<uint64_t,sizeof...(Dims)> Dimensions{Dims...};
+};
+
+template<typename T, uint64_t Dims>
+struct Array {
+ using Meta = FixedArray<UInt64,Dims>;
+ using Inner = T;
+ static constexpr std::array<uint64_t,sizeof...(Dims)> Dimensions{Dims};
+};
+
+template<typename... T>
+struct Tuple {
+};
+
+template<typename Value, string_literal Key>
+struct Member {};
+
+template<typename... SL>
+struct Struct {};
+
+}
+
+template<typename Sch>
+struct schema {
+ using Type = Sch;
+};
+
+}