[bit-set] Use for loop instead of memset for page clear
Produces faster code.
This commit is contained in:
parent
8e8ca03b2a
commit
a180ae43ce
|
@ -42,7 +42,16 @@ struct hb_vector_size_t
|
||||||
elt_t& operator [] (unsigned int i) { return v[i]; }
|
elt_t& operator [] (unsigned int i) { return v[i]; }
|
||||||
const elt_t& operator [] (unsigned int i) const { return v[i]; }
|
const elt_t& operator [] (unsigned int i) const { return v[i]; }
|
||||||
|
|
||||||
void clear (unsigned char v = 0) { hb_memset (this, v, sizeof (*this)); }
|
void init0 ()
|
||||||
|
{
|
||||||
|
for (unsigned int i = 0; i < ARRAY_LENGTH (v); i++)
|
||||||
|
v[i] = 0;
|
||||||
|
}
|
||||||
|
void init1 ()
|
||||||
|
{
|
||||||
|
for (unsigned int i = 0; i < ARRAY_LENGTH (v); i++)
|
||||||
|
v[i] = (elt_t) -1;
|
||||||
|
}
|
||||||
|
|
||||||
template <typename Op>
|
template <typename Op>
|
||||||
hb_vector_size_t process (const Op& op) const
|
hb_vector_size_t process (const Op& op) const
|
||||||
|
@ -80,8 +89,8 @@ struct hb_vector_size_t
|
||||||
|
|
||||||
struct hb_bit_page_t
|
struct hb_bit_page_t
|
||||||
{
|
{
|
||||||
void init0 () { v.clear (); }
|
void init0 () { v.init0 (); }
|
||||||
void init1 () { v.clear (0xFF); }
|
void init1 () { v.init1 (); }
|
||||||
|
|
||||||
constexpr unsigned len () const
|
constexpr unsigned len () const
|
||||||
{ return ARRAY_LENGTH_CONST (v); }
|
{ return ARRAY_LENGTH_CONST (v); }
|
||||||
|
|
Loading…
Reference in New Issue