[AAT.feat] Use lsearch for looking up SettingName's
They are not sorted.
This commit is contained in:
parent
44b9331f66
commit
52ae9867ef
|
@ -39,12 +39,10 @@ namespace AAT {
|
||||||
|
|
||||||
struct SettingName
|
struct SettingName
|
||||||
{
|
{
|
||||||
static int cmp (const void *key_, const void *entry_)
|
int cmp (hb_aat_layout_feature_selector_t key) const
|
||||||
{
|
{
|
||||||
hb_aat_layout_feature_selector_t key = * (hb_aat_layout_feature_selector_t *) key_;
|
return key < setting ? -1 :
|
||||||
const SettingName * entry = (const SettingName *) entry_;
|
key > setting ? +1 :
|
||||||
return key < entry->setting ? -1 :
|
|
||||||
key > entry->setting ? +1 :
|
|
||||||
0;
|
0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,6 +63,7 @@ struct SettingName
|
||||||
public:
|
public:
|
||||||
DEFINE_SIZE_STATIC (4);
|
DEFINE_SIZE_STATIC (4);
|
||||||
};
|
};
|
||||||
|
DECLARE_NULL_NAMESPACE_BYTES (AAT, SettingName);
|
||||||
|
|
||||||
struct feat;
|
struct feat;
|
||||||
|
|
||||||
|
@ -126,12 +125,7 @@ struct FeatureName
|
||||||
inline hb_ot_name_id_t get_feature_selector_name_id (const feat *feat,
|
inline hb_ot_name_id_t get_feature_selector_name_id (const feat *feat,
|
||||||
hb_aat_layout_feature_selector_t key) const
|
hb_aat_layout_feature_selector_t key) const
|
||||||
{
|
{
|
||||||
const SettingName* setting = (SettingName*) hb_bsearch (&key, feat+settingTableZ,
|
return (feat+settingTableZ).lsearch (nSettings, key).get_name_id ();
|
||||||
nSettings,
|
|
||||||
SettingName::static_size,
|
|
||||||
SettingName::cmp);
|
|
||||||
|
|
||||||
return setting ? setting->get_name_id () : (hb_ot_name_id_t) HB_OT_NAME_ID_INVALID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *c, const void *base) const
|
inline bool sanitize (hb_sanitize_context_t *c, const void *base) const
|
||||||
|
|
|
@ -376,11 +376,11 @@ struct UnsizedArrayOf
|
||||||
{ return hb_array (arrayZ, len); }
|
{ return hb_array (arrayZ, len); }
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline Type &lsearch (unsigned int len, const T &x)
|
inline Type &lsearch (unsigned int len, const T &x, Type ¬_found = Crap (Type))
|
||||||
{ return *as_array (len).lsearch (x, &Crap (T)); }
|
{ return *as_array (len).lsearch (x, ¬_found); }
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline const Type &lsearch (unsigned int len, const T &x) const
|
inline const Type &lsearch (unsigned int len, const T &x, const Type ¬_found = Null (Type)) const
|
||||||
{ return *as_array (len).lsearch (x, &Null (T)); }
|
{ return *as_array (len).lsearch (x, ¬_found); }
|
||||||
|
|
||||||
inline void qsort (unsigned int len, unsigned int start = 0, unsigned int end = (unsigned int) -1)
|
inline void qsort (unsigned int len, unsigned int start = 0, unsigned int end = (unsigned int) -1)
|
||||||
{ as_array (len).qsort (start, end); }
|
{ as_array (len).qsort (start, end); }
|
||||||
|
@ -589,11 +589,11 @@ struct ArrayOf
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline Type &lsearch (const T &x)
|
inline Type &lsearch (const T &x, Type ¬_found = Crap (Type))
|
||||||
{ return *as_array ().lsearch (x, &Crap (T)); }
|
{ return *as_array ().lsearch (x, ¬_found); }
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline const Type &lsearch (const T &x) const
|
inline const Type &lsearch (const T &x, const Type ¬_found = Null (Type)) const
|
||||||
{ return *as_array ().lsearch (x, &Null (T)); }
|
{ return *as_array ().lsearch (x, ¬_found); }
|
||||||
|
|
||||||
inline void qsort (unsigned int start = 0, unsigned int end = (unsigned int) -1)
|
inline void qsort (unsigned int start = 0, unsigned int end = (unsigned int) -1)
|
||||||
{ as_array ().qsort (start, end); }
|
{ as_array ().qsort (start, end); }
|
||||||
|
|
|
@ -27,10 +27,11 @@
|
||||||
#include "hb.hh"
|
#include "hb.hh"
|
||||||
|
|
||||||
#include "hb-open-type.hh"
|
#include "hb-open-type.hh"
|
||||||
#include "hb-aat-layout-common.hh"
|
|
||||||
#include "hb-ot-layout-common.hh"
|
|
||||||
|
|
||||||
#include "hb-face.hh"
|
#include "hb-face.hh"
|
||||||
|
|
||||||
|
#include "hb-aat-layout-common.hh"
|
||||||
|
#include "hb-aat-layout-feat-table.hh"
|
||||||
|
#include "hb-ot-layout-common.hh"
|
||||||
#include "hb-ot-cmap-table.hh"
|
#include "hb-ot-cmap-table.hh"
|
||||||
#include "hb-ot-head-table.hh"
|
#include "hb-ot-head-table.hh"
|
||||||
#include "hb-ot-maxp-table.hh"
|
#include "hb-ot-maxp-table.hh"
|
||||||
|
@ -44,6 +45,7 @@ DEFINE_NULL_NAMESPACE_BYTES (OT, Index) = {0xFF,0xFF};
|
||||||
DEFINE_NULL_NAMESPACE_BYTES (OT, LangSys) = {0x00,0x00, 0xFF,0xFF, 0x00,0x00};
|
DEFINE_NULL_NAMESPACE_BYTES (OT, LangSys) = {0x00,0x00, 0xFF,0xFF, 0x00,0x00};
|
||||||
DEFINE_NULL_NAMESPACE_BYTES (OT, RangeRecord) = {0x00,0x01, 0x00,0x00, 0x00, 0x00};
|
DEFINE_NULL_NAMESPACE_BYTES (OT, RangeRecord) = {0x00,0x01, 0x00,0x00, 0x00, 0x00};
|
||||||
DEFINE_NULL_NAMESPACE_BYTES (OT, CmapSubtableLongGroup) = {0x00,0x00,0x00,0x01, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00};
|
DEFINE_NULL_NAMESPACE_BYTES (OT, CmapSubtableLongGroup) = {0x00,0x00,0x00,0x01, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00};
|
||||||
|
DEFINE_NULL_NAMESPACE_BYTES (AAT, SettingName) = {0xFF,0xFF, 0xFF,0xFF};
|
||||||
/* Hand-coded because Lookup is a template. Sad. */
|
/* Hand-coded because Lookup is a template. Sad. */
|
||||||
const unsigned char _hb_Null_AAT_Lookup[2] = {0xFF, 0xFF};
|
const unsigned char _hb_Null_AAT_Lookup[2] = {0xFF, 0xFF};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue