1145683Sharti/* 2145683Sharti * DO NOT EDIT 3145683Sharti * $FreeBSD$ 4177102Sobrien * auto-generated from FreeBSD: src/usr.bin/make/parse.c,v 1.114 2008/03/12 14:50:58 obrien Exp 5145683Sharti * DO NOT EDIT 6145683Sharti */ 7145683Sharti#include <sys/types.h> 8145683Sharti 9145683Sharti#include "hash_tables.h" 10145683Sharti 11145683Sharti/* 12145683Sharti * d=2 13150595Sphk * n=40 14150595Sphk * m=19 15145683Sharti * c=2.09 16145683Sharti * maxlen=1 17145683Sharti * minklen=2 18145683Sharti * maxklen=9 19145683Sharti * minchar=97 20145683Sharti * maxchar=119 21145683Sharti * loop=0 22150595Sphk * numiter=1 23145683Sharti * seed= 24145683Sharti */ 25145683Sharti 26145683Shartistatic const signed char directive_g[] = { 27150595Sphk 8, 0, 0, 5, 6, -1, 17, 15, 10, 6, 28150595Sphk -1, -1, 10, 0, 0, -1, 18, 2, 3, 0, 29150595Sphk 7, -1, -1, -1, 0, 14, -1, -1, 11, 16, 30150595Sphk -1, -1, 0, -1, 0, 0, 17, 0, -1, 1, 31145683Sharti}; 32145683Sharti 33145683Shartistatic const u_char directive_T0[] = { 34150595Sphk 26, 14, 19, 35, 10, 34, 18, 27, 1, 17, 35150595Sphk 22, 37, 12, 12, 36, 21, 0, 6, 1, 25, 36150595Sphk 9, 4, 19, 37145683Sharti}; 38145683Sharti 39145683Shartistatic const u_char directive_T1[] = { 40150595Sphk 25, 22, 19, 0, 2, 18, 33, 18, 30, 4, 41150595Sphk 30, 9, 21, 19, 16, 12, 35, 34, 4, 19, 42150595Sphk 9, 33, 16, 43145683Sharti}; 44145683Sharti 45145683Sharti 46145683Shartiint 47145683Shartidirective_hash(const u_char *key, size_t len) 48145683Sharti{ 49145683Sharti unsigned f0, f1; 50145683Sharti const u_char *kp = key; 51145683Sharti 52145683Sharti if (len < 2 || len > 9) 53145683Sharti return -1; 54145683Sharti 55145683Sharti for (f0=f1=0; kp < key + len; ++kp) { 56145683Sharti if (*kp < 97 || *kp > 119) 57145683Sharti return -1; 58145683Sharti f0 += directive_T0[-97 + *kp]; 59145683Sharti f1 += directive_T1[-97 + *kp]; 60145683Sharti } 61145683Sharti 62150595Sphk f0 %= 40; 63150595Sphk f1 %= 40; 64145683Sharti 65150595Sphk return (directive_g[f0] + directive_g[f1]) % 19; 66145683Sharti} 67145683Sharti/* 68145683Sharti * d=2 69177102Sobrien * n=74 70177102Sobrien * m=35 71145683Sharti * c=2.09 72145683Sharti * maxlen=1 73145683Sharti * minklen=4 74177102Sobrien * maxklen=13 75145683Sharti * minchar=46 76145683Sharti * maxchar=95 77145683Sharti * loop=0 78145971Sharti * numiter=4 79145683Sharti * seed= 80145683Sharti */ 81145683Sharti 82145683Shartistatic const signed char keyword_g[] = { 83177102Sobrien 12, 18, 7, 25, 30, 5, -1, -1, -1, 7, 84177102Sobrien -1, 0, 33, 0, 4, -1, -1, 13, 29, 0, 85177102Sobrien -1, 28, -1, 28, -1, 0, -1, 27, 4, 34, 86177102Sobrien -1, -1, -1, 30, 13, 10, -1, -1, 0, 10, 87177102Sobrien 24, -1, -1, -1, 0, 6, 0, 0, -1, 23, 88177102Sobrien -1, -1, -1, 0, -1, 23, -1, -1, 19, 4, 89177102Sobrien -1, 31, 12, 16, -1, 20, 22, 9, 0, -1, 90177102Sobrien -1, 9, 4, 0, 91145683Sharti}; 92145683Sharti 93145683Shartistatic const u_char keyword_T0[] = { 94177102Sobrien 34, 28, 50, 61, 14, 57, 48, 60, 20, 67, 95177102Sobrien 60, 63, 0, 24, 28, 2, 49, 64, 18, 23, 96177102Sobrien 36, 33, 40, 14, 38, 42, 71, 49, 2, 53, 97177102Sobrien 53, 37, 7, 29, 24, 21, 12, 50, 59, 10, 98177102Sobrien 43, 23, 0, 44, 47, 6, 46, 22, 48, 64, 99145683Sharti}; 100145683Sharti 101145683Shartistatic const u_char keyword_T1[] = { 102177102Sobrien 18, 67, 39, 60, 7, 70, 2, 26, 31, 18, 103177102Sobrien 73, 47, 61, 17, 38, 50, 22, 52, 13, 55, 104177102Sobrien 56, 32, 63, 4, 64, 55, 49, 21, 47, 67, 105177102Sobrien 33, 66, 60, 73, 30, 68, 69, 32, 72, 4, 106177102Sobrien 28, 49, 51, 15, 66, 68, 43, 67, 46, 56, 107145683Sharti}; 108145683Sharti 109145683Sharti 110145683Shartiint 111145683Shartikeyword_hash(const u_char *key, size_t len) 112145683Sharti{ 113145683Sharti unsigned f0, f1; 114145683Sharti const u_char *kp = key; 115145683Sharti 116177102Sobrien if (len < 4 || len > 13) 117145683Sharti return -1; 118145683Sharti 119145683Sharti for (f0=f1=0; *kp; ++kp) { 120145683Sharti if (*kp < 46 || *kp > 95) 121145683Sharti return -1; 122145683Sharti f0 += keyword_T0[-46 + *kp]; 123145683Sharti f1 += keyword_T1[-46 + *kp]; 124145683Sharti } 125145683Sharti 126177102Sobrien f0 %= 74; 127177102Sobrien f1 %= 74; 128145683Sharti 129177102Sobrien return (keyword_g[f0] + keyword_g[f1]) % 35; 130145683Sharti} 131