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

Side by Side Diff: third_party/sqlite/src/ext/fts3/fts3_hash.c

Issue 901033002: Import SQLite 3.8.7.4. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Chromium changes to support SQLite 3.8.7.4. Created 5 years, 10 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 ** 2001 September 22 2 ** 2001 September 22
3 ** 3 **
4 ** The author disclaims copyright to this source code. In place of 4 ** The author disclaims copyright to this source code. In place of
5 ** a legal notice, here is a blessing: 5 ** a legal notice, here is a blessing:
6 ** 6 **
7 ** May you do good and not evil. 7 ** May you do good and not evil.
8 ** May you find forgiveness for yourself and forgive others. 8 ** May you find forgiveness for yourself and forgive others.
9 ** May you share freely, never taking more than you give. 9 ** May you share freely, never taking more than you give.
10 ** 10 **
11 ************************************************************************* 11 *************************************************************************
12 ** This is the implementation of generic hash-tables used in SQLite. 12 ** This is the implementation of generic hash-tables used in SQLite.
13 ** We've modified it slightly to serve as a standalone hash table 13 ** We've modified it slightly to serve as a standalone hash table
14 ** implementation for the full-text indexing module. 14 ** implementation for the full-text indexing module.
15 */ 15 */
16 16
17 /* 17 /*
18 ** The code in this file is only compiled if: 18 ** The code in this file is only compiled if:
19 ** 19 **
20 ** * The FTS3 module is being built as an extension 20 ** * The FTS3 module is being built as an extension
21 ** (in which case SQLITE_CORE is not defined), or 21 ** (in which case SQLITE_CORE is not defined), or
22 ** 22 **
23 ** * The FTS3 module is being built into the core of 23 ** * The FTS3 module is being built into the core of
24 ** SQLite (in which case SQLITE_ENABLE_FTS3 is defined). 24 ** SQLite (in which case SQLITE_ENABLE_FTS3 is defined).
25 */ 25 */
26 #include "fts3Int.h"
26 #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) 27 #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3)
27 28
28 #include <assert.h> 29 #include <assert.h>
29 #include <stdlib.h> 30 #include <stdlib.h>
30 #include <string.h> 31 #include <string.h>
31 32
32 #include "sqlite3.h"
33 #include "fts3_hash.h" 33 #include "fts3_hash.h"
34 34
35 /* 35 /*
36 ** Malloc and Free functions 36 ** Malloc and Free functions
37 */ 37 */
38 static void *fts3HashMalloc(int n){ 38 static void *fts3HashMalloc(int n){
39 void *p = sqlite3_malloc(n); 39 void *p = sqlite3_malloc(n);
40 if( p ){ 40 if( p ){
41 memset(p, 0, n); 41 memset(p, 0, n);
42 } 42 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 elem = next_elem; 89 elem = next_elem;
90 } 90 }
91 pH->count = 0; 91 pH->count = 0;
92 } 92 }
93 93
94 /* 94 /*
95 ** Hash and comparison functions when the mode is FTS3_HASH_STRING 95 ** Hash and comparison functions when the mode is FTS3_HASH_STRING
96 */ 96 */
97 static int fts3StrHash(const void *pKey, int nKey){ 97 static int fts3StrHash(const void *pKey, int nKey){
98 const char *z = (const char *)pKey; 98 const char *z = (const char *)pKey;
99 int h = 0; 99 unsigned h = 0;
100 if( nKey<=0 ) nKey = (int) strlen(z); 100 if( nKey<=0 ) nKey = (int) strlen(z);
101 while( nKey > 0 ){ 101 while( nKey > 0 ){
102 h = (h<<3) ^ h ^ *z++; 102 h = (h<<3) ^ h ^ *z++;
103 nKey--; 103 nKey--;
104 } 104 }
105 return h & 0x7fffffff; 105 return (int)(h & 0x7fffffff);
106 } 106 }
107 static int fts3StrCompare(const void *pKey1, int n1, const void *pKey2, int n2){ 107 static int fts3StrCompare(const void *pKey1, int n1, const void *pKey2, int n2){
108 if( n1!=n2 ) return 1; 108 if( n1!=n2 ) return 1;
109 return strncmp((const char*)pKey1,(const char*)pKey2,n1); 109 return strncmp((const char*)pKey1,(const char*)pKey2,n1);
110 } 110 }
111 111
112 /* 112 /*
113 ** Hash and comparison functions when the mode is FTS3_HASH_BINARY 113 ** Hash and comparison functions when the mode is FTS3_HASH_BINARY
114 */ 114 */
115 static int fts3BinHash(const void *pKey, int nKey){ 115 static int fts3BinHash(const void *pKey, int nKey){
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 pH->count++; 374 pH->count++;
375 assert( pH->htsize>0 ); 375 assert( pH->htsize>0 );
376 assert( (pH->htsize & (pH->htsize-1))==0 ); 376 assert( (pH->htsize & (pH->htsize-1))==0 );
377 h = hraw & (pH->htsize-1); 377 h = hraw & (pH->htsize-1);
378 fts3HashInsertElement(pH, &pH->ht[h], new_elem); 378 fts3HashInsertElement(pH, &pH->ht[h], new_elem);
379 new_elem->data = data; 379 new_elem->data = data;
380 return 0; 380 return 0;
381 } 381 }
382 382
383 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ 383 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698