diff options
Diffstat (limited to 'src/hir/expr_ptr.cpp')
-rw-r--r-- | src/hir/expr_ptr.cpp | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/hir/expr_ptr.cpp b/src/hir/expr_ptr.cpp index 8231239c..1f4cb1c3 100644 --- a/src/hir/expr_ptr.cpp +++ b/src/hir/expr_ptr.cpp @@ -1,28 +1,34 @@ /* + * MRustC - Rust Compiler + * - By John Hodge (Mutabah/thePowersGang) + * + * hir/expr_ptr.cpp + * - HIR Expression */ #include <hir/expr_ptr.hpp> #include <hir/expr.hpp> -::HIR::ExprPtr::ExprPtr(): - node(nullptr) +::HIR::ExprPtr::ExprPtr(::std::unique_ptr< ::HIR::ExprNode> v): + node( mv$(v) ) { } -::HIR::ExprPtr::ExprPtr(::std::unique_ptr< ::HIR::ExprNode> v): - node( v.release() ) +::std::unique_ptr< ::HIR::ExprNode> HIR::ExprPtr::into_unique() { + return node.into_unique(); } -::HIR::ExprPtr::~ExprPtr() + + +::HIR::ExprPtrInner::ExprPtrInner(::std::unique_ptr< ::HIR::ExprNode> v): + ptr( v.release() ) { - delete node; } -::std::unique_ptr< ::HIR::ExprNode> HIR::ExprPtr::into_unique() +::HIR::ExprPtrInner::~ExprPtrInner() { - ::std::unique_ptr< ::HIR::ExprNode> rv( this->node ); - this->node = nullptr; - return rv; + delete ptr; } -void ::HIR::ExprPtr::reset(::HIR::ExprNode* p) +::std::unique_ptr< ::HIR::ExprNode> HIR::ExprPtrInner::into_unique() { - delete node; - node = p; + ::std::unique_ptr< ::HIR::ExprNode> rv( this->ptr ); + this->ptr = nullptr; + return rv; } |