[arrays] Move Supplier<> to hb-array.hh
diff --git a/src/hb-array.hh b/src/hb-array.hh index 0e99b07..83211aa 100644 --- a/src/hb-array.hh +++ b/src/hb-array.hh
@@ -222,4 +222,37 @@ typedef hb_array_t<const char> hb_bytes_t; +/* + * Supplier + */ + +template <typename Type> +struct Supplier : hb_array_t<const Type> +{ + Supplier (const Type *array, unsigned int len_) + { + this->arrayZ = array; + this->len = len_; + } + Supplier (hb_array_t<const Type> v) + { + this->arrayZ = v.arrayZ; + this->len = v.len; + } + + Supplier<Type> & operator += (unsigned int 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 */ +}; + + #endif /* HB_ARRAY_HH */