diff options
author | John Hawthorn <john.hawthorn@gmail.com> | 2016-07-10 12:42:06 -0700 |
---|---|---|
committer | John Hawthorn <john.hawthorn@gmail.com> | 2016-07-12 00:42:48 -0700 |
commit | 9d16ab4997ce6eb211ff3fdf06275d3f6bf5ebdc (patch) | |
tree | 8a011e6a9c6afe04fd6aa5f3ce2f8a7de9a0bdfc /src/bonus.h | |
parent | e6cb871f4fe58c09c9aca29d6402fc7369caf759 (diff) |
Use standards-compliant lookup table
Diffstat (limited to 'src/bonus.h')
-rw-r--r-- | src/bonus.h | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/src/bonus.h b/src/bonus.h new file mode 100644 index 0000000..8cb6cfc --- /dev/null +++ b/src/bonus.h @@ -0,0 +1,124 @@ +#ifndef BONUS_H +#define BONUS_H BONUS_H + +#include "../config.h" + +const score_t bonus_states[3][256] = { + { 0 }, + { + ['/'] = SCORE_MATCH_SLASH, + ['-'] = SCORE_MATCH_WORD, + ['_'] = SCORE_MATCH_WORD, + [' '] = SCORE_MATCH_WORD, + ['.'] = SCORE_MATCH_DOT, + }, + { + ['/'] = SCORE_MATCH_SLASH, + ['-'] = SCORE_MATCH_WORD, + ['_'] = SCORE_MATCH_WORD, + [' '] = SCORE_MATCH_WORD, + ['.'] = SCORE_MATCH_DOT, + + /* ['a' ... 'z'] = SCORE_MATCH_CAPITAL, */ + ['a'] = SCORE_MATCH_CAPITAL, + ['b'] = SCORE_MATCH_CAPITAL, + ['c'] = SCORE_MATCH_CAPITAL, + ['d'] = SCORE_MATCH_CAPITAL, + ['e'] = SCORE_MATCH_CAPITAL, + ['f'] = SCORE_MATCH_CAPITAL, + ['g'] = SCORE_MATCH_CAPITAL, + ['h'] = SCORE_MATCH_CAPITAL, + ['i'] = SCORE_MATCH_CAPITAL, + ['j'] = SCORE_MATCH_CAPITAL, + ['k'] = SCORE_MATCH_CAPITAL, + ['l'] = SCORE_MATCH_CAPITAL, + ['m'] = SCORE_MATCH_CAPITAL, + ['n'] = SCORE_MATCH_CAPITAL, + ['o'] = SCORE_MATCH_CAPITAL, + ['p'] = SCORE_MATCH_CAPITAL, + ['q'] = SCORE_MATCH_CAPITAL, + ['r'] = SCORE_MATCH_CAPITAL, + ['s'] = SCORE_MATCH_CAPITAL, + ['t'] = SCORE_MATCH_CAPITAL, + ['u'] = SCORE_MATCH_CAPITAL, + ['v'] = SCORE_MATCH_CAPITAL, + ['w'] = SCORE_MATCH_CAPITAL, + ['x'] = SCORE_MATCH_CAPITAL, + ['y'] = SCORE_MATCH_CAPITAL, + ['z'] = SCORE_MATCH_CAPITAL, + }, +}; + +const size_t bonus_index[256] = { + /* ['A' ... 'Z'] = 2 */ + ['A'] = 2, + ['B'] = 2, + ['C'] = 2, + ['D'] = 2, + ['E'] = 2, + ['F'] = 2, + ['G'] = 2, + ['H'] = 2, + ['I'] = 2, + ['J'] = 2, + ['K'] = 2, + ['L'] = 2, + ['M'] = 2, + ['N'] = 2, + ['O'] = 2, + ['P'] = 2, + ['Q'] = 2, + ['R'] = 2, + ['S'] = 2, + ['T'] = 2, + ['U'] = 2, + ['V'] = 2, + ['W'] = 2, + ['X'] = 2, + ['Y'] = 2, + ['Z'] = 2, + + /* ['a' ... 'z'] = 1 */ + ['a'] = 1, + ['b'] = 1, + ['c'] = 1, + ['d'] = 1, + ['e'] = 1, + ['f'] = 1, + ['g'] = 1, + ['h'] = 1, + ['i'] = 1, + ['j'] = 1, + ['k'] = 1, + ['l'] = 1, + ['m'] = 1, + ['n'] = 1, + ['o'] = 1, + ['p'] = 1, + ['q'] = 1, + ['r'] = 1, + ['s'] = 1, + ['t'] = 1, + ['u'] = 1, + ['v'] = 1, + ['w'] = 1, + ['x'] = 1, + ['y'] = 1, + ['z'] = 1, + + /* ['0' ... '9'] = 1 */ + ['0'] = 1, + ['1'] = 1, + ['2'] = 1, + ['3'] = 1, + ['4'] = 1, + ['5'] = 1, + ['6'] = 1, + ['7'] = 1, + ['8'] = 1, + ['9'] = 1 +}; + +#define COMPUTE_BONUS(last_ch, ch) (bonus_states[bonus_index[(size_t)(ch)]][(size_t)(last_ch)]) + +#endif |