Index: third_party/harfbuzz-ng/src/hb-ot-layout-gsubgpos-private.hh |
diff --git a/third_party/harfbuzz-ng/src/hb-ot-layout-gsubgpos-private.hh b/third_party/harfbuzz-ng/src/hb-ot-layout-gsubgpos-private.hh |
index 3e74dfeee70eaa1671e93965ff0c32ca6cf3c2cc..2a9f444d5f0ffd19e9d8ef000598e4b773cbce7b 100644 |
--- a/third_party/harfbuzz-ng/src/hb-ot-layout-gsubgpos-private.hh |
+++ b/third_party/harfbuzz-ng/src/hb-ot-layout-gsubgpos-private.hh |
@@ -46,14 +46,11 @@ namespace OT { |
(&c->debug_depth, c->get_name (), this, HB_FUNC, \ |
""); |
-struct hb_closure_context_t |
+struct hb_closure_context_t : |
+ hb_dispatch_context_t<hb_closure_context_t, hb_void_t, HB_DEBUG_CLOSURE> |
{ |
inline const char *get_name (void) { return "CLOSURE"; } |
- static const unsigned int max_debug_depth = HB_DEBUG_CLOSURE; |
- typedef hb_void_t return_t; |
typedef return_t (*recurse_func_t) (hb_closure_context_t *c, unsigned int lookup_index); |
- template <typename T, typename F> |
- inline bool may_dispatch (const T *obj, const F *format) { return true; } |
template <typename T> |
inline return_t dispatch (const T &obj) { obj.closure (this); return HB_VOID; } |
static return_t default_return_value (void) { return HB_VOID; } |
@@ -98,13 +95,10 @@ struct hb_closure_context_t |
(&c->debug_depth, c->get_name (), this, HB_FUNC, \ |
"%d glyphs", c->len); |
-struct hb_would_apply_context_t |
+struct hb_would_apply_context_t : |
+ hb_dispatch_context_t<hb_would_apply_context_t, bool, HB_DEBUG_WOULD_APPLY> |
{ |
inline const char *get_name (void) { return "WOULD_APPLY"; } |
- static const unsigned int max_debug_depth = HB_DEBUG_WOULD_APPLY; |
- typedef bool return_t; |
- template <typename T, typename F> |
- inline bool may_dispatch (const T *obj, const F *format) { return true; } |
template <typename T> |
inline return_t dispatch (const T &obj) { return obj.would_apply (this); } |
static return_t default_return_value (void) { return false; } |
@@ -138,14 +132,11 @@ struct hb_would_apply_context_t |
(&c->debug_depth, c->get_name (), this, HB_FUNC, \ |
""); |
-struct hb_collect_glyphs_context_t |
+struct hb_collect_glyphs_context_t : |
+ hb_dispatch_context_t<hb_collect_glyphs_context_t, hb_void_t, HB_DEBUG_COLLECT_GLYPHS> |
{ |
inline const char *get_name (void) { return "COLLECT_GLYPHS"; } |
- static const unsigned int max_debug_depth = HB_DEBUG_COLLECT_GLYPHS; |
- typedef hb_void_t return_t; |
typedef return_t (*recurse_func_t) (hb_collect_glyphs_context_t *c, unsigned int lookup_index); |
- template <typename T, typename F> |
- inline bool may_dispatch (const T *obj, const F *format) { return true; } |
template <typename T> |
inline return_t dispatch (const T &obj) { obj.collect_glyphs (this); return HB_VOID; } |
static return_t default_return_value (void) { return HB_VOID; } |
@@ -232,14 +223,14 @@ struct hb_collect_glyphs_context_t |
#define HB_DEBUG_GET_COVERAGE (HB_DEBUG+0) |
#endif |
+/* XXX Can we remove this? */ |
+ |
template <typename set_t> |
-struct hb_add_coverage_context_t |
+struct hb_add_coverage_context_t : |
+ hb_dispatch_context_t<hb_add_coverage_context_t<set_t>, const Coverage &, HB_DEBUG_GET_COVERAGE> |
{ |
inline const char *get_name (void) { return "GET_COVERAGE"; } |
- static const unsigned int max_debug_depth = HB_DEBUG_GET_COVERAGE; |
typedef const Coverage &return_t; |
- template <typename T, typename F> |
- inline bool may_dispatch (const T *obj, const F *format) { return true; } |
template <typename T> |
inline return_t dispatch (const T &obj) { return obj.get_coverage (); } |
static return_t default_return_value (void) { return Null(Coverage); } |
@@ -269,7 +260,8 @@ struct hb_add_coverage_context_t |
"idx %d gid %u lookup %d", \ |
c->buffer->idx, c->buffer->cur().codepoint, (int) c->lookup_index); |
-struct hb_apply_context_t |
+struct hb_apply_context_t : |
+ hb_dispatch_context_t<hb_apply_context_t, bool, HB_DEBUG_APPLY> |
{ |
struct matcher_t |
{ |
@@ -449,11 +441,7 @@ struct hb_apply_context_t |
inline const char *get_name (void) { return "APPLY"; } |
- static const unsigned int max_debug_depth = HB_DEBUG_APPLY; |
- typedef bool return_t; |
typedef return_t (*recurse_func_t) (hb_apply_context_t *c, unsigned int lookup_index); |
- template <typename T, typename F> |
- inline bool may_dispatch (const T *obj, const F *format) { return true; } |
template <typename T> |
inline return_t dispatch (const T &obj) { return obj.apply (this); } |
static return_t default_return_value (void) { return false; } |
@@ -722,7 +710,7 @@ static inline bool match_input (hb_apply_context_t *c, |
{ |
TRACE_APPLY (NULL); |
- if (unlikely (count > MAX_CONTEXT_LENGTH)) return TRACE_RETURN (false); |
+ if (unlikely (count > MAX_CONTEXT_LENGTH)) return_trace (false); |
hb_buffer_t *buffer = c->buffer; |
@@ -759,7 +747,7 @@ static inline bool match_input (hb_apply_context_t *c, |
match_positions[0] = buffer->idx; |
for (unsigned int i = 1; i < count; i++) |
{ |
- if (!skippy_iter.next ()) return TRACE_RETURN (false); |
+ if (!skippy_iter.next ()) return_trace (false); |
match_positions[i] = skippy_iter.idx; |
@@ -771,13 +759,13 @@ static inline bool match_input (hb_apply_context_t *c, |
* all subsequent components should be attached to the same ligature |
* component, otherwise we shouldn't ligate them. */ |
if (first_lig_id != this_lig_id || first_lig_comp != this_lig_comp) |
- return TRACE_RETURN (false); |
+ return_trace (false); |
} else { |
/* If first component was NOT attached to a previous ligature component, |
* all subsequent components should also NOT be attached to any ligature |
* component, unless they are attached to the first component itself! */ |
if (this_lig_id && this_lig_comp && (this_lig_id != first_lig_id)) |
- return TRACE_RETURN (false); |
+ return_trace (false); |
} |
is_mark_ligature = is_mark_ligature && _hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx]); |
@@ -792,9 +780,9 @@ static inline bool match_input (hb_apply_context_t *c, |
if (p_total_component_count) |
*p_total_component_count = total_component_count; |
- return TRACE_RETURN (true); |
+ return_trace (true); |
} |
-static inline void ligate_input (hb_apply_context_t *c, |
+static inline bool ligate_input (hb_apply_context_t *c, |
unsigned int count, /* Including the first glyph */ |
unsigned int match_positions[MAX_CONTEXT_LENGTH], /* Including the first glyph */ |
unsigned int match_length, |
@@ -884,7 +872,7 @@ static inline void ligate_input (hb_apply_context_t *c, |
break; |
} |
} |
- TRACE_RETURN (true); |
+ return_trace (true); |
} |
static inline bool match_backtrack (hb_apply_context_t *c, |
@@ -901,9 +889,9 @@ static inline bool match_backtrack (hb_apply_context_t *c, |
for (unsigned int i = 0; i < count; i++) |
if (!skippy_iter.prev ()) |
- return TRACE_RETURN (false); |
+ return_trace (false); |
- return TRACE_RETURN (true); |
+ return_trace (true); |
} |
static inline bool match_lookahead (hb_apply_context_t *c, |
@@ -921,9 +909,9 @@ static inline bool match_lookahead (hb_apply_context_t *c, |
for (unsigned int i = 0; i < count; i++) |
if (!skippy_iter.next ()) |
- return TRACE_RETURN (false); |
+ return_trace (false); |
- return TRACE_RETURN (true); |
+ return_trace (true); |
} |
@@ -933,7 +921,7 @@ struct LookupRecord |
inline bool sanitize (hb_sanitize_context_t *c) const |
{ |
TRACE_SANITIZE (this); |
- return TRACE_RETURN (c->check_struct (this)); |
+ return_trace (c->check_struct (this)); |
} |
USHORT sequenceIndex; /* Index into current glyph |
@@ -1034,7 +1022,7 @@ static inline bool apply_lookup (hb_apply_context_t *c, |
buffer->move_to (end); |
- return TRACE_RETURN (true); |
+ return_trace (true); |
} |
@@ -1143,14 +1131,14 @@ struct Rule |
{ |
TRACE_WOULD_APPLY (this); |
const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (inputZ, inputZ[0].static_size * (inputCount ? inputCount - 1 : 0)); |
- return TRACE_RETURN (context_would_apply_lookup (c, inputCount, inputZ, lookupCount, lookupRecord, lookup_context)); |
+ return_trace (context_would_apply_lookup (c, inputCount, inputZ, lookupCount, lookupRecord, lookup_context)); |
} |
inline bool apply (hb_apply_context_t *c, ContextApplyLookupContext &lookup_context) const |
{ |
TRACE_APPLY (this); |
const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (inputZ, inputZ[0].static_size * (inputCount ? inputCount - 1 : 0)); |
- return TRACE_RETURN (context_apply_lookup (c, inputCount, inputZ, lookupCount, lookupRecord, lookup_context)); |
+ return_trace (context_apply_lookup (c, inputCount, inputZ, lookupCount, lookupRecord, lookup_context)); |
} |
public: |
@@ -1202,9 +1190,9 @@ struct RuleSet |
for (unsigned int i = 0; i < num_rules; i++) |
{ |
if ((this+rule[i]).would_apply (c, lookup_context)) |
- return TRACE_RETURN (true); |
+ return_trace (true); |
} |
- return TRACE_RETURN (false); |
+ return_trace (false); |
} |
inline bool apply (hb_apply_context_t *c, ContextApplyLookupContext &lookup_context) const |
@@ -1214,15 +1202,15 @@ struct RuleSet |
for (unsigned int i = 0; i < num_rules; i++) |
{ |
if ((this+rule[i]).apply (c, lookup_context)) |
- return TRACE_RETURN (true); |
+ return_trace (true); |
} |
- return TRACE_RETURN (false); |
+ return_trace (false); |
} |
inline bool sanitize (hb_sanitize_context_t *c) const |
{ |
TRACE_SANITIZE (this); |
- return TRACE_RETURN (rule.sanitize (c, this)); |
+ return_trace (rule.sanitize (c, this)); |
} |
protected: |
@@ -1279,7 +1267,7 @@ struct ContextFormat1 |
{match_glyph}, |
NULL |
}; |
- return TRACE_RETURN (rule_set.would_apply (c, lookup_context)); |
+ return_trace (rule_set.would_apply (c, lookup_context)); |
} |
inline const Coverage &get_coverage (void) const |
@@ -1292,20 +1280,20 @@ struct ContextFormat1 |
TRACE_APPLY (this); |
unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint); |
if (likely (index == NOT_COVERED)) |
- return TRACE_RETURN (false); |
+ return_trace (false); |
const RuleSet &rule_set = this+ruleSet[index]; |
struct ContextApplyLookupContext lookup_context = { |
{match_glyph}, |
NULL |
}; |
- return TRACE_RETURN (rule_set.apply (c, lookup_context)); |
+ return_trace (rule_set.apply (c, lookup_context)); |
} |
inline bool sanitize (hb_sanitize_context_t *c) const |
{ |
TRACE_SANITIZE (this); |
- return TRACE_RETURN (coverage.sanitize (c, this) && ruleSet.sanitize (c, this)); |
+ return_trace (coverage.sanitize (c, this) && ruleSet.sanitize (c, this)); |
} |
protected: |
@@ -1371,7 +1359,7 @@ struct ContextFormat2 |
{match_class}, |
&class_def |
}; |
- return TRACE_RETURN (rule_set.would_apply (c, lookup_context)); |
+ return_trace (rule_set.would_apply (c, lookup_context)); |
} |
inline const Coverage &get_coverage (void) const |
@@ -1383,7 +1371,7 @@ struct ContextFormat2 |
{ |
TRACE_APPLY (this); |
unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint); |
- if (likely (index == NOT_COVERED)) return TRACE_RETURN (false); |
+ if (likely (index == NOT_COVERED)) return_trace (false); |
const ClassDef &class_def = this+classDef; |
index = class_def.get_class (c->buffer->cur().codepoint); |
@@ -1392,13 +1380,13 @@ struct ContextFormat2 |
{match_class}, |
&class_def |
}; |
- return TRACE_RETURN (rule_set.apply (c, lookup_context)); |
+ return_trace (rule_set.apply (c, lookup_context)); |
} |
inline bool sanitize (hb_sanitize_context_t *c) const |
{ |
TRACE_SANITIZE (this); |
- return TRACE_RETURN (coverage.sanitize (c, this) && classDef.sanitize (c, this) && ruleSet.sanitize (c, this)); |
+ return_trace (coverage.sanitize (c, this) && classDef.sanitize (c, this) && ruleSet.sanitize (c, this)); |
} |
protected: |
@@ -1462,7 +1450,7 @@ struct ContextFormat3 |
{match_coverage}, |
this |
}; |
- return TRACE_RETURN (context_would_apply_lookup (c, glyphCount, (const USHORT *) (coverageZ + 1), lookupCount, lookupRecord, lookup_context)); |
+ return_trace (context_would_apply_lookup (c, glyphCount, (const USHORT *) (coverageZ + 1), lookupCount, lookupRecord, lookup_context)); |
} |
inline const Coverage &get_coverage (void) const |
@@ -1474,27 +1462,27 @@ struct ContextFormat3 |
{ |
TRACE_APPLY (this); |
unsigned int index = (this+coverageZ[0]).get_coverage (c->buffer->cur().codepoint); |
- if (likely (index == NOT_COVERED)) return TRACE_RETURN (false); |
+ if (likely (index == NOT_COVERED)) return_trace (false); |
const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverageZ, coverageZ[0].static_size * glyphCount); |
struct ContextApplyLookupContext lookup_context = { |
{match_coverage}, |
this |
}; |
- return TRACE_RETURN (context_apply_lookup (c, glyphCount, (const USHORT *) (coverageZ + 1), lookupCount, lookupRecord, lookup_context)); |
+ return_trace (context_apply_lookup (c, glyphCount, (const USHORT *) (coverageZ + 1), lookupCount, lookupRecord, lookup_context)); |
} |
inline bool sanitize (hb_sanitize_context_t *c) const |
{ |
TRACE_SANITIZE (this); |
- if (!c->check_struct (this)) return TRACE_RETURN (false); |
+ if (!c->check_struct (this)) return_trace (false); |
unsigned int count = glyphCount; |
- if (!count) return TRACE_RETURN (false); /* We want to access coverageZ[0] freely. */ |
- if (!c->check_array (coverageZ, coverageZ[0].static_size, count)) return TRACE_RETURN (false); |
+ if (!count) return_trace (false); /* We want to access coverageZ[0] freely. */ |
+ if (!c->check_array (coverageZ, coverageZ[0].static_size, count)) return_trace (false); |
for (unsigned int i = 0; i < count; i++) |
- if (!coverageZ[i].sanitize (c, this)) return TRACE_RETURN (false); |
+ if (!coverageZ[i].sanitize (c, this)) return_trace (false); |
const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverageZ, coverageZ[0].static_size * count); |
- return TRACE_RETURN (c->check_array (lookupRecord, lookupRecord[0].static_size, lookupCount)); |
+ return_trace (c->check_array (lookupRecord, lookupRecord[0].static_size, lookupCount)); |
} |
protected: |
@@ -1517,12 +1505,12 @@ struct Context |
inline typename context_t::return_t dispatch (context_t *c) const |
{ |
TRACE_DISPATCH (this, u.format); |
- if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); |
+ if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ()); |
switch (u.format) { |
- case 1: return TRACE_RETURN (c->dispatch (u.format1)); |
- case 2: return TRACE_RETURN (c->dispatch (u.format2)); |
- case 3: return TRACE_RETURN (c->dispatch (u.format3)); |
- default:return TRACE_RETURN (c->default_return_value ()); |
+ case 1: return_trace (c->dispatch (u.format1)); |
+ case 2: return_trace (c->dispatch (u.format2)); |
+ case 3: return_trace (c->dispatch (u.format3)); |
+ default:return_trace (c->default_return_value ()); |
} |
} |
@@ -1687,11 +1675,11 @@ struct ChainRule |
const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> > (backtrack); |
const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input); |
const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead); |
- return TRACE_RETURN (chain_context_would_apply_lookup (c, |
- backtrack.len, backtrack.array, |
- input.len, input.array, |
- lookahead.len, lookahead.array, lookup.len, |
- lookup.array, lookup_context)); |
+ return_trace (chain_context_would_apply_lookup (c, |
+ backtrack.len, backtrack.array, |
+ input.len, input.array, |
+ lookahead.len, lookahead.array, lookup.len, |
+ lookup.array, lookup_context)); |
} |
inline bool apply (hb_apply_context_t *c, ChainContextApplyLookupContext &lookup_context) const |
@@ -1700,23 +1688,23 @@ struct ChainRule |
const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> > (backtrack); |
const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input); |
const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead); |
- return TRACE_RETURN (chain_context_apply_lookup (c, |
- backtrack.len, backtrack.array, |
- input.len, input.array, |
- lookahead.len, lookahead.array, lookup.len, |
- lookup.array, lookup_context)); |
+ return_trace (chain_context_apply_lookup (c, |
+ backtrack.len, backtrack.array, |
+ input.len, input.array, |
+ lookahead.len, lookahead.array, lookup.len, |
+ lookup.array, lookup_context)); |
} |
inline bool sanitize (hb_sanitize_context_t *c) const |
{ |
TRACE_SANITIZE (this); |
- if (!backtrack.sanitize (c)) return TRACE_RETURN (false); |
+ if (!backtrack.sanitize (c)) return_trace (false); |
const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> > (backtrack); |
- if (!input.sanitize (c)) return TRACE_RETURN (false); |
+ if (!input.sanitize (c)) return_trace (false); |
const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input); |
- if (!lookahead.sanitize (c)) return TRACE_RETURN (false); |
+ if (!lookahead.sanitize (c)) return_trace (false); |
const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead); |
- return TRACE_RETURN (lookup.sanitize (c)); |
+ return_trace (lookup.sanitize (c)); |
} |
protected: |
@@ -1761,9 +1749,9 @@ struct ChainRuleSet |
unsigned int num_rules = rule.len; |
for (unsigned int i = 0; i < num_rules; i++) |
if ((this+rule[i]).would_apply (c, lookup_context)) |
- return TRACE_RETURN (true); |
+ return_trace (true); |
- return TRACE_RETURN (false); |
+ return_trace (false); |
} |
inline bool apply (hb_apply_context_t *c, ChainContextApplyLookupContext &lookup_context) const |
@@ -1772,15 +1760,15 @@ struct ChainRuleSet |
unsigned int num_rules = rule.len; |
for (unsigned int i = 0; i < num_rules; i++) |
if ((this+rule[i]).apply (c, lookup_context)) |
- return TRACE_RETURN (true); |
+ return_trace (true); |
- return TRACE_RETURN (false); |
+ return_trace (false); |
} |
inline bool sanitize (hb_sanitize_context_t *c) const |
{ |
TRACE_SANITIZE (this); |
- return TRACE_RETURN (rule.sanitize (c, this)); |
+ return_trace (rule.sanitize (c, this)); |
} |
protected: |
@@ -1835,7 +1823,7 @@ struct ChainContextFormat1 |
{match_glyph}, |
{NULL, NULL, NULL} |
}; |
- return TRACE_RETURN (rule_set.would_apply (c, lookup_context)); |
+ return_trace (rule_set.would_apply (c, lookup_context)); |
} |
inline const Coverage &get_coverage (void) const |
@@ -1847,20 +1835,20 @@ struct ChainContextFormat1 |
{ |
TRACE_APPLY (this); |
unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint); |
- if (likely (index == NOT_COVERED)) return TRACE_RETURN (false); |
+ if (likely (index == NOT_COVERED)) return_trace (false); |
const ChainRuleSet &rule_set = this+ruleSet[index]; |
struct ChainContextApplyLookupContext lookup_context = { |
{match_glyph}, |
{NULL, NULL, NULL} |
}; |
- return TRACE_RETURN (rule_set.apply (c, lookup_context)); |
+ return_trace (rule_set.apply (c, lookup_context)); |
} |
inline bool sanitize (hb_sanitize_context_t *c) const |
{ |
TRACE_SANITIZE (this); |
- return TRACE_RETURN (coverage.sanitize (c, this) && ruleSet.sanitize (c, this)); |
+ return_trace (coverage.sanitize (c, this) && ruleSet.sanitize (c, this)); |
} |
protected: |
@@ -1939,7 +1927,7 @@ struct ChainContextFormat2 |
&input_class_def, |
&lookahead_class_def} |
}; |
- return TRACE_RETURN (rule_set.would_apply (c, lookup_context)); |
+ return_trace (rule_set.would_apply (c, lookup_context)); |
} |
inline const Coverage &get_coverage (void) const |
@@ -1951,7 +1939,7 @@ struct ChainContextFormat2 |
{ |
TRACE_APPLY (this); |
unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint); |
- if (likely (index == NOT_COVERED)) return TRACE_RETURN (false); |
+ if (likely (index == NOT_COVERED)) return_trace (false); |
const ClassDef &backtrack_class_def = this+backtrackClassDef; |
const ClassDef &input_class_def = this+inputClassDef; |
@@ -1965,15 +1953,17 @@ struct ChainContextFormat2 |
&input_class_def, |
&lookahead_class_def} |
}; |
- return TRACE_RETURN (rule_set.apply (c, lookup_context)); |
+ return_trace (rule_set.apply (c, lookup_context)); |
} |
inline bool sanitize (hb_sanitize_context_t *c) const |
{ |
TRACE_SANITIZE (this); |
- return TRACE_RETURN (coverage.sanitize (c, this) && backtrackClassDef.sanitize (c, this) && |
- inputClassDef.sanitize (c, this) && lookaheadClassDef.sanitize (c, this) && |
- ruleSet.sanitize (c, this)); |
+ return_trace (coverage.sanitize (c, this) && |
+ backtrackClassDef.sanitize (c, this) && |
+ inputClassDef.sanitize (c, this) && |
+ lookaheadClassDef.sanitize (c, this) && |
+ ruleSet.sanitize (c, this)); |
} |
protected: |
@@ -2056,11 +2046,11 @@ struct ChainContextFormat3 |
{match_coverage}, |
{this, this, this} |
}; |
- return TRACE_RETURN (chain_context_would_apply_lookup (c, |
- backtrack.len, (const USHORT *) backtrack.array, |
- input.len, (const USHORT *) input.array + 1, |
- lookahead.len, (const USHORT *) lookahead.array, |
- lookup.len, lookup.array, lookup_context)); |
+ return_trace (chain_context_would_apply_lookup (c, |
+ backtrack.len, (const USHORT *) backtrack.array, |
+ input.len, (const USHORT *) input.array + 1, |
+ lookahead.len, (const USHORT *) lookahead.array, |
+ lookup.len, lookup.array, lookup_context)); |
} |
inline const Coverage &get_coverage (void) const |
@@ -2075,7 +2065,7 @@ struct ChainContextFormat3 |
const OffsetArrayOf<Coverage> &input = StructAfter<OffsetArrayOf<Coverage> > (backtrack); |
unsigned int index = (this+input[0]).get_coverage (c->buffer->cur().codepoint); |
- if (likely (index == NOT_COVERED)) return TRACE_RETURN (false); |
+ if (likely (index == NOT_COVERED)) return_trace (false); |
const OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (input); |
const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead); |
@@ -2083,24 +2073,24 @@ struct ChainContextFormat3 |
{match_coverage}, |
{this, this, this} |
}; |
- return TRACE_RETURN (chain_context_apply_lookup (c, |
- backtrack.len, (const USHORT *) backtrack.array, |
- input.len, (const USHORT *) input.array + 1, |
- lookahead.len, (const USHORT *) lookahead.array, |
- lookup.len, lookup.array, lookup_context)); |
+ return_trace (chain_context_apply_lookup (c, |
+ backtrack.len, (const USHORT *) backtrack.array, |
+ input.len, (const USHORT *) input.array + 1, |
+ lookahead.len, (const USHORT *) lookahead.array, |
+ lookup.len, lookup.array, lookup_context)); |
} |
inline bool sanitize (hb_sanitize_context_t *c) const |
{ |
TRACE_SANITIZE (this); |
- if (!backtrack.sanitize (c, this)) return TRACE_RETURN (false); |
+ if (!backtrack.sanitize (c, this)) return_trace (false); |
const OffsetArrayOf<Coverage> &input = StructAfter<OffsetArrayOf<Coverage> > (backtrack); |
- if (!input.sanitize (c, this)) return TRACE_RETURN (false); |
- if (!input.len) return TRACE_RETURN (false); /* To be consistent with Context. */ |
+ if (!input.sanitize (c, this)) return_trace (false); |
+ if (!input.len) return_trace (false); /* To be consistent with Context. */ |
const OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (input); |
- if (!lookahead.sanitize (c, this)) return TRACE_RETURN (false); |
+ if (!lookahead.sanitize (c, this)) return_trace (false); |
const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead); |
- return TRACE_RETURN (lookup.sanitize (c)); |
+ return_trace (lookup.sanitize (c)); |
} |
protected: |
@@ -2130,12 +2120,12 @@ struct ChainContext |
inline typename context_t::return_t dispatch (context_t *c) const |
{ |
TRACE_DISPATCH (this, u.format); |
- if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); |
+ if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ()); |
switch (u.format) { |
- case 1: return TRACE_RETURN (c->dispatch (u.format1)); |
- case 2: return TRACE_RETURN (c->dispatch (u.format2)); |
- case 3: return TRACE_RETURN (c->dispatch (u.format3)); |
- default:return TRACE_RETURN (c->default_return_value ()); |
+ case 1: return_trace (c->dispatch (u.format1)); |
+ case 2: return_trace (c->dispatch (u.format2)); |
+ case 3: return_trace (c->dispatch (u.format3)); |
+ default:return_trace (c->default_return_value ()); |
} |
} |
@@ -2166,15 +2156,15 @@ struct ExtensionFormat1 |
inline typename context_t::return_t dispatch (context_t *c) const |
{ |
TRACE_DISPATCH (this, format); |
- if (unlikely (!c->may_dispatch (this, this))) TRACE_RETURN (c->default_return_value ()); |
- return TRACE_RETURN (get_subtable<typename T::LookupSubTable> ().dispatch (c, get_type ())); |
+ if (unlikely (!c->may_dispatch (this, this))) return_trace (c->no_dispatch_return_value ()); |
+ return_trace (get_subtable<typename T::LookupSubTable> ().dispatch (c, get_type ())); |
} |
/* This is called from may_dispatch() above with hb_sanitize_context_t. */ |
inline bool sanitize (hb_sanitize_context_t *c) const |
{ |
TRACE_SANITIZE (this); |
- return TRACE_RETURN (c->check_struct (this) && extensionOffset != 0); |
+ return_trace (c->check_struct (this) && extensionOffset != 0); |
} |
protected: |
@@ -2211,10 +2201,10 @@ struct Extension |
inline typename context_t::return_t dispatch (context_t *c) const |
{ |
TRACE_DISPATCH (this, u.format); |
- if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ()); |
+ if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ()); |
switch (u.format) { |
- case 1: return TRACE_RETURN (u.format1.dispatch (c)); |
- default:return TRACE_RETURN (c->default_return_value ()); |
+ case 1: return_trace (u.format1.dispatch (c)); |
+ default:return_trace (c->default_return_value ()); |
} |
} |
@@ -2269,10 +2259,11 @@ struct GSUBGPOS |
inline bool sanitize (hb_sanitize_context_t *c) const |
{ |
TRACE_SANITIZE (this); |
- return TRACE_RETURN (version.sanitize (c) && likely (version.major == 1) && |
- scriptList.sanitize (c, this) && |
- featureList.sanitize (c, this) && |
- lookupList.sanitize (c, this)); |
+ return_trace (version.sanitize (c) && |
+ likely (version.major == 1) && |
+ scriptList.sanitize (c, this) && |
+ featureList.sanitize (c, this) && |
+ lookupList.sanitize (c, this)); |
} |
protected: |