summaryrefslogtreecommitdiff
path: root/c++/tools/c_gen_iface.hpp
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2023-12-04 00:56:03 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2023-12-04 01:28:17 +0100
commit032409d34546a5e257a35fbfedb3e5aecaf08ebb (patch)
treead33db79b28479d11b82606f2ff64d640215898e /c++/tools/c_gen_iface.hpp
parentefd94d1cf1a3709365c4c144875524819a6a15a3 (diff)
tools: Experimental changes
Diffstat (limited to 'c++/tools/c_gen_iface.hpp')
-rw-r--r--c++/tools/c_gen_iface.hpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/c++/tools/c_gen_iface.hpp b/c++/tools/c_gen_iface.hpp
index 469c5c0..e79e27f 100644
--- a/c++/tools/c_gen_iface.hpp
+++ b/c++/tools/c_gen_iface.hpp
@@ -75,15 +75,26 @@ using FlattenedSchemaElement = Struct<
// Illegal, but doable with more lines of code
// Just use typename... T and
// "T..." for
-// "Member<FlattenedSchemaElement<Ele>,Names>..."
+// "Member<FlattenedSchemaElement<Ele>,Names>...>"
// and specialize somewhere else
template<typename... Ele, string_literal... Names>
using FlattenedSchema = Struct<
- Member<String, "top_schema">
+ Member<String, "top_schema">,
Member<FlattenedSchemaElement<Ele>, Names>...
>;
-
*/
+template<typename T>
+struct schema_flattener {
+ static_assert(always_false<T>, "Not supported");
+};
+
+template<typename... T, string_literal... Names>
+struct schema_flattener<schema::Struct<schema::Member<T,Names>...>> {
+
+};
+
+>;
+
using StructBindingSchema = Struct<
Member<String, "kind">,
Member<String, "key">,