systemSetup

system setup, configuration and dotfiles
git clone https://noulin.net/git/systemSetup.git
Log | Files | Refs | README | LICENSE

bonus.h (1838B)


      1 #ifndef BONUS_H
      2 #define BONUS_H BONUS_H
      3 
      4 #include "config.h"
      5 
      6 #define ASSIGN_LOWER(v) \
      7 	['a'] = (v), \
      8 	['b'] = (v), \
      9 	['c'] = (v), \
     10 	['d'] = (v), \
     11 	['e'] = (v), \
     12 	['f'] = (v), \
     13 	['g'] = (v), \
     14 	['h'] = (v), \
     15 	['i'] = (v), \
     16 	['j'] = (v), \
     17 	['k'] = (v), \
     18 	['l'] = (v), \
     19 	['m'] = (v), \
     20 	['n'] = (v), \
     21 	['o'] = (v), \
     22 	['p'] = (v), \
     23 	['q'] = (v), \
     24 	['r'] = (v), \
     25 	['s'] = (v), \
     26 	['t'] = (v), \
     27 	['u'] = (v), \
     28 	['v'] = (v), \
     29 	['w'] = (v), \
     30 	['x'] = (v), \
     31 	['y'] = (v), \
     32 	['z'] = (v)
     33 
     34 #define ASSIGN_UPPER(v) \
     35 	['A'] = (v), \
     36 	['B'] = (v), \
     37 	['C'] = (v), \
     38 	['D'] = (v), \
     39 	['E'] = (v), \
     40 	['F'] = (v), \
     41 	['G'] = (v), \
     42 	['H'] = (v), \
     43 	['I'] = (v), \
     44 	['J'] = (v), \
     45 	['K'] = (v), \
     46 	['L'] = (v), \
     47 	['M'] = (v), \
     48 	['N'] = (v), \
     49 	['O'] = (v), \
     50 	['P'] = (v), \
     51 	['Q'] = (v), \
     52 	['R'] = (v), \
     53 	['S'] = (v), \
     54 	['T'] = (v), \
     55 	['U'] = (v), \
     56 	['V'] = (v), \
     57 	['W'] = (v), \
     58 	['X'] = (v), \
     59 	['Y'] = (v), \
     60 	['Z'] = (v)
     61 
     62 #define ASSIGN_DIGIT(v) \
     63 	['0'] = (v), \
     64 	['1'] = (v), \
     65 	['2'] = (v), \
     66 	['3'] = (v), \
     67 	['4'] = (v), \
     68 	['5'] = (v), \
     69 	['6'] = (v), \
     70 	['7'] = (v), \
     71 	['8'] = (v), \
     72 	['9'] = (v)
     73 
     74 const score_t bonus_states[3][256] = {
     75 	{ 0 },
     76 	{
     77 		['/'] = SCORE_MATCH_SLASH,
     78 		['-'] = SCORE_MATCH_WORD,
     79 		['_'] = SCORE_MATCH_WORD,
     80 		[' '] = SCORE_MATCH_WORD,
     81 		['.'] = SCORE_MATCH_DOT,
     82 	},
     83 	{
     84 		['/'] = SCORE_MATCH_SLASH,
     85 		['-'] = SCORE_MATCH_WORD,
     86 		['_'] = SCORE_MATCH_WORD,
     87 		[' '] = SCORE_MATCH_WORD,
     88 		['.'] = SCORE_MATCH_DOT,
     89 
     90 		/* ['a' ... 'z'] = SCORE_MATCH_CAPITAL, */
     91 		ASSIGN_LOWER(SCORE_MATCH_CAPITAL)
     92 	}
     93 };
     94 
     95 const size_t bonus_index[256] = {
     96 	/* ['A' ... 'Z'] = 2 */
     97 	ASSIGN_UPPER(2),
     98 
     99 	/* ['a' ... 'z'] = 1 */
    100 	ASSIGN_LOWER(1),
    101 
    102 	/* ['0' ... '9'] = 1 */
    103 	ASSIGN_DIGIT(1)
    104 };
    105 
    106 #define COMPUTE_BONUS(last_ch, ch) (bonus_states[bonus_index[(unsigned char)(ch)]][(unsigned char)(last_ch)])
    107 
    108 #endif