summaryrefslogtreecommitdiff
path: root/src/bonus.h
blob: 8cb6cfc64d111cdb9e06126c21f6af757b11a912 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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