[gsub] Porting serialize to iterators

This commit is contained in:
Behdad Esfahbod 2019-05-31 15:38:11 -07:00
parent 1834cf86d4
commit 2dbdec66a1
1 changed files with 10 additions and 5 deletions

View File

@ -87,8 +87,7 @@ struct SingleSubstFormat1
} }
template<typename Iterator, template<typename Iterator,
hb_requires (hb_is_sorted_source_of (Iterator, hb_requires (hb_is_sorted_source_of (Iterator, hb_codepoint_t))>
hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c, bool serialize (hb_serialize_context_t *c,
Iterator glyphs, Iterator glyphs,
unsigned delta) unsigned delta)
@ -339,8 +338,10 @@ struct Sequence
return_trace (true); return_trace (true);
} }
template <typename Iterator,
hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c, bool serialize (hb_serialize_context_t *c,
hb_array_t<const GlyphID> subst) Iterator subst)
{ {
TRACE_SERIALIZE (this); TRACE_SERIALIZE (this);
return_trace (substitute.serialize (c, subst)); return_trace (substitute.serialize (c, subst));
@ -515,8 +516,10 @@ struct AlternateSet
return_trace (true); return_trace (true);
} }
template <typename Iterator,
hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c, bool serialize (hb_serialize_context_t *c,
hb_array_t<const GlyphID> alts) Iterator alts)
{ {
TRACE_SERIALIZE (this); TRACE_SERIALIZE (this);
return_trace (alternates.serialize (c, alts)); return_trace (alternates.serialize (c, alts));
@ -729,9 +732,11 @@ struct Ligature
return_trace (true); return_trace (true);
} }
template <typename Iterator,
hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c, bool serialize (hb_serialize_context_t *c,
GlyphID ligature, GlyphID ligature,
hb_array_t<const GlyphID> components /* Starting from second */) Iterator components /* Starting from second */)
{ {
TRACE_SERIALIZE (this); TRACE_SERIALIZE (this);
if (unlikely (!c->extend_min (*this))) return_trace (false); if (unlikely (!c->extend_min (*this))) return_trace (false);