[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 */