summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-03-23 10:30:23 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-03-27 16:21:01 +0200
commit3656023785d17d513b67f4cbe8686a40141e06d8 (patch)
treed3e26110f82326573c0378d74f8d1dc189b32973 /vespalib
parent0cd6a2c04f90ffbdba4d585f1d71a5dd2b4e8311 (diff)
Remove ExpressionNode::CP from interfaces.
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/vespa/vespalib/util/memory.h20
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(); }