提交 2087f5a2 编写于 作者: B Behdad Esfahbod

Add casts to hb_array_t<>

上级 58d4d199
...@@ -374,16 +374,17 @@ struct UnsizedArrayOf ...@@ -374,16 +374,17 @@ struct UnsizedArrayOf
return *p; return *p;
} }
template <typename T> inline operator T * (void) { return arrayZ; }
template <typename T> inline operator const T * (void) const { return arrayZ; }
inline unsigned int get_size (unsigned int len) const inline unsigned int get_size (unsigned int len) const
{ return len * Type::static_size; } { return len * Type::static_size; }
template <typename T> inline operator T * (void) { return arrayZ; }
template <typename T> inline operator const T * (void) const { return arrayZ; }
inline hb_array_t<Type> as_array (unsigned int len) inline hb_array_t<Type> as_array (unsigned int len)
{ return hb_array (arrayZ, len); } { return hb_array (arrayZ, len); }
inline hb_array_t<const Type> as_array (unsigned int len) const inline hb_array_t<const Type> as_array (unsigned int len) const
{ return hb_array (arrayZ, len); } { return hb_array (arrayZ, len); }
inline operator hb_array_t<Type> (void) { return as_array (); }
inline operator hb_array_t<const Type> (void) const { as_array (); }
template <typename T> template <typename T>
inline Type &lsearch (unsigned int len, const T &x, Type &not_found = Crap (Type)) inline Type &lsearch (unsigned int len, const T &x, Type &not_found = Crap (Type))
...@@ -488,6 +489,8 @@ struct SortedUnsizedArrayOf : UnsizedArrayOf<Type> ...@@ -488,6 +489,8 @@ struct SortedUnsizedArrayOf : UnsizedArrayOf<Type>
{ return hb_sorted_array (this->arrayZ, len); } { return hb_sorted_array (this->arrayZ, len); }
inline hb_sorted_array_t<const Type> as_array (unsigned int len) const inline hb_sorted_array_t<const Type> as_array (unsigned int len) const
{ return hb_sorted_array (this->arrayZ, len); } { return hb_sorted_array (this->arrayZ, len); }
inline operator hb_sorted_array_t<Type> (void) { return as_array (); }
inline operator hb_sorted_array_t<const Type> (void) const { as_array (); }
template <typename T> template <typename T>
inline Type &bsearch (unsigned int len, const T &x, Type &not_found = Crap (Type)) inline Type &bsearch (unsigned int len, const T &x, Type &not_found = Crap (Type))
...@@ -533,6 +536,8 @@ struct ArrayOf ...@@ -533,6 +536,8 @@ struct ArrayOf
{ return hb_array (arrayZ, len); } { return hb_array (arrayZ, len); }
inline hb_array_t<const Type> as_array (void) const inline hb_array_t<const Type> as_array (void) const
{ return hb_array (arrayZ, len); } { return hb_array (arrayZ, len); }
inline operator hb_array_t<Type> (void) { return as_array (); }
inline operator hb_array_t<const Type> (void) const { as_array (); }
inline hb_array_t<const Type> sub_array (unsigned int start_offset, unsigned int count) const inline hb_array_t<const Type> sub_array (unsigned int start_offset, unsigned int count) const
{ return as_array ().sub_array (start_offset, count);} { return as_array ().sub_array (start_offset, count);}
...@@ -802,6 +807,8 @@ struct SortedArrayOf : ArrayOf<Type, LenType> ...@@ -802,6 +807,8 @@ struct SortedArrayOf : ArrayOf<Type, LenType>
{ return hb_sorted_array (this->arrayZ, this->len); } { return hb_sorted_array (this->arrayZ, this->len); }
inline hb_sorted_array_t<const Type> as_array (void) const inline hb_sorted_array_t<const Type> as_array (void) const
{ return hb_sorted_array (this->arrayZ, this->len); } { return hb_sorted_array (this->arrayZ, this->len); }
inline operator hb_sorted_array_t<Type> (void) { return as_array (); }
inline operator hb_sorted_array_t<const Type> (void) const { as_array (); }
inline hb_array_t<const Type> sub_array (unsigned int start_offset, unsigned int count) const inline hb_array_t<const Type> sub_array (unsigned int start_offset, unsigned int count) const
{ return as_array ().sub_array (start_offset, count);} { return as_array ().sub_array (start_offset, count);}
......
...@@ -105,6 +105,8 @@ struct hb_vector_t ...@@ -105,6 +105,8 @@ struct hb_vector_t
template <typename T> explicit_operator inline operator T * (void) { return arrayZ(); } template <typename T> explicit_operator inline operator T * (void) { return arrayZ(); }
template <typename T> explicit_operator inline operator const T * (void) const { return arrayZ(); } template <typename T> explicit_operator inline operator const T * (void) const { return arrayZ(); }
inline operator hb_array_t<Type> (void) { return as_array (); }
inline operator hb_array_t<const Type> (void) const { as_array (); }
inline Type * operator + (unsigned int i) { return arrayZ() + i; } inline Type * operator + (unsigned int i) { return arrayZ() + i; }
inline const Type * operator + (unsigned int i) const { return arrayZ() + i; } inline const Type * operator + (unsigned int i) const { return arrayZ() + i; }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册