summaryrefslogtreecommitdiff
path: root/lib/core
diff options
context:
space:
mode:
Diffstat (limited to 'lib/core')
-rw-r--r--lib/core/c++/abstract/data.hpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/lib/core/c++/abstract/data.hpp b/lib/core/c++/abstract/data.hpp
index e8f1757..0075718 100644
--- a/lib/core/c++/abstract/data.hpp
+++ b/lib/core/c++/abstract/data.hpp
@@ -4,28 +4,48 @@
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 PrimitiveType = PrimType;
+ using Meta = Void;
+ using Type = PrimType;
static constexpr uint64_t Bytes = N;
};
template<typename T, uint64_t... Dims>
-struct Array {
- using InnerType = T;
+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 Sch>
+struct schema {
+ using Type = Sch;
+};
}