summaryrefslogtreecommitdiff
path: root/src/hb-ot-layout-common.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/hb-ot-layout-common.hh')
-rw-r--r--src/hb-ot-layout-common.hh32
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);
}