Make Extension a template
This commit is contained in:
parent
08f1eede1b
commit
653eeb2645
|
@ -1246,7 +1246,7 @@ struct ContextPos : Context {};
|
||||||
|
|
||||||
struct ChainContextPos : ChainContext {};
|
struct ChainContextPos : ChainContext {};
|
||||||
|
|
||||||
struct ExtensionPos : Extension
|
struct ExtensionPos : Extension<ExtensionPos>
|
||||||
{
|
{
|
||||||
inline const struct PosLookupSubTable& get_subtable (void) const
|
inline const struct PosLookupSubTable& get_subtable (void) const
|
||||||
{
|
{
|
||||||
|
@ -1255,9 +1255,6 @@ struct ExtensionPos : Extension
|
||||||
return StructAtOffset<PosLookupSubTable> (this, offset);
|
return StructAtOffset<PosLookupSubTable> (this, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename context_t>
|
|
||||||
inline typename context_t::return_t process (context_t *c) const;
|
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *c);
|
inline bool sanitize (hb_sanitize_context_t *c);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1525,12 +1522,6 @@ GPOS::position_finish (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer, hb_bool_t
|
||||||
|
|
||||||
/* Out-of-class implementation for methods recursing */
|
/* Out-of-class implementation for methods recursing */
|
||||||
|
|
||||||
template <typename context_t>
|
|
||||||
inline typename context_t::return_t ExtensionPos::process (context_t *c) const
|
|
||||||
{
|
|
||||||
return get_subtable ().process (c, get_type ());
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool ExtensionPos::sanitize (hb_sanitize_context_t *c)
|
inline bool ExtensionPos::sanitize (hb_sanitize_context_t *c)
|
||||||
{
|
{
|
||||||
TRACE_SANITIZE (this);
|
TRACE_SANITIZE (this);
|
||||||
|
|
|
@ -878,7 +878,7 @@ struct ContextSubst : Context {};
|
||||||
|
|
||||||
struct ChainContextSubst : ChainContext {};
|
struct ChainContextSubst : ChainContext {};
|
||||||
|
|
||||||
struct ExtensionSubst : Extension
|
struct ExtensionSubst : Extension<ExtensionSubst>
|
||||||
{
|
{
|
||||||
inline const struct SubstLookupSubTable& get_subtable (void) const
|
inline const struct SubstLookupSubTable& get_subtable (void) const
|
||||||
{
|
{
|
||||||
|
@ -887,9 +887,6 @@ struct ExtensionSubst : Extension
|
||||||
return StructAtOffset<SubstLookupSubTable> (this, offset);
|
return StructAtOffset<SubstLookupSubTable> (this, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename context_t>
|
|
||||||
inline typename context_t::return_t process (context_t *c) const;
|
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *c);
|
inline bool sanitize (hb_sanitize_context_t *c);
|
||||||
|
|
||||||
inline bool is_reverse (void) const;
|
inline bool is_reverse (void) const;
|
||||||
|
@ -1380,12 +1377,6 @@ GSUB::substitute_finish (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer HB_UNUSE
|
||||||
|
|
||||||
/* Out-of-class implementation for methods recursing */
|
/* Out-of-class implementation for methods recursing */
|
||||||
|
|
||||||
template <typename context_t>
|
|
||||||
inline typename context_t::return_t ExtensionSubst::process (context_t *c) const
|
|
||||||
{
|
|
||||||
return get_subtable ().process (c, get_type ());
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool ExtensionSubst::sanitize (hb_sanitize_context_t *c)
|
inline bool ExtensionSubst::sanitize (hb_sanitize_context_t *c)
|
||||||
{
|
{
|
||||||
TRACE_SANITIZE (this);
|
TRACE_SANITIZE (this);
|
||||||
|
|
|
@ -1765,6 +1765,7 @@ struct ExtensionFormat1
|
||||||
DEFINE_SIZE_STATIC (8);
|
DEFINE_SIZE_STATIC (8);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
struct Extension
|
struct Extension
|
||||||
{
|
{
|
||||||
inline unsigned int get_type (void) const
|
inline unsigned int get_type (void) const
|
||||||
|
@ -1782,6 +1783,12 @@ struct Extension
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename context_t>
|
||||||
|
inline typename context_t::return_t process (context_t *c) const
|
||||||
|
{
|
||||||
|
return CastP<T>(this)->get_subtable ().process (c, get_type ());
|
||||||
|
}
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *c) {
|
inline bool sanitize (hb_sanitize_context_t *c) {
|
||||||
TRACE_SANITIZE (this);
|
TRACE_SANITIZE (this);
|
||||||
if (!u.format.sanitize (c)) return TRACE_RETURN (false);
|
if (!u.format.sanitize (c)) return TRACE_RETURN (false);
|
||||||
|
|
Loading…
Reference in New Issue