Back to index

lightning-sunbird  0.9+nobinonly
keywordhash.h
Go to the documentation of this file.
00001 /* Hash score: 159 */
00002 static int keywordCode(const char *z, int n){
00003   static const char zText[537] =
00004     "ABORTABLEFTEMPORARYADDATABASELECTHENDEFAULTRANSACTIONATURALTER"
00005     "AISEACHECKEYAFTEREFERENCESCAPELSEXCEPTRIGGEREGEXPLAINITIALLYANALYZE"
00006     "XCLUSIVEXISTSTATEMENTANDEFERRABLEATTACHAVINGLOBEFOREIGNOREINDEX"
00007     "AUTOINCREMENTBEGINNERENAMEBETWEENOTNULLIKEBYCASCADEFERREDELETE"
00008     "CASECASTCOLLATECOLUMNCOMMITCONFLICTCONSTRAINTERSECTCREATECROSS"
00009     "CURRENT_DATECURRENT_TIMESTAMPLANDESCDETACHDISTINCTDROPRAGMATCH"
00010     "FAILIMITFROMFULLGROUPDATEIFIMMEDIATEINSERTINSTEADINTOFFSETISNULL"
00011     "JOINORDEREPLACEOUTERESTRICTPRIMARYQUERYRIGHTROLLBACKROWHENUNION"
00012     "UNIQUEUSINGVACUUMVALUESVIEWHERE";
00013   static const unsigned char aHash[127] = {
00014       92,  80, 107,  91,   0,   4,   0,   0, 114,   0,  83,   0,   0,
00015       95,  44,  76,  93,   0, 106, 109,  97,  90,   0,  10,   0,   0,
00016      113,   0, 110, 103,   0,  28,  48,   0,  41,   0,   0,  65,  71,
00017        0,  63,  19,   0, 105,  36, 104,   0, 108,  74,   0,   0,  33,
00018        0,  61,  37,   0,   8,   0, 115,  38,  12,   0,  77,  40,  25,
00019       66,   0,   0,  31,  81,  53,  30,  50,  20,  88,   0,  34,   0,
00020       75,  26,   0,  72,   0,   0,   0,  64,  47,  67,  22,  87,  29,
00021       69,  86,   0,   1,   0,   9, 101,  58,  18,   0, 112,  82,  99,
00022       54,   6,  85,   0,   0,  49,  94,   0, 102,   0,  70,   0,   0,
00023       15,   0, 116,  51,  56,   0,   2,  55,   0, 111,
00024   };
00025   static const unsigned char aNext[116] = {
00026        0,   0,   0,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,
00027        0,   0,   0,   0,   0,   0,   0,   0,  17,   0,   0,   0,   0,
00028        0,  11,   0,   0,   0,   0,   5,  13,   0,   7,   0,   0,   0,
00029        0,   0,   0,   0,   0,   0,   0,  43,   0,   0,   0,   0,   0,
00030        0,   0,  16,   0,  23,  52,   0,   0,   0,   0,  45,   0,  59,
00031        0,   0,   0,   0,   0,   0,   0,   0,  73,  42,   0,  24,  60,
00032       21,   0,  79,   0,   0,  68,   0,   0,  84,  46,   0,   0,   0,
00033        0,   0,   0,   0,   0,  39,  96,  98,   0,   0, 100,   0,  32,
00034        0,  14,  27,  78,   0,  57,  89,   0,  35,   0,  62,   0,
00035   };
00036   static const unsigned char aLen[116] = {
00037        5,   5,   4,   4,   9,   2,   3,   8,   2,   6,   4,   3,   7,
00038       11,   2,   7,   5,   5,   4,   5,   3,   5,  10,   6,   4,   6,
00039        7,   6,   7,   9,   3,   7,   9,   6,   9,   3,  10,   6,   6,
00040        4,   6,   3,   7,   6,   7,   5,  13,   2,   2,   5,   5,   6,
00041        7,   3,   7,   4,   4,   2,   7,   3,   8,   6,   4,   4,   7,
00042        6,   6,   8,  10,   9,   6,   5,  12,  12,  17,   4,   4,   6,
00043        8,   2,   4,   6,   5,   4,   5,   4,   4,   5,   6,   2,   9,
00044        6,   7,   4,   2,   6,   3,   6,   4,   5,   7,   5,   8,   7,
00045        5,   5,   8,   3,   4,   5,   6,   5,   6,   6,   4,   5,
00046   };
00047   static const unsigned short int aOffset[116] = {
00048        0,   4,   7,  10,  10,  14,  19,  21,  26,  27,  32,  34,  36,
00049       42,  51,  52,  57,  61,  65,  67,  71,  74,  78,  86,  91,  94,
00050       99, 105, 108, 113, 118, 122, 128, 136, 141, 150, 152, 162, 167,
00051      172, 175, 177, 177, 181, 185, 187, 192, 194, 196, 205, 208, 212,
00052      218, 224, 224, 227, 230, 234, 236, 237, 241, 248, 254, 258, 262,
00053      269, 275, 281, 289, 296, 305, 311, 316, 328, 328, 344, 348, 352,
00054      358, 359, 366, 369, 373, 378, 381, 386, 390, 394, 397, 403, 405,
00055      414, 420, 427, 430, 430, 433, 436, 442, 446, 450, 457, 461, 469,
00056      476, 481, 486, 494, 496, 500, 505, 511, 516, 522, 528, 531,
00057   };
00058   static const unsigned char aCode[116] = {
00059     TK_ABORT,      TK_TABLE,      TK_JOIN_KW,    TK_TEMP,       TK_TEMP,       
00060     TK_OR,         TK_ADD,        TK_DATABASE,   TK_AS,         TK_SELECT,     
00061     TK_THEN,       TK_END,        TK_DEFAULT,    TK_TRANSACTION,TK_ON,         
00062     TK_JOIN_KW,    TK_ALTER,      TK_RAISE,      TK_EACH,       TK_CHECK,      
00063     TK_KEY,        TK_AFTER,      TK_REFERENCES, TK_ESCAPE,     TK_ELSE,       
00064     TK_EXCEPT,     TK_TRIGGER,    TK_LIKE_KW,    TK_EXPLAIN,    TK_INITIALLY,  
00065     TK_ALL,        TK_ANALYZE,    TK_EXCLUSIVE,  TK_EXISTS,     TK_STATEMENT,  
00066     TK_AND,        TK_DEFERRABLE, TK_ATTACH,     TK_HAVING,     TK_LIKE_KW,    
00067     TK_BEFORE,     TK_FOR,        TK_FOREIGN,    TK_IGNORE,     TK_REINDEX,    
00068     TK_INDEX,      TK_AUTOINCR,   TK_TO,         TK_IN,         TK_BEGIN,      
00069     TK_JOIN_KW,    TK_RENAME,     TK_BETWEEN,    TK_NOT,        TK_NOTNULL,    
00070     TK_NULL,       TK_LIKE_KW,    TK_BY,         TK_CASCADE,    TK_ASC,        
00071     TK_DEFERRED,   TK_DELETE,     TK_CASE,       TK_CAST,       TK_COLLATE,    
00072     TK_COLUMNKW,   TK_COMMIT,     TK_CONFLICT,   TK_CONSTRAINT, TK_INTERSECT,  
00073     TK_CREATE,     TK_JOIN_KW,    TK_CTIME_KW,   TK_CTIME_KW,   TK_CTIME_KW,   
00074     TK_PLAN,       TK_DESC,       TK_DETACH,     TK_DISTINCT,   TK_IS,         
00075     TK_DROP,       TK_PRAGMA,     TK_MATCH,      TK_FAIL,       TK_LIMIT,      
00076     TK_FROM,       TK_JOIN_KW,    TK_GROUP,      TK_UPDATE,     TK_IF,         
00077     TK_IMMEDIATE,  TK_INSERT,     TK_INSTEAD,    TK_INTO,       TK_OF,         
00078     TK_OFFSET,     TK_SET,        TK_ISNULL,     TK_JOIN,       TK_ORDER,      
00079     TK_REPLACE,    TK_JOIN_KW,    TK_RESTRICT,   TK_PRIMARY,    TK_QUERY,      
00080     TK_JOIN_KW,    TK_ROLLBACK,   TK_ROW,        TK_WHEN,       TK_UNION,      
00081     TK_UNIQUE,     TK_USING,      TK_VACUUM,     TK_VALUES,     TK_VIEW,       
00082     TK_WHERE,      
00083   };
00084   int h, i;
00085   if( n<2 ) return TK_ID;
00086   h = ((charMap(z[0])*4) ^
00087       (charMap(z[n-1])*3) ^
00088       n) % 127;
00089   for(i=((int)aHash[h])-1; i>=0; i=((int)aNext[i])-1){
00090     if( aLen[i]==n && sqlite3StrNICmp(&zText[aOffset[i]],z,n)==0 ){
00091       return aCode[i];
00092     }
00093   }
00094   return TK_ID;
00095 }
00096 int sqlite3KeywordCode(const unsigned char *z, int n){
00097   return keywordCode((char*)z, n);
00098 }