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

Side by Side Diff: third_party/sqlite/src/ext/fts3/fts3_icu.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 ** 2007 June 22 2 ** 2007 June 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 file implements a tokenizer for fts3 based on the ICU library. 12 ** This file implements a tokenizer for fts3 based on the ICU library.
13 **
14 ** $Id: fts3_icu.c,v 1.3 2008/09/01 18:34:20 danielk1977 Exp $
15 */ 13 */
16 14 #include "fts3Int.h"
17 #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) 15 #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3)
18 #ifdef SQLITE_ENABLE_ICU 16 #ifdef SQLITE_ENABLE_ICU
19 17
20 #include <assert.h> 18 #include <assert.h>
21 #include <string.h> 19 #include <string.h>
22 #include "fts3_tokenizer.h" 20 #include "fts3_tokenizer.h"
23 21
24 #include <unicode/ubrk.h> 22 #include <unicode/ubrk.h>
25 #include <unicode/ucol.h> 23 #include <unicode/ucol.h>
26 #include <unicode/ustring.h> 24 #include <unicode/ustring.h>
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 const int32_t opt = U_FOLD_CASE_DEFAULT; 103 const int32_t opt = U_FOLD_CASE_DEFAULT;
106 UErrorCode status = U_ZERO_ERROR; 104 UErrorCode status = U_ZERO_ERROR;
107 int nChar; 105 int nChar;
108 106
109 UChar32 c; 107 UChar32 c;
110 int iInput = 0; 108 int iInput = 0;
111 int iOut = 0; 109 int iOut = 0;
112 110
113 *ppCursor = 0; 111 *ppCursor = 0;
114 112
115 if( nInput<0 ){ 113 if( zInput==0 ){
114 nInput = 0;
115 zInput = "";
116 }else if( nInput<0 ){
116 nInput = strlen(zInput); 117 nInput = strlen(zInput);
117 } 118 }
118 nChar = nInput+1; 119 nChar = nInput+1;
119 pCsr = (IcuCursor *)sqlite3_malloc( 120 pCsr = (IcuCursor *)sqlite3_malloc(
120 sizeof(IcuCursor) + /* IcuCursor */ 121 sizeof(IcuCursor) + /* IcuCursor */
121 (nChar+1) * sizeof(int) + /* IcuCursor.aOffset[] */ 122 ((nChar+3)&~3) * sizeof(UChar) + /* IcuCursor.aChar[] */
122 nChar * sizeof(UChar) /* IcuCursor.aChar[] */ 123 (nChar+1) * sizeof(int) /* IcuCursor.aOffset[] */
123 ); 124 );
124 if( !pCsr ){ 125 if( !pCsr ){
125 return SQLITE_NOMEM; 126 return SQLITE_NOMEM;
126 } 127 }
127 memset(pCsr, 0, sizeof(IcuCursor)); 128 memset(pCsr, 0, sizeof(IcuCursor));
128 pCsr->aOffset = (int *)&pCsr[1]; 129 pCsr->aChar = (UChar *)&pCsr[1];
129 pCsr->aChar = (UChar *)&pCsr->aOffset[nChar+1]; 130 pCsr->aOffset = (int *)&pCsr->aChar[(nChar+3)&~3];
130 131
131 pCsr->aOffset[iOut] = iInput; 132 pCsr->aOffset[iOut] = iInput;
132 U8_NEXT(zInput, iInput, nInput, c); 133 U8_NEXT(zInput, iInput, nInput, c);
133 while( c>0 ){ 134 while( c>0 ){
134 int isError = 0; 135 int isError = 0;
135 c = u_foldCase(c, opt); 136 c = u_foldCase(c, opt);
136 U16_APPEND(pCsr->aChar, iOut, nChar, c, isError); 137 U16_APPEND(pCsr->aChar, iOut, nChar, c, isError);
137 if( isError ){ 138 if( isError ){
138 sqlite3_free(pCsr); 139 sqlite3_free(pCsr);
139 return SQLITE_ERROR; 140 return SQLITE_ERROR;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 ** Set *ppModule to point at the implementation of the ICU tokenizer. 252 ** Set *ppModule to point at the implementation of the ICU tokenizer.
252 */ 253 */
253 void sqlite3Fts3IcuTokenizerModule( 254 void sqlite3Fts3IcuTokenizerModule(
254 sqlite3_tokenizer_module const**ppModule 255 sqlite3_tokenizer_module const**ppModule
255 ){ 256 ){
256 *ppModule = &icuTokenizerModule; 257 *ppModule = &icuTokenizerModule;
257 } 258 }
258 259
259 #endif /* defined(SQLITE_ENABLE_ICU) */ 260 #endif /* defined(SQLITE_ENABLE_ICU) */
260 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ 261 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698