summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorMurray Cumming <murrayc@murrayc.com>2015-08-22 12:06:39 +0200
committerMurray Cumming <murrayc@murrayc.com>2015-08-22 13:03:54 +0200
commit233d4ff7915f2d1ed52651220ec4ecd334f1a8c9 (patch)
tree5a14812878d34d072da469942b215204908beb5a /tools
parentceb43c2bc0edd56f43970c4e85123c7a4fcd5560 (diff)
downloadglibmm-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.m426
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_; }