From a6b59a7c170cb7e1f3940ea90c22580adae57451 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 1 Jul 2009 18:06:20 +0100 Subject: [PATCH] Remove magic numbers from cell type contexts --- pctb/ocr.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/pctb/ocr.c b/pctb/ocr.c index ef0364c..1a8ac9a 100644 --- a/pctb/ocr.c +++ b/pctb/ocr.c @@ -53,13 +53,22 @@ typedef struct { int rx; } FindCharResults; -enum { ct_Word, ct_Upper, ct_Lower, ct_Digit }; -static const char *context_names[]= { - "Word", /* bit 0, value 001 */ - "Upper", /* bit 1, value 002 */ - "Lower", /* 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) }; + +#define FEC_STRINGS(Context) #Context, +static const char *context_names[]= { FOR_EACH_CONTEXT(FEC_STRINGS) }; + struct OcrCellTypeInfo { /* bitmaps of indices into context_names: */ unsigned initial, nextword, midword; @@ -359,15 +368,15 @@ static int findchar_select_text(const FindCharArgs *fca, } const struct OcrCellTypeInfo ocr_celltype_number= { - 010,010,010, + ctf_Digit, ctf_Digit, ctf_Digit, .space_spaces= 5, .name= "number", .findchar_select= 0 }; const struct OcrCellTypeInfo ocr_celltype_text= { - .initial= 012, /* Digit|Upper */ - .nextword= 017, /* Digit|Upper|Lower|Word */ - .midword= 014, /* Digit|Lower */ + .initial= ctf_Digit | ctf_Upper, + .nextword= ctf_Digit | ctf_Upper | ctf_Lower | ctf_Word, + .midword= ctf_Digit | ctf_Lower, .space_spaces= 4, .name= "text", .findchar_select= findchar_select_text -- 2.30.2