Added move assignment operator to DetachedBuffer.
authorWouter van Oortmerssen <aardappel@gmail.com>
Fri, 16 Jun 2017 22:04:42 +0000 (15:04 -0700)
committerWouter van Oortmerssen <aardappel@gmail.com>
Fri, 16 Jun 2017 22:22:40 +0000 (15:22 -0700)
Change-Id: I4610946ac27d9d0d73c2fc2e4834bd2cfed88cdc
Tested: on Linux.

include/flatbuffers/flatbuffers.h
tests/test.cpp

index 1f45668..a7d80b2 100644 (file)
@@ -453,6 +453,16 @@ class DetachedBuffer {
     other.size_ = 0;
   }
 
+  DetachedBuffer &operator=(DetachedBuffer &&other) {
+    std::swap(allocator_, other.allocator_);
+    std::swap(own_allocator_, other.own_allocator_);
+    std::swap(buf_, other.buf_);
+    std::swap(reserved_, other.reserved_);
+    std::swap(cur_, other.cur_);
+    std::swap(size_, other.size_);
+    return *this;
+  }
+
   ~DetachedBuffer() {
     if (buf_) {
       assert(allocator_);
index 840114c..fa7fa6e 100644 (file)
@@ -1640,7 +1640,8 @@ int main(int /*argc*/, const char * /*argv*/[]) {
   // Run our various test suites:
 
   std::string rawbuf;
-  auto flatbuf = CreateFlatBufferTest(rawbuf);
+  auto flatbuf1 = CreateFlatBufferTest(rawbuf);
+  auto flatbuf = std::move(flatbuf1);  // Test move assignment.
   AccessFlatBufferTest(reinterpret_cast<const uint8_t *>(rawbuf.c_str()),
                        rawbuf.length());
   AccessFlatBufferTest(flatbuf.data(), flatbuf.size());