Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(193)

Unified Diff: third_party/sqlite/src/tool/mkkeywordhash.c

Issue 1610963002: Import SQLite 3.10.2. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/sqlite/src/tool/mkautoconfamal.sh ('k') | third_party/sqlite/src/tool/mkopcodec.tcl » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/sqlite/src/tool/mkkeywordhash.c
diff --git a/third_party/sqlite/src/tool/mkkeywordhash.c b/third_party/sqlite/src/tool/mkkeywordhash.c
index 721611f5a36ce8e00b1a106348a17b9dff532c92..003ed7d66eff0debe8492e6c2fed5ca758b8f6ea 100644
--- a/third_party/sqlite/src/tool/mkkeywordhash.c
+++ b/third_party/sqlite/src/tool/mkkeywordhash.c
@@ -277,27 +277,8 @@ static Keyword aKeywordTable[] = {
/* Number of keywords */
static int nKeyword = (sizeof(aKeywordTable)/sizeof(aKeywordTable[0]));
-/* An array to map all upper-case characters into their corresponding
-** lower-case character.
-*/
-const unsigned char sqlite3UpperToLower[] = {
- 0, 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, 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, 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,125,
- 126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
- 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,
- 162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,
- 180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,
- 198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,
- 216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,
- 234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,
- 252,253,254,255
-};
-#define UpperToLower sqlite3UpperToLower
+/* Map all alphabetic characters into the same case */
+#define charMap(X) (0x20|(X))
/*
** Comparision function for two Keyword records
@@ -372,8 +353,8 @@ int main(int argc, char **argv){
assert( p->len<sizeof(p->zOrigName) );
memcpy(p->zOrigName, p->zName, p->len+1);
totalLen += p->len;
- p->hash = (UpperToLower[(int)p->zName[0]]*4) ^
- (UpperToLower[(int)p->zName[p->len-1]]*3) ^ p->len;
+ p->hash = (charMap(p->zName[0])*4) ^
+ (charMap(p->zName[p->len-1])*3) ^ (p->len*1);
p->id = i+1;
}
@@ -481,7 +462,7 @@ int main(int argc, char **argv){
/* Begin generating code */
printf("%s", zHdr);
printf("/* Hash score: %d */\n", bestCount);
- printf("static int keywordCode(const char *z, int n){\n");
+ printf("static int keywordCode(const char *z, int n, int *pType){\n");
printf(" /* zText[] encodes %d bytes of keywords in %d bytes */\n",
totalLen + nKeyword, nChar+1 );
for(i=j=k=0; i<nKeyword; i++){
@@ -585,24 +566,27 @@ int main(int argc, char **argv){
printf("%s };\n", j==0 ? "" : "\n");
printf(" int h, i;\n");
- printf(" if( n<2 ) return TK_ID;\n");
- printf(" h = ((charMap(z[0])*4) ^\n"
- " (charMap(z[n-1])*3) ^\n"
- " n) %% %d;\n", bestSize);
- printf(" for(i=((int)aHash[h])-1; i>=0; i=((int)aNext[i])-1){\n");
- printf(" if( aLen[i]==n &&"
- " sqlite3StrNICmp(&zText[aOffset[i]],z,n)==0 ){\n");
+ printf(" if( n>=2 ){\n");
+ printf(" h = ((charMap(z[0])*4) ^ (charMap(z[n-1])*3) ^ n) %% %d;\n",
+ bestSize);
+ printf(" for(i=((int)aHash[h])-1; i>=0; i=((int)aNext[i])-1){\n");
+ printf(" if( aLen[i]==n &&"
+ " sqlite3StrNICmp(&zText[aOffset[i]],z,n)==0 ){\n");
for(i=0; i<nKeyword; i++){
- printf(" testcase( i==%d ); /* %s */\n",
+ printf(" testcase( i==%d ); /* %s */\n",
i, aKeywordTable[i].zOrigName);
}
- printf(" return aCode[i];\n");
+ printf(" *pType = aCode[i];\n");
+ printf(" break;\n");
+ printf(" }\n");
printf(" }\n");
printf(" }\n");
- printf(" return TK_ID;\n");
+ printf(" return n;\n");
printf("}\n");
printf("int sqlite3KeywordCode(const unsigned char *z, int n){\n");
- printf(" return keywordCode((char*)z, n);\n");
+ printf(" int id = TK_ID;\n");
+ printf(" keywordCode((char*)z, n, &id);\n");
+ printf(" return id;\n");
printf("}\n");
printf("#define SQLITE_N_KEYWORD %d\n", nKeyword);
« no previous file with comments | « third_party/sqlite/src/tool/mkautoconfamal.sh ('k') | third_party/sqlite/src/tool/mkopcodec.tcl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698