diff options
Diffstat (limited to 'libraries/sqlite/win32/keywordhash.h')
-rwxr-xr-x | libraries/sqlite/win32/keywordhash.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/libraries/sqlite/win32/keywordhash.h b/libraries/sqlite/win32/keywordhash.h new file mode 100755 index 0000000..609ff20 --- /dev/null +++ b/libraries/sqlite/win32/keywordhash.h | |||
@@ -0,0 +1,112 @@ | |||
1 | /***** This file contains automatically generated code ****** | ||
2 | ** | ||
3 | ** The code in this file has been automatically generated by | ||
4 | ** | ||
5 | ** $Header: /sqlite/sqlite/tool/mkkeywordhash.c,v 1.31 2007/07/30 18:26:20 rse Exp $ | ||
6 | ** | ||
7 | ** The code in this file implements a function that determines whether | ||
8 | ** or not a given identifier is really an SQL keyword. The same thing | ||
9 | ** might be implemented more directly using a hand-written hash table. | ||
10 | ** But by using this automatically generated code, the size of the code | ||
11 | ** is substantially reduced. This is important for embedded applications | ||
12 | ** on platforms with limited memory. | ||
13 | */ | ||
14 | /* Hash score: 165 */ | ||
15 | static int keywordCode(const char *z, int n){ | ||
16 | /* zText[] encodes 775 bytes of keywords in 526 bytes */ | ||
17 | static const char zText[526] = | ||
18 | "BEFOREIGNOREGEXPLAINSTEADDESCAPEACHECKEYCONSTRAINTERSECTABLEFT" | ||
19 | "HENDATABASELECTRANSACTIONATURALTERAISELSEXCEPTRIGGEREFERENCES" | ||
20 | "UNIQUERYATTACHAVINGROUPDATEMPORARYBEGINNEREINDEXCLUSIVEXISTSBETWEEN" | ||
21 | "OTNULLIKECASCADEFERRABLECASECOLLATECREATECURRENT_DATEDELETEDETACH" | ||
22 | "IMMEDIATEJOINSERTMATCHPLANALYZEPRAGMABORTVALUESVIRTUALIMITWHEN" | ||
23 | "WHERENAMEAFTEREPLACEANDEFAULTAUTOINCREMENTCASTCOLUMNCOMMITCONFLICT" | ||
24 | "CROSSCURRENT_TIMESTAMPRIMARYDEFERREDISTINCTDROPFAILFROMFULLGLOB" | ||
25 | "YIFINTOFFSETISNULLORDERESTRICTOUTERIGHTROLLBACKROWUNIONUSINGVACUUM" | ||
26 | "VIEWINITIALLY"; | ||
27 | static const unsigned char aHash[127] = { | ||
28 | 63, 92, 109, 61, 0, 38, 0, 0, 69, 0, 64, 0, 0, | ||
29 | 102, 4, 65, 7, 0, 108, 72, 103, 99, 0, 22, 0, 0, | ||
30 | 113, 0, 111, 106, 0, 18, 80, 0, 1, 0, 0, 56, 57, | ||
31 | 0, 55, 11, 0, 33, 77, 89, 0, 110, 88, 0, 0, 45, | ||
32 | 0, 90, 54, 0, 20, 0, 114, 34, 19, 0, 10, 97, 28, | ||
33 | 83, 0, 0, 116, 93, 47, 115, 41, 12, 44, 0, 78, 0, | ||
34 | 87, 29, 0, 86, 0, 0, 0, 82, 79, 84, 75, 96, 6, | ||
35 | 14, 95, 0, 68, 0, 21, 76, 98, 27, 0, 112, 67, 104, | ||
36 | 49, 40, 71, 0, 0, 81, 100, 0, 107, 0, 15, 0, 0, | ||
37 | 24, 0, 73, 42, 50, 0, 16, 48, 0, 37, | ||
38 | }; | ||
39 | static const unsigned char aNext[116] = { | ||
40 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, | ||
41 | 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, | ||
42 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, | ||
43 | 17, 0, 0, 0, 36, 39, 0, 0, 25, 0, 0, 31, 0, | ||
44 | 0, 0, 43, 52, 0, 0, 0, 53, 0, 0, 0, 0, 0, | ||
45 | 0, 0, 0, 0, 51, 0, 0, 0, 0, 26, 0, 8, 46, | ||
46 | 2, 0, 0, 0, 0, 0, 0, 0, 3, 58, 66, 0, 13, | ||
47 | 0, 91, 85, 0, 94, 0, 74, 0, 0, 62, 0, 35, 101, | ||
48 | 0, 0, 105, 23, 30, 60, 70, 0, 0, 59, 0, 0, | ||
49 | }; | ||
50 | static const unsigned char aLen[116] = { | ||
51 | 6, 7, 3, 6, 6, 7, 7, 3, 4, 6, 4, 5, 3, | ||
52 | 10, 9, 5, 4, 4, 3, 8, 2, 6, 11, 2, 7, 5, | ||
53 | 5, 4, 6, 7, 10, 6, 5, 6, 6, 5, 6, 4, 9, | ||
54 | 2, 5, 5, 7, 5, 9, 6, 7, 7, 3, 4, 4, 7, | ||
55 | 3, 10, 4, 7, 6, 12, 6, 6, 9, 4, 6, 5, 4, | ||
56 | 7, 6, 5, 6, 7, 5, 4, 5, 6, 5, 7, 3, 7, | ||
57 | 13, 2, 2, 4, 6, 6, 8, 5, 17, 12, 7, 8, 8, | ||
58 | 2, 4, 4, 4, 4, 4, 2, 2, 4, 6, 2, 3, 6, | ||
59 | 5, 8, 5, 5, 8, 3, 5, 5, 6, 4, 9, 3, | ||
60 | }; | ||
61 | static const unsigned short int aOffset[116] = { | ||
62 | 0, 2, 2, 6, 10, 13, 18, 23, 25, 26, 31, 33, 37, | ||
63 | 40, 47, 55, 58, 61, 63, 65, 70, 71, 76, 85, 86, 91, | ||
64 | 95, 99, 102, 107, 113, 123, 126, 131, 136, 141, 144, 148, 148, | ||
65 | 152, 157, 160, 164, 166, 169, 177, 183, 189, 189, 192, 195, 199, | ||
66 | 200, 204, 214, 218, 225, 231, 243, 249, 255, 264, 266, 272, 277, | ||
67 | 279, 286, 291, 296, 302, 308, 313, 317, 320, 326, 330, 337, 339, | ||
68 | 346, 348, 350, 359, 363, 369, 375, 383, 388, 388, 404, 411, 418, | ||
69 | 419, 426, 430, 434, 438, 442, 445, 447, 449, 452, 452, 455, 458, | ||
70 | 464, 468, 476, 480, 485, 493, 496, 501, 506, 512, 516, 521, | ||
71 | }; | ||
72 | static const unsigned char aCode[116] = { | ||
73 | TK_BEFORE, TK_FOREIGN, TK_FOR, TK_IGNORE, TK_LIKE_KW, | ||
74 | TK_EXPLAIN, TK_INSTEAD, TK_ADD, TK_DESC, TK_ESCAPE, | ||
75 | TK_EACH, TK_CHECK, TK_KEY, TK_CONSTRAINT, TK_INTERSECT, | ||
76 | TK_TABLE, TK_JOIN_KW, TK_THEN, TK_END, TK_DATABASE, | ||
77 | TK_AS, TK_SELECT, TK_TRANSACTION,TK_ON, TK_JOIN_KW, | ||
78 | TK_ALTER, TK_RAISE, TK_ELSE, TK_EXCEPT, TK_TRIGGER, | ||
79 | TK_REFERENCES, TK_UNIQUE, TK_QUERY, TK_ATTACH, TK_HAVING, | ||
80 | TK_GROUP, TK_UPDATE, TK_TEMP, TK_TEMP, TK_OR, | ||
81 | TK_BEGIN, TK_JOIN_KW, TK_REINDEX, TK_INDEX, TK_EXCLUSIVE, | ||
82 | TK_EXISTS, TK_BETWEEN, TK_NOTNULL, TK_NOT, TK_NULL, | ||
83 | TK_LIKE_KW, TK_CASCADE, TK_ASC, TK_DEFERRABLE, TK_CASE, | ||
84 | TK_COLLATE, TK_CREATE, TK_CTIME_KW, TK_DELETE, TK_DETACH, | ||
85 | TK_IMMEDIATE, TK_JOIN, TK_INSERT, TK_MATCH, TK_PLAN, | ||
86 | TK_ANALYZE, TK_PRAGMA, TK_ABORT, TK_VALUES, TK_VIRTUAL, | ||
87 | TK_LIMIT, TK_WHEN, TK_WHERE, TK_RENAME, TK_AFTER, | ||
88 | TK_REPLACE, TK_AND, TK_DEFAULT, TK_AUTOINCR, TK_TO, | ||
89 | TK_IN, TK_CAST, TK_COLUMNKW, TK_COMMIT, TK_CONFLICT, | ||
90 | TK_JOIN_KW, TK_CTIME_KW, TK_CTIME_KW, TK_PRIMARY, TK_DEFERRED, | ||
91 | TK_DISTINCT, TK_IS, TK_DROP, TK_FAIL, TK_FROM, | ||
92 | TK_JOIN_KW, TK_LIKE_KW, TK_BY, TK_IF, TK_INTO, | ||
93 | TK_OFFSET, TK_OF, TK_SET, TK_ISNULL, TK_ORDER, | ||
94 | TK_RESTRICT, TK_JOIN_KW, TK_JOIN_KW, TK_ROLLBACK, TK_ROW, | ||
95 | TK_UNION, TK_USING, TK_VACUUM, TK_VIEW, TK_INITIALLY, | ||
96 | TK_ALL, | ||
97 | }; | ||
98 | int h, i; | ||
99 | if( n<2 ) return TK_ID; | ||
100 | h = ((charMap(z[0])*4) ^ | ||
101 | (charMap(z[n-1])*3) ^ | ||
102 | n) % 127; | ||
103 | for(i=((int)aHash[h])-1; i>=0; i=((int)aNext[i])-1){ | ||
104 | if( aLen[i]==n && sqlite3StrNICmp(&zText[aOffset[i]],z,n)==0 ){ | ||
105 | return aCode[i]; | ||
106 | } | ||
107 | } | ||
108 | return TK_ID; | ||
109 | } | ||
110 | int sqlite3KeywordCode(const unsigned char *z, int n){ | ||
111 | return keywordCode((char*)z, n); | ||
112 | } | ||