diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-03-23 10:30:23 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-03-27 16:21:01 +0200 |
commit | 3656023785d17d513b67f4cbe8686a40141e06d8 (patch) | |
tree | d3e26110f82326573c0378d74f8d1dc189b32973 /vespalib | |
parent | 0cd6a2c04f90ffbdba4d585f1d71a5dd2b4e8311 (diff) |
Remove ExpressionNode::CP from interfaces.
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/vespa/vespalib/util/memory.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/vespalib/src/vespa/vespalib/util/memory.h b/vespalib/src/vespa/vespalib/util/memory.h index d8bc1847321..d43190bd177 100644 --- a/vespalib/src/vespa/vespalib/util/memory.h +++ b/vespalib/src/vespa/vespalib/util/memory.h @@ -136,6 +136,13 @@ public: /** @brief destructor, calls free() on owned pointer */ ~MallocAutoPtr() { cleanup(); } + MallocAutoPtr(MallocAutoPtr && rhs) : _p(rhs._p) { rhs._p = nullptr; } + MallocAutoPtr & operator = (MallocAutoPtr && rhs) { + cleanup(); + std::swap(_p, rhs._p); + return *this; + } + /** * @brief "copy" contructor * @@ -288,9 +295,9 @@ public: void realloc(size_t sz) { - if (sz == 0) { - cleanup(); - } else { + if (sz == 0) { + cleanup(); + } else { void *p = ::realloc(_p, sz); if (p != nullptr) { _p = p; @@ -326,6 +333,13 @@ public: /** @brief construct (from pointer) */ CloneablePtr(T * p=nullptr) : _p(p) { } + CloneablePtr(CloneablePtr && rhs) noexcept : _p(rhs._p) { rhs._p = nullptr; } + CloneablePtr & operator = (CloneablePtr && rhs) noexcept { + cleanup(); + std::swap(_p, rhs._p); + return *this; + } + /** @brief destructor doing delete on owned pointer */ ~CloneablePtr() { cleanup(); } |