summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/codec/data.h25
-rw-r--r--src/codec/schema.h6
-rw-r--r--src/window/window.h6
3 files changed, 30 insertions, 7 deletions
diff --git a/src/codec/data.h b/src/codec/data.h
index e181dc4..96345af 100644
--- a/src/codec/data.h
+++ b/src/codec/data.h
@@ -69,6 +69,21 @@ private:
static_assert(always_false<T>, "Type not supported");
};
+template<typename... T, string_literal... literal>
+class data<schema::Struct<Member<T, literal>...>, encode::Native> {
+private:
+ std::tuple<data<T,encode::Native>...> value_;
+public:
+ template<string_literal literal>
+ data<T, encode::Native>& get(){
+
+ }
+
+ constexpr size_t size() const {
+ return sizeof...(T);
+ }
+};
+
template<typename T>
class data<schema::Array<T>, encode::Native> {
private:
@@ -78,7 +93,7 @@ class data<schema::Array<T>, encode::Native> {
value_.resize(size_);
}
- data<T>& at(size_t i){
+ data<T, encode::Native>& at(size_t i){
return value_.at(i);
}
@@ -99,6 +114,14 @@ public:
return value_.size();
}
+ char get_at(size_t i) const{
+ return value_.at(i);
+ }
+
+ void set_at(size_t i, char val){
+ value_.at(i) = val;
+ }
+
bool operator==(const data<schema::String, encode::Native>& data){
return value_ == data.value_;
}
diff --git a/src/codec/schema.h b/src/codec/schema.h
index d040a7a..5021d33 100644
--- a/src/codec/schema.h
+++ b/src/codec/schema.h
@@ -6,7 +6,7 @@
namespace saw {
namespace schema {
// NOLINTBEGIN
-template <typename T, string_literal Literal> struct NamedMember {};
+template <typename T, string_literal Literal> struct Member {};
template <typename... T> struct Struct {
static_assert(
@@ -15,7 +15,7 @@ template <typename... T> struct Struct {
};
template <typename... V, string_literal... K>
-struct Struct<NamedMember<V, K>...> {};
+struct Struct<Member<V, K>...> {};
template <typename... T> struct Union {
static_assert(
@@ -24,7 +24,7 @@ template <typename... T> struct Union {
};
template <typename... V, string_literal... K>
-struct Union<NamedMember<V, K>...> {};
+struct Union<Member<V, K>...> {};
template <typename T> struct Array {};
diff --git a/src/window/window.h b/src/window/window.h
index a6baae1..716b25d 100644
--- a/src/window/window.h
+++ b/src/window/window.h
@@ -12,11 +12,11 @@
namespace saw {
namespace schema {
using WindowResize = Struct<
- NamedMember<UInt32, "width">,
- NamedMember<UInt32, "height">
+ Member<UInt32, "width">,
+ Member<UInt32, "height">
>;
using WindowEvents = Union<
- NamedMember<WindowResize, "resize">
+ Member<WindowResize, "resize">
>;
}
}