return * (Type *) Offset<OffsetType>::serialize (c, base);
}
- template <typename T, typename ...Ts>
- bool serialize_subset (hb_subset_context_t *c, const T &src, const void *base, Ts &&...ds)
+ template <typename ...Ts>
+ bool serialize_subset (hb_subset_context_t *c, const Type &src, const void *base, Ts &&...ds)
{
*this = 0;
- if (has_null && &src == &Null (T))
+ if (has_null && &src == &Null (Type))
return false;
auto *s = c->serializer;
return ret;
}
- template <typename T, typename ...Ts>
- bool serialize_copy (hb_serialize_context_t *c, const T &src, const void *base, Ts &&...ds)
+ template <typename ...Ts>
+ bool serialize_copy (hb_serialize_context_t *c, const Type &src, const void *base, Ts &&...ds)
{
*this = 0;
- if (has_null && &src == &Null (T))
+ if (has_null && &src == &Null (Type))
return false;
c->push ();
return_trace (true);
}
- /* Older compilers need this to NOT be locally defined in a function. */
- template <typename TSubTable>
- struct SubTableSubsetWrapper
- {
- SubTableSubsetWrapper (const TSubTable &subtable_,
- unsigned int lookup_type_) :
- subtable (subtable_),
- lookup_type (lookup_type_) {}
-
- 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>
bool subset (hb_subset_context_t *c) const
{
OffsetArrayOf<TSubTable>& out_subtables = out->get_subtables<TSubTable> ();
unsigned int count = subTable.len;
for (unsigned int i = 0; i < count; i++)
- {
- SubTableSubsetWrapper<TSubTable> wrapper (this+subtables[i], get_type ());
-
- out_subtables[i].serialize_subset (c, wrapper, out);
- }
+ out_subtables[i].serialize_subset (c, this+subtables[i], out, get_type ());
return_trace (true);
}
- /* Older compilers need this to NOT be locally defined in a function. */
- template <typename TSubTable>
- struct SubTableSanitizeWrapper : TSubTable
- {
- bool sanitize (hb_sanitize_context_t *c, unsigned int lookup_type) const
- { return this->dispatch (c, lookup_type); }
- };
-
template <typename TSubTable>
bool sanitize (hb_sanitize_context_t *c) const
{
if (!markFilteringSet.sanitize (c)) return_trace (false);
}
- if (unlikely (!CastR<OffsetArrayOf<SubTableSanitizeWrapper<TSubTable>>> (subTable)
+ if (unlikely (!CastR<OffsetArrayOf<TSubTable>> (subTable)
.sanitize (c, this, get_type ())))
return_trace (false);