[OTLayout] More templatizing Extension
This commit is contained in:
parent
653eeb2645
commit
7dddd4e72b
|
@ -1248,12 +1248,7 @@ struct ChainContextPos : ChainContext {};
|
||||||
|
|
||||||
struct ExtensionPos : Extension<ExtensionPos>
|
struct ExtensionPos : Extension<ExtensionPos>
|
||||||
{
|
{
|
||||||
inline const struct PosLookupSubTable& get_subtable (void) const
|
typedef struct PosLookupSubTable LookupSubTable;
|
||||||
{
|
|
||||||
unsigned int offset = get_offset ();
|
|
||||||
if (unlikely (!offset)) return Null(PosLookupSubTable);
|
|
||||||
return StructAtOffset<PosLookupSubTable> (this, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *c);
|
inline bool sanitize (hb_sanitize_context_t *c);
|
||||||
};
|
};
|
||||||
|
|
|
@ -880,12 +880,7 @@ struct ChainContextSubst : ChainContext {};
|
||||||
|
|
||||||
struct ExtensionSubst : Extension<ExtensionSubst>
|
struct ExtensionSubst : Extension<ExtensionSubst>
|
||||||
{
|
{
|
||||||
inline const struct SubstLookupSubTable& get_subtable (void) const
|
typedef struct SubstLookupSubTable LookupSubTable;
|
||||||
{
|
|
||||||
unsigned int offset = get_offset ();
|
|
||||||
if (unlikely (!offset)) return Null(SubstLookupSubTable);
|
|
||||||
return StructAtOffset<SubstLookupSubTable> (this, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *c);
|
inline bool sanitize (hb_sanitize_context_t *c);
|
||||||
|
|
||||||
|
@ -1390,7 +1385,7 @@ inline bool ExtensionSubst::is_reverse (void) const
|
||||||
{
|
{
|
||||||
unsigned int type = get_type ();
|
unsigned int type = get_type ();
|
||||||
if (unlikely (type == SubstLookupSubTable::Extension))
|
if (unlikely (type == SubstLookupSubTable::Extension))
|
||||||
return CastR<ExtensionSubst> (get_subtable()).is_reverse ();
|
return CastR<ExtensionSubst> (get_subtable<SubstLookupSubTable>()).is_reverse ();
|
||||||
return SubstLookup::lookup_type_is_reverse (type);
|
return SubstLookup::lookup_type_is_reverse (type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1783,10 +1783,18 @@ struct Extension
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename X>
|
||||||
|
inline const X& get_subtable (void) const
|
||||||
|
{
|
||||||
|
unsigned int offset = get_offset ();
|
||||||
|
if (unlikely (!offset)) return Null(typename T::LookupSubTable);
|
||||||
|
return StructAtOffset<typename T::LookupSubTable> (this, offset);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename context_t>
|
template <typename context_t>
|
||||||
inline typename context_t::return_t process (context_t *c) const
|
inline typename context_t::return_t process (context_t *c) const
|
||||||
{
|
{
|
||||||
return CastP<T>(this)->get_subtable ().process (c, get_type ());
|
return CastP<T>(this)->get_subtable<typename T::LookupSubTable> ().process (c, get_type ());
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *c) {
|
inline bool sanitize (hb_sanitize_context_t *c) {
|
||||||
|
|
Loading…
Reference in New Issue