[arrays] Start moving Supplier<> to hb_array_t<>

This commit is contained in:
Behdad Esfahbod 2018-12-16 23:31:19 -05:00
parent 1e2c98126e
commit 507cac4943
1 changed files with 11 additions and 20 deletions

View File

@ -642,45 +642,36 @@ struct hb_serialize_context_t
*/
template <typename Type>
struct Supplier
struct Supplier : hb_array_t<const Type>
{
Supplier (const Type *array, unsigned int len_)
{
head = array;
len = len_;
this->arrayZ = array;
this->len = len_;
}
Supplier (hb_array_t<const Type> v)
{
head = v.arrayZ;
len = v.len;
this->arrayZ = v.arrayZ;
this->len = v.len;
}
Supplier (const hb_vector_t<Type> &v)
{
head = (const Type *) v;
len = v.len;
}
const Type operator [] (unsigned int i) const
{
if (unlikely (i >= len)) return Type ();
return head[i];
this->arrayZ = (const Type *) v;
this->len = v.len;
}
Supplier<Type> & operator += (unsigned int count)
{
if (unlikely (count > len))
count = len;
len -= count;
head += count;
if (unlikely (count > this->len))
count = this->len;
this->len -= count;
this->arrayZ += count;
return *this;
}
private:
Supplier (const Supplier<Type> &); /* Disallow copy */
Supplier<Type>& operator= (const Supplier<Type> &); /* Disallow copy */
unsigned int len;
const Type *head;
};