summaryrefslogtreecommitdiff
path: root/src/macro_rules/macro_rules_ptr.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/macro_rules/macro_rules_ptr.hpp')
-rw-r--r--src/macro_rules/macro_rules_ptr.hpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/macro_rules/macro_rules_ptr.hpp b/src/macro_rules/macro_rules_ptr.hpp
new file mode 100644
index 00000000..512cbda2
--- /dev/null
+++ b/src/macro_rules/macro_rules_ptr.hpp
@@ -0,0 +1,31 @@
+/*
+ */
+#pragma once
+
+class MacroRules;
+
+class MacroRulesPtr:
+ public Serialisable
+{
+ MacroRules* m_ptr;
+public:
+ MacroRulesPtr() {}
+ MacroRulesPtr(MacroRules* p): m_ptr(p) {}
+ MacroRulesPtr(MacroRulesPtr&& x):
+ m_ptr(x.m_ptr)
+ {
+ x.m_ptr = nullptr;
+ }
+ MacroRulesPtr& operator=(MacroRulesPtr&& x)
+ {
+ m_ptr = x.m_ptr; x.m_ptr = nullptr;
+ return *this;
+ }
+
+ ~MacroRulesPtr();
+
+ MacroRules& operator*() { assert(m_ptr); return *m_ptr; }
+ const MacroRules& operator*() const { assert(m_ptr); return *m_ptr; }
+
+ SERIALISABLE_PROTOTYPES();
+};