summaryrefslogtreecommitdiff
path: root/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-structs/structure.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'intellect-framework-from-internet/starts/meaning-vm/level-2-wip-structs/structure.hpp')
-rw-r--r--intellect-framework-from-internet/starts/meaning-vm/level-2-wip-structs/structure.hpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-structs/structure.hpp b/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-structs/structure.hpp
new file mode 100644
index 0000000..8778c3d
--- /dev/null
+++ b/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-structs/structure.hpp
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "common.hpp"
+#include "../level-1/helpers.hpp"
+
+namespace intellect {
+namespace level2 {
+
+namespace concepts {
+ static decl(structure), // group for all structures
+ decl(fill), // group for values to be filled in
+ decl(topic), // references the structure under consideration
+ decl(linked), decl(link), // describes a structure link
+ decl(source), decl(type), decl(target), // link attributes
+ decl(first), // for finding first of a list
+ decl(next) // for iteration over list
+ ;
+};
+
+// make a structure
+ref structure(ref name, std::initializer_list<ref> attributes);
+
+// make an object of the given structure
+ref structured(ref structure, std::initializer_list<ref> fills);
+
+// throw if an object is not of the given structure
+void muststructured(ref topic, ref structure);
+
+}
+}