summaryrefslogtreecommitdiff
path: root/starts/meaning-vm/level-2-wip-stmtexprs/baseref.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'starts/meaning-vm/level-2-wip-stmtexprs/baseref.hpp')
-rw-r--r--starts/meaning-vm/level-2-wip-stmtexprs/baseref.hpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/starts/meaning-vm/level-2-wip-stmtexprs/baseref.hpp b/starts/meaning-vm/level-2-wip-stmtexprs/baseref.hpp
new file mode 100644
index 0000000..84c9c13
--- /dev/null
+++ b/starts/meaning-vm/level-2-wip-stmtexprs/baseref.hpp
@@ -0,0 +1,23 @@
+#pragma once
+
+#include "common.hpp"
+#include "../level-1/ref.hpp"
+#include "statementref.hpp"
+
+namespace intellect {
+namespace level2 {
+
+template <typename ref>
+struct baseref : public level1::baseref<ref>
+{
+ using level1::baseref<ref>::baseref;
+ baseref(level1::ref other) : level1::baseref<ref>(other.ptr()) { }
+ operator level1::ref() { return ptr(); }
+
+ statementref operator=(ref other) { return assignop(self, other); }
+ statementref operator,(ref other) { return commaop(self, other); }
+ ref operator[](ref other) { return subop(self, other); }
+}
+
+}
+}