diff options
Diffstat (limited to 'src/mir/mir_ptr.hpp')
-rw-r--r-- | src/mir/mir_ptr.hpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/mir/mir_ptr.hpp b/src/mir/mir_ptr.hpp index d78df6d9..180fd6c3 100644 --- a/src/mir/mir_ptr.hpp +++ b/src/mir/mir_ptr.hpp @@ -1,4 +1,9 @@ /* + * MRustC - Rust Compiler + * - By John Hodge (Mutabah/thePowersGang) + * + * mir/mir_ptr.hpp + * - Pointer to a blob of MIR */ #pragma once @@ -13,7 +18,19 @@ class FunctionPointer public: FunctionPointer(): ptr(nullptr) {} FunctionPointer(::MIR::Function* p): ptr(p) {} - ~FunctionPointer(); + FunctionPointer(FunctionPointer&& x): ptr(x.ptr) { x.ptr = nullptr; } + + ~FunctionPointer() { + reset(); + } + FunctionPointer& operator=(FunctionPointer&& x) { + reset(); + ptr = x.ptr; + x.ptr = nullptr; + return *this; + } + + void reset(); ::MIR::Function& operator->() { return *ptr; } ::MIR::Function& operator*() { return *ptr; } |