[Indic] Help compiler put indic_features table in .rodata

The overridden "or" operator was preventing the flag expression from
being const, and putting the table in .data instead or .rodata.
This commit is contained in:
Behdad Esfahbod 2013-02-27 20:40:54 -05:00
parent 778d7f844c
commit 41732f1fe3
2 changed files with 14 additions and 12 deletions

View File

@ -154,6 +154,8 @@ enum hb_ot_map_feature_flags_t {
F_HAS_FALLBACK = 0x0002, F_HAS_FALLBACK = 0x0002,
F_MANUAL_JOINERS = 0x0004 F_MANUAL_JOINERS = 0x0004
}; };
/* Macro version for where const is desired. */
#define F_COMBINE(l,r) (hb_ot_map_feature_flags_t ((unsigned int) (l) | (unsigned int) (r)))
inline hb_ot_map_feature_flags_t inline hb_ot_map_feature_flags_t
operator | (hb_ot_map_feature_flags_t l, hb_ot_map_feature_flags_t r) operator | (hb_ot_map_feature_flags_t l, hb_ot_map_feature_flags_t r)
{ return hb_ot_map_feature_flags_t ((unsigned int) l | (unsigned int) r); } { return hb_ot_map_feature_flags_t ((unsigned int) l | (unsigned int) r); }

View File

@ -339,18 +339,18 @@ indic_features[] =
* Basic features. * Basic features.
* These features are applied in order, one at a time, after initial_reordering. * These features are applied in order, one at a time, after initial_reordering.
*/ */
{HB_TAG('n','u','k','t'), F_MANUAL_JOINERS | F_GLOBAL}, {HB_TAG('n','u','k','t'), F_COMBINE (F_MANUAL_JOINERS, F_GLOBAL)},
{HB_TAG('a','k','h','n'), F_MANUAL_JOINERS | F_GLOBAL}, {HB_TAG('a','k','h','n'), F_COMBINE (F_MANUAL_JOINERS, F_GLOBAL)},
{HB_TAG('r','p','h','f'), F_MANUAL_JOINERS}, {HB_TAG('r','p','h','f'), F_COMBINE (F_MANUAL_JOINERS, F_NONE )},
{HB_TAG('r','k','r','f'), F_MANUAL_JOINERS | F_GLOBAL}, {HB_TAG('r','k','r','f'), F_COMBINE (F_MANUAL_JOINERS, F_GLOBAL)},
{HB_TAG('p','r','e','f'), F_MANUAL_JOINERS}, {HB_TAG('p','r','e','f'), F_COMBINE (F_MANUAL_JOINERS, F_NONE )},
{HB_TAG('b','l','w','f'), F_MANUAL_JOINERS}, {HB_TAG('b','l','w','f'), F_COMBINE (F_MANUAL_JOINERS, F_NONE )},
{HB_TAG('h','a','l','f'), F_MANUAL_JOINERS}, {HB_TAG('h','a','l','f'), F_COMBINE (F_MANUAL_JOINERS, F_NONE )},
{HB_TAG('a','b','v','f'), F_MANUAL_JOINERS}, {HB_TAG('a','b','v','f'), F_COMBINE (F_MANUAL_JOINERS, F_NONE )},
{HB_TAG('p','s','t','f'), F_MANUAL_JOINERS}, {HB_TAG('p','s','t','f'), F_COMBINE (F_MANUAL_JOINERS, F_NONE )},
{HB_TAG('c','f','a','r'), F_MANUAL_JOINERS}, {HB_TAG('c','f','a','r'), F_COMBINE (F_MANUAL_JOINERS, F_NONE )},
{HB_TAG('v','a','t','u'), F_MANUAL_JOINERS | F_GLOBAL}, {HB_TAG('v','a','t','u'), F_COMBINE (F_MANUAL_JOINERS, F_GLOBAL)},
{HB_TAG('c','j','c','t'), F_MANUAL_JOINERS | F_GLOBAL}, {HB_TAG('c','j','c','t'), F_COMBINE (F_MANUAL_JOINERS, F_GLOBAL)},
/* /*
* Other features. * Other features.
* These features are applied all at once, after final_reordering. * These features are applied all at once, after final_reordering.