Port Coverage::Iter off hb_auto_t<>
This commit is contained in:
parent
3a4e5dd425
commit
ca5e5a4979
|
@ -1108,8 +1108,7 @@ struct Coverage
|
||||||
|
|
||||||
struct Iter
|
struct Iter
|
||||||
{
|
{
|
||||||
Iter (void) : format (0), u () {};
|
inline Iter (const Coverage &c_)
|
||||||
inline void init (const Coverage &c_)
|
|
||||||
{
|
{
|
||||||
format = c_.u.format;
|
format = c_.u.format;
|
||||||
switch (format)
|
switch (format)
|
||||||
|
@ -1119,7 +1118,6 @@ struct Coverage
|
||||||
default: return;
|
default: return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
inline void fini (void) {}
|
|
||||||
inline bool more (void)
|
inline bool more (void)
|
||||||
{
|
{
|
||||||
switch (format)
|
switch (format)
|
||||||
|
|
|
@ -719,7 +719,7 @@ struct PairPosFormat1
|
||||||
inline bool intersects (const hb_set_t *glyphs) const
|
inline bool intersects (const hb_set_t *glyphs) const
|
||||||
{
|
{
|
||||||
unsigned int count = pairSet.len;
|
unsigned int count = pairSet.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
|
|
@ -48,7 +48,7 @@ struct SingleSubstFormat1
|
||||||
inline void closure (hb_closure_context_t *c) const
|
inline void closure (hb_closure_context_t *c) const
|
||||||
{
|
{
|
||||||
TRACE_CLOSURE (this);
|
TRACE_CLOSURE (this);
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
/* TODO Switch to range-based API to work around malicious fonts.
|
/* TODO Switch to range-based API to work around malicious fonts.
|
||||||
* https://github.com/harfbuzz/harfbuzz/issues/363 */
|
* https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -62,7 +62,7 @@ struct SingleSubstFormat1
|
||||||
{
|
{
|
||||||
TRACE_COLLECT_GLYPHS (this);
|
TRACE_COLLECT_GLYPHS (this);
|
||||||
if (unlikely (!(this+coverage).add_coverage (c->input))) return;
|
if (unlikely (!(this+coverage).add_coverage (c->input))) return;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
/* TODO Switch to range-based API to work around malicious fonts.
|
/* TODO Switch to range-based API to work around malicious fonts.
|
||||||
* https://github.com/harfbuzz/harfbuzz/issues/363 */
|
* https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -113,7 +113,7 @@ struct SingleSubstFormat1
|
||||||
hb_vector_t<GlyphID> from;
|
hb_vector_t<GlyphID> from;
|
||||||
hb_vector_t<GlyphID> to;
|
hb_vector_t<GlyphID> to;
|
||||||
hb_codepoint_t delta = deltaGlyphID;
|
hb_codepoint_t delta = deltaGlyphID;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (!c->plan->glyphset->has (iter.get_glyph ()))
|
if (!c->plan->glyphset->has (iter.get_glyph ()))
|
||||||
continue;
|
continue;
|
||||||
|
@ -157,7 +157,7 @@ struct SingleSubstFormat2
|
||||||
{
|
{
|
||||||
TRACE_CLOSURE (this);
|
TRACE_CLOSURE (this);
|
||||||
unsigned int count = substitute.len;
|
unsigned int count = substitute.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -171,7 +171,7 @@ struct SingleSubstFormat2
|
||||||
TRACE_COLLECT_GLYPHS (this);
|
TRACE_COLLECT_GLYPHS (this);
|
||||||
if (unlikely (!(this+coverage).add_coverage (c->input))) return;
|
if (unlikely (!(this+coverage).add_coverage (c->input))) return;
|
||||||
unsigned int count = substitute.len;
|
unsigned int count = substitute.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -218,7 +218,7 @@ struct SingleSubstFormat2
|
||||||
TRACE_SUBSET (this);
|
TRACE_SUBSET (this);
|
||||||
hb_vector_t<GlyphID> from;
|
hb_vector_t<GlyphID> from;
|
||||||
hb_vector_t<GlyphID> to;
|
hb_vector_t<GlyphID> to;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (!c->plan->glyphset->has (iter.get_glyph ()))
|
if (!c->plan->glyphset->has (iter.get_glyph ()))
|
||||||
continue;
|
continue;
|
||||||
|
@ -395,7 +395,7 @@ struct MultipleSubstFormat1
|
||||||
{
|
{
|
||||||
TRACE_CLOSURE (this);
|
TRACE_CLOSURE (this);
|
||||||
unsigned int count = sequence.len;
|
unsigned int count = sequence.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -585,7 +585,7 @@ struct AlternateSubstFormat1
|
||||||
{
|
{
|
||||||
TRACE_CLOSURE (this);
|
TRACE_CLOSURE (this);
|
||||||
unsigned int count = alternateSet.len;
|
unsigned int count = alternateSet.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -599,7 +599,7 @@ struct AlternateSubstFormat1
|
||||||
TRACE_COLLECT_GLYPHS (this);
|
TRACE_COLLECT_GLYPHS (this);
|
||||||
if (unlikely (!(this+coverage).add_coverage (c->input))) return;
|
if (unlikely (!(this+coverage).add_coverage (c->input))) return;
|
||||||
unsigned int count = alternateSet.len;
|
unsigned int count = alternateSet.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -906,7 +906,7 @@ struct LigatureSubstFormat1
|
||||||
inline bool intersects (const hb_set_t *glyphs) const
|
inline bool intersects (const hb_set_t *glyphs) const
|
||||||
{
|
{
|
||||||
unsigned int count = ligatureSet.len;
|
unsigned int count = ligatureSet.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -921,7 +921,7 @@ struct LigatureSubstFormat1
|
||||||
{
|
{
|
||||||
TRACE_CLOSURE (this);
|
TRACE_CLOSURE (this);
|
||||||
unsigned int count = ligatureSet.len;
|
unsigned int count = ligatureSet.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -935,7 +935,7 @@ struct LigatureSubstFormat1
|
||||||
TRACE_COLLECT_GLYPHS (this);
|
TRACE_COLLECT_GLYPHS (this);
|
||||||
if (unlikely (!(this+coverage).add_coverage (c->input))) return;
|
if (unlikely (!(this+coverage).add_coverage (c->input))) return;
|
||||||
unsigned int count = ligatureSet.len;
|
unsigned int count = ligatureSet.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -1114,7 +1114,7 @@ struct ReverseChainSingleSubstFormat1
|
||||||
|
|
||||||
const ArrayOf<GlyphID> &substitute = StructAfter<ArrayOf<GlyphID> > (lookahead);
|
const ArrayOf<GlyphID> &substitute = StructAfter<ArrayOf<GlyphID> > (lookahead);
|
||||||
count = substitute.len;
|
count = substitute.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
|
|
@ -1441,7 +1441,7 @@ struct ContextFormat1
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int count = ruleSet.len;
|
unsigned int count = ruleSet.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -1462,7 +1462,7 @@ struct ContextFormat1
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int count = ruleSet.len;
|
unsigned int count = ruleSet.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -2105,7 +2105,7 @@ struct ChainContextFormat1
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int count = ruleSet.len;
|
unsigned int count = ruleSet.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
@ -2126,7 +2126,7 @@ struct ChainContextFormat1
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int count = ruleSet.len;
|
unsigned int count = ruleSet.len;
|
||||||
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
|
for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
|
||||||
{
|
{
|
||||||
if (unlikely (iter.get_coverage () >= count))
|
if (unlikely (iter.get_coverage () >= count))
|
||||||
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
|
||||||
|
|
Loading…
Reference in New Issue