[vector] Add copy constructor and assignment operator
authorBehdad Esfahbod <behdad@behdad.org>
Sun, 31 Mar 2019 01:13:57 +0000 (18:13 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Sun, 31 Mar 2019 01:13:57 +0000 (18:13 -0700)
src/hb-vector.hh

index fd24950..5b1a83c 100644 (file)
@@ -38,8 +38,13 @@ struct hb_vector_t
   typedef Type item_t;
   static constexpr unsigned item_size = hb_static_size (Type);
 
-  HB_NO_COPY_ASSIGN_TEMPLATE (hb_vector_t, Type);
   hb_vector_t ()  { init (); }
+  hb_vector_t (const hb_vector_t &o)
+  {
+    init ();
+    alloc (o.length);
+    hb_iter (o) | hb_sink (this);
+  }
   ~hb_vector_t () { fini (); }
 
   unsigned int length;
@@ -69,6 +74,16 @@ struct hb_vector_t
     fini ();
   }
 
+  void reset () { resize (0); }
+
+  hb_vector_t& operator = (const hb_vector_t &o)
+  {
+    reset ();
+    alloc (o.length);
+    hb_iter (o) | hb_sink (this);
+    return *this;
+  }
+
   const Type * arrayZ () const { return arrayZ_; }
         Type * arrayZ ()       { return arrayZ_; }