summaryrefslogtreecommitdiff
path: root/starts/meaning-vm/level-2-wip-structs/structure.hpp
diff options
context:
space:
mode:
authorolpc user <olpc@xo-5d-f7-86.localdomain>2019-12-05 04:13:15 -0800
committerolpc user <olpc@xo-5d-f7-86.localdomain>2019-12-05 04:13:15 -0800
commit1c69cfe93e07f1f7d6d8de6908a0a4caa1dce9bd (patch)
treedd81d1b3b52d1026e0582c4dd26a8320ef868bac /starts/meaning-vm/level-2-wip-structs/structure.hpp
parent680af2ca0b1ced4c82bbce620d6c4fc97dae88d0 (diff)
downloadstandingwithresilience-1c69cfe93e07f1f7d6d8de6908a0a4caa1dce9bd.tar.gz
standingwithresilience-1c69cfe93e07f1f7d6d8de6908a0a4caa1dce9bd.zip
add structure attempt files
Diffstat (limited to 'starts/meaning-vm/level-2-wip-structs/structure.hpp')
-rw-r--r--starts/meaning-vm/level-2-wip-structs/structure.hpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/starts/meaning-vm/level-2-wip-structs/structure.hpp b/starts/meaning-vm/level-2-wip-structs/structure.hpp
new file mode 100644
index 0000000..8778c3d
--- /dev/null
+++ b/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);
+
+}
+}