diff options
Diffstat (limited to 'src/macro_rules/macro_rules_ptr.hpp')
-rw-r--r-- | src/macro_rules/macro_rules_ptr.hpp | 31 |
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(); +}; |