[vector] Add copy constructor and assignment operator

This commit is contained in:
Behdad Esfahbod 2019-03-30 18:13:57 -07:00
parent 6f69c9d26f
commit 357c7c611c
1 changed files with 16 additions and 1 deletions

View File

@ -38,8 +38,13 @@ struct hb_vector_t
typedef Type item_t; typedef Type item_t;
static constexpr unsigned item_size = hb_static_size (Type); 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 () { init (); }
hb_vector_t (const hb_vector_t &o)
{
init ();
alloc (o.length);
hb_iter (o) | hb_sink (this);
}
~hb_vector_t () { fini (); } ~hb_vector_t () { fini (); }
unsigned int length; unsigned int length;
@ -69,6 +74,16 @@ struct hb_vector_t
fini (); 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_; } const Type * arrayZ () const { return arrayZ_; }
Type * arrayZ () { return arrayZ_; } Type * arrayZ () { return arrayZ_; }