-enum { ct_Lower, ct_Upper, ct_Word, ct_Digit };
-static const char *context_names[]= {
- "Lower", /* bit 0, value 001 */
- "Upper", /* bit 1, value 002 */
- "Word", /* bit 2, value 004 */
- "Digit", /* bit 3, value 010 */
+#define FOR_EACH_CONTEXT(EACH) \
+ EACH(Word) \
+ EACH(Upper) \
+ EACH(Lower) \
+ EACH(Digit)
+
+#define FEC_ENUM(Context) ct_##Context,
+#define FEC_BIT(Context) ctf_##Context = 1 << ct_##Context,
+enum {
+ FOR_EACH_CONTEXT(FEC_ENUM)
+ FOR_EACH_CONTEXT(FEC_BIT)