[array] Add more hb_array() / hb_sorted_array() variants
diff --git a/src/hb-array.hh b/src/hb-array.hh
index d82b0dc..3cce512 100644
--- a/src/hb-array.hh
+++ b/src/hb-array.hh
@@ -182,9 +182,12 @@
Type *arrayZ;
unsigned int len;
};
-template <typename T>
-inline hb_array_t<T> hb_array (T *array, unsigned int len)
+template <typename T> inline hb_array_t<T>
+hb_array (T *array, unsigned int len)
{ return hb_array_t<T> (array, len); }
+template <typename T, unsigned int len_> inline hb_array_t<T>
+hb_array (T (&array_)[len_])
+{ return hb_array_t<T> (array_); }
enum hb_bfind_not_found_t
@@ -200,6 +203,7 @@
hb_sorted_array_t () : hb_array_t<Type> () {}
hb_sorted_array_t (const hb_array_t<Type> &o) : hb_array_t<Type> (o) {}
hb_sorted_array_t (Type *array_, unsigned int len_) : hb_array_t<Type> (array_, len_) {}
+ template <unsigned int len_> hb_sorted_array_t (Type (&array_)[len_]) : hb_array_t<Type> (array_) {}
hb_sorted_array_t<Type> sub_array (unsigned int start_offset, unsigned int *seg_count /* IN/OUT */) const
{ return hb_sorted_array_t<Type> (((const hb_array_t<Type> *) (this))->sub_array (start_offset, seg_count)); }
@@ -261,9 +265,12 @@
return false;
}
};
-template <typename T>
-inline hb_sorted_array_t<T> hb_sorted_array (T *array, unsigned int len)
+template <typename T> inline hb_sorted_array_t<T>
+hb_sorted_array (T *array, unsigned int len)
{ return hb_sorted_array_t<T> (array, len); }
+template <typename T, unsigned int len_> inline hb_sorted_array_t<T>
+hb_sorted_array (T (&array_)[len_])
+{ return hb_sorted_array_t<T> (array_); }
typedef hb_array_t<const char> hb_bytes_t;