diff options
author | Murray Cumming <murrayc@murrayc.com> | 2015-08-22 12:06:39 +0200 |
---|---|---|
committer | Murray Cumming <murrayc@murrayc.com> | 2015-08-22 13:03:54 +0200 |
commit | 233d4ff7915f2d1ed52651220ec4ecd334f1a8c9 (patch) | |
tree | 5a14812878d34d072da469942b215204908beb5a /tools | |
parent | ceb43c2bc0edd56f43970c4e85123c7a4fcd5560 (diff) | |
download | glibmm-233d4ff7915f2d1ed52651220ec4ecd334f1a8c9.tar.gz |
gmmproc: _CLASS_OPAQUE_COPYABLE(): Add move operations.
The same as in _CLASS_BOXEDTYPE().
Diffstat (limited to 'tools')
-rw-r--r-- | tools/m4/class_opaque_copyable.m4 | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tools/m4/class_opaque_copyable.m4 b/tools/m4/class_opaque_copyable.m4 index f3fe4bd6..58739258 100644 --- a/tools/m4/class_opaque_copyable.m4 +++ b/tools/m4/class_opaque_copyable.m4 @@ -133,12 +133,33 @@ __CPPNAME__& __CPPNAME__::operator=(const __CPPNAME__`'& src) } ')dnl +__CPPNAME__::__CPPNAME__`'(__CPPNAME__&& other) noexcept +: + gobject_(other.gobject_) +{ + other.gobject_ = nullptr; +} + +__CPPNAME__& __CPPNAME__::operator=(__CPPNAME__`'&& other) noexcept +{ + __CPPNAME__ temp (other); + swap(temp); + return *this; +} + __CPPNAME__::~__CPPNAME__`'() { if(gobject_) __OPAQUE_FUNC_FREE`'(gobject_); } +void __CPPNAME__::swap(__CPPNAME__& other) noexcept +{ + __CNAME__ *const temp = gobject_; + gobject_ = other.gobject_; + other.gobject_ = temp; +} + __CNAME__* __CPPNAME__::gobj_copy() const { return __OPAQUE_FUNC_COPY`'(gobject_); @@ -180,9 +201,14 @@ ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',`dnl __CPPNAME__`'(const __CPPNAME__& src); __CPPNAME__& operator=(const __CPPNAME__& src); + __CPPNAME__`'(__CPPNAME__&& other) noexcept; + __CPPNAME__& operator=(__CPPNAME__&& other) noexcept; + _IMPORT(SECTION_DTOR_DOCUMENTATION) ~__CPPNAME__`'(); + void swap(__CPPNAME__& other) noexcept; + __CNAME__* gobj() { return gobject_; } const __CNAME__* gobj() const { return gobject_; } |