summaryrefslogtreecommitdiff
path: root/c++
diff options
context:
space:
mode:
Diffstat (limited to 'c++')
-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">,