[vector] Add move semantics
authorBehdad Esfahbod <behdad@behdad.org>
Sun, 31 Mar 2019 01:33:30 +0000 (18:33 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Sun, 31 Mar 2019 01:33:30 +0000 (18:33 -0700)
src/hb-vector.hh

index 8793405..f689439 100644 (file)
@@ -45,6 +45,13 @@ struct hb_vector_t
     alloc (o.length);
     hb_iter (o) | hb_sink (this);
   }
+  hb_vector_t (hb_vector_t &&o)
+  {
+    allocated = o.allocated;
+    length = o.length;
+    arrayZ_ = o.arrayZ_;
+    o.init ();
+  }
   ~hb_vector_t () { fini (); }
 
   unsigned int length;
@@ -83,6 +90,15 @@ struct hb_vector_t
     hb_iter (o) | hb_sink (this);
     return *this;
   }
+  hb_vector_t& operator = (hb_vector_t &&o)
+  {
+    fini ();
+    allocated = o.allocated;
+    length = o.length;
+    arrayZ_ = o.arrayZ_;
+    o.init ();
+    return *this;
+  }
 
   const Type * arrayZ () const { return arrayZ_; }
         Type * arrayZ ()       { return arrayZ_; }