diff options
Diffstat (limited to 'src/hb-ot-layout-common.hh')
-rw-r--r-- | src/hb-ot-layout-common.hh | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/src/hb-ot-layout-common.hh b/src/hb-ot-layout-common.hh index 656d31dc..ca3d7d5d 100644 --- a/src/hb-ot-layout-common.hh +++ b/src/hb-ot-layout-common.hh @@ -702,6 +702,23 @@ struct Lookup return_trace (true); } + /* Older compileres need this to NOT be locally defined in a function. */ + template <typename TSubTable> + struct SubTableSubsetWrapper + { + inline SubTableSubsetWrapper (const TSubTable &subtable_, + unsigned int lookup_type_) : + subtable (subtable_), + lookup_type (lookup_type_) {} + + inline bool subset (hb_subset_context_t *c) const + { return subtable.dispatch (c, lookup_type); } + + private: + const TSubTable &subtable; + unsigned int lookup_type; + }; + template <typename TSubTable> inline bool subset (hb_subset_context_t *c) const { @@ -717,20 +734,7 @@ struct Lookup unsigned int count = subTable.len; for (unsigned int i = 0; i < count; i++) { - struct Wrapper - { - inline Wrapper (const TSubTable &subtable_, - unsigned int lookup_type_) : - subtable (subtable_), - lookup_type (lookup_type_) {} - - inline bool subset (hb_subset_context_t *c) const - { return subtable.dispatch (c, lookup_type); } - - private: - const TSubTable &subtable; - unsigned int lookup_type; - } wrapper (this+subtables[i], get_type ()); + SubTableSubsetWrapper<TSubTable> wrapper (this+subtables[i], get_type ()); out_subtables[i].serialize_subset (c, wrapper, out); } |