[arrays] Add (unused) SortedUnsizedArrayOf<>

This commit is contained in:
Behdad Esfahbod 2018-11-24 01:37:11 -05:00
parent e700392f5c
commit 7c1600dcd9
1 changed files with 21 additions and 0 deletions

View File

@ -449,6 +449,27 @@ struct UnsizedOffsetListOf : UnsizedOffsetArrayOf<Type, OffsetType, has_null>
} }
}; };
/* An array with sorted elements. Supports binary searching. */
template <typename Type>
struct SortedUnsizedArrayOf : UnsizedArrayOf<Type>
{
inline hb_sorted_array_t<Type> as_array (unsigned int len)
{ return hb_sorted_array (this->arrayZ, len); }
inline hb_sorted_array_t<const Type> as_array (unsigned int len) const
{ return hb_sorted_array (this->arrayZ, len); }
template <typename T>
inline Type &bsearch (unsigned int len, const T &x)
{ return *as_array (len).bsearch (x, &Crap (Type)); }
template <typename T>
inline const Type &bsearch (unsigned int len, const T &x) const
{ return *as_array (len).bsearch (x, &Null (Type)); }
template <typename T>
inline bool bfind (unsigned int len, const T &x, unsigned int *i = nullptr) const
{ return as_array (len).bfind (x, i); }
};
/* An array with a number of elements. */ /* An array with a number of elements. */
template <typename Type, typename LenType=HBUINT16> template <typename Type, typename LenType=HBUINT16>
struct ArrayOf struct ArrayOf