wasCSharpSQLite – Blame information for rev
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | namespace Community.CsharpSqlite |
2 | { |
||
3 | using sqlite3_value = Sqlite3.Mem; |
||
4 | using System; |
||
5 | |||
6 | public partial class Sqlite3 |
||
7 | { |
||
8 | /* |
||
9 | ** 2010 February 23 |
||
10 | ** |
||
11 | ** The author disclaims copyright to this source code. In place of |
||
12 | ** a legal notice, here is a blessing: |
||
13 | ** |
||
14 | ** May you do good and not evil. |
||
15 | ** May you find forgiveness for yourself and forgive others. |
||
16 | ** May you share freely, never taking more than you give. |
||
17 | ** |
||
18 | ************************************************************************* |
||
19 | ** |
||
20 | ** This file implements routines used to report what compile-time options |
||
21 | ** SQLite was built with. |
||
22 | ************************************************************************* |
||
23 | ** Included in SQLite3 port to C#-SQLite; 2008 Noah B Hart |
||
24 | ** C#-SQLite is an independent reimplementation of the SQLite software library |
||
25 | ** |
||
26 | ** SQLITE_SOURCE_ID: 2011-01-28 17:03:50 ed759d5a9edb3bba5f48f243df47be29e3fe8cd7 |
||
27 | ** |
||
28 | ************************************************************************* |
||
29 | */ |
||
30 | |||
31 | #if !SQLITE_OMIT_COMPILEOPTION_DIAGS |
||
32 | |||
33 | //#include "sqliteInt.h" |
||
34 | |||
35 | /* |
||
36 | ** An array of names of all compile-time options. This array should |
||
37 | ** be sorted A-Z. |
||
38 | ** |
||
39 | ** This array looks large, but in a typical installation actually uses |
||
40 | ** only a handful of compile-time options, so most times this array is usually |
||
41 | ** rather short and uses little memory space. |
||
42 | */ |
||
43 | static string[] azCompileOpt = { |
||
44 | |||
45 | /* These macros are provided to "stringify" the value of the define |
||
46 | ** for those options in which the value is meaningful. */ |
||
47 | //#define CTIMEOPT_VAL_(opt) #opt |
||
48 | //#define CTIMEOPT_VAL(opt) CTIMEOPT_VAL_(opt) |
||
49 | |||
50 | #if SQLITE_32BIT_ROWID |
||
51 | "32BIT_ROWID", |
||
52 | #endif |
||
53 | #if SQLITE_4_BYTE_ALIGNED_MALLOC |
||
54 | "4_BYTE_ALIGNED_MALLOC", |
||
55 | #endif |
||
56 | #if SQLITE_CASE_SENSITIVE_LIKE |
||
57 | "CASE_SENSITIVE_LIKE", |
||
58 | #endif |
||
59 | #if SQLITE_CHECK_PAGES |
||
60 | "CHECK_PAGES", |
||
61 | #endif |
||
62 | #if SQLITE_COVERAGE_TEST |
||
63 | "COVERAGE_TEST", |
||
64 | #endif |
||
65 | #if SQLITE_DEBUG |
||
66 | "DEBUG", |
||
67 | #endif |
||
68 | #if SQLITE_DEFAULT_LOCKING_MODE |
||
69 | "DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE), |
||
70 | #endif |
||
71 | #if SQLITE_DISABLE_DIRSYNC |
||
72 | "DISABLE_DIRSYNC", |
||
73 | #endif |
||
74 | #if SQLITE_DISABLE_LFS |
||
75 | "DISABLE_LFS", |
||
76 | #endif |
||
77 | #if SQLITE_ENABLE_ATOMIC_WRITE |
||
78 | "ENABLE_ATOMIC_WRITE", |
||
79 | #endif |
||
80 | #if SQLITE_ENABLE_CEROD |
||
81 | "ENABLE_CEROD", |
||
82 | #endif |
||
83 | #if SQLITE_ENABLE_COLUMN_METADATA |
||
84 | "ENABLE_COLUMN_METADATA", |
||
85 | #endif |
||
86 | #if SQLITE_ENABLE_EXPENSIVE_ASSERT |
||
87 | "ENABLE_EXPENSIVE_ASSERT", |
||
88 | #endif |
||
89 | #if SQLITE_ENABLE_FTS1 |
||
90 | "ENABLE_FTS1", |
||
91 | #endif |
||
92 | #if SQLITE_ENABLE_FTS2 |
||
93 | "ENABLE_FTS2", |
||
94 | #endif |
||
95 | #if SQLITE_ENABLE_FTS3 |
||
96 | "ENABLE_FTS3", |
||
97 | #endif |
||
98 | #if SQLITE_ENABLE_FTS3_PARENTHESIS |
||
99 | "ENABLE_FTS3_PARENTHESIS", |
||
100 | #endif |
||
101 | #if SQLITE_ENABLE_FTS4 |
||
102 | "ENABLE_FTS4", |
||
103 | #endif |
||
104 | #if SQLITE_ENABLE_ICU |
||
105 | "ENABLE_ICU", |
||
106 | #endif |
||
107 | #if SQLITE_ENABLE_IOTRACE |
||
108 | "ENABLE_IOTRACE", |
||
109 | #endif |
||
110 | #if SQLITE_ENABLE_LOAD_EXTENSION |
||
111 | "ENABLE_LOAD_EXTENSION", |
||
112 | #endif |
||
113 | #if SQLITE_ENABLE_LOCKING_STYLE |
||
114 | "ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE), |
||
115 | #endif |
||
116 | #if SQLITE_ENABLE_MEMORY_MANAGEMENT |
||
117 | "ENABLE_MEMORY_MANAGEMENT", |
||
118 | #endif |
||
119 | #if SQLITE_ENABLE_MEMSYS3 |
||
120 | "ENABLE_MEMSYS3", |
||
121 | #endif |
||
122 | #if SQLITE_ENABLE_MEMSYS5 |
||
123 | "ENABLE_MEMSYS5", |
||
124 | #endif |
||
125 | #if SQLITE_ENABLE_OVERSIZE_CELL_CHECK |
||
126 | "ENABLE_OVERSIZE_CELL_CHECK", |
||
127 | #endif |
||
128 | #if SQLITE_ENABLE_RTREE |
||
129 | "ENABLE_RTREE", |
||
130 | #endif |
||
131 | #if SQLITE_ENABLE_STAT2 |
||
132 | "ENABLE_STAT2", |
||
133 | #endif |
||
134 | #if SQLITE_ENABLE_UNLOCK_NOTIFY |
||
135 | "ENABLE_UNLOCK_NOTIFY", |
||
136 | #endif |
||
137 | #if SQLITE_ENABLE_UPDATE_DELETE_LIMIT |
||
138 | "ENABLE_UPDATE_DELETE_LIMIT", |
||
139 | #endif |
||
140 | #if SQLITE_HAS_CODEC |
||
141 | "HAS_CODEC", |
||
142 | #endif |
||
143 | ////#if SQLITE_HAVE_ISNAN |
||
144 | ////"HAVE_ISNAN", |
||
145 | ////#endif |
||
146 | #if SQLITE_HOMEGROWN_RECURSIVE_MUTEX |
||
147 | "HOMEGROWN_RECURSIVE_MUTEX", |
||
148 | #endif |
||
149 | #if SQLITE_IGNORE_AFP_LOCK_ERRORS |
||
150 | "IGNORE_AFP_LOCK_ERRORS", |
||
151 | #endif |
||
152 | #if SQLITE_IGNORE_FLOCK_LOCK_ERRORS |
||
153 | "IGNORE_FLOCK_LOCK_ERRORS", |
||
154 | #endif |
||
155 | #if SQLITE_INT64_TYPE |
||
156 | "INT64_TYPE", |
||
157 | #endif |
||
158 | #if SQLITE_LOCK_TRACE |
||
159 | "LOCK_TRACE", |
||
160 | #endif |
||
161 | #if SQLITE_MEMDEBUG |
||
162 | "MEMDEBUG", |
||
163 | #endif |
||
164 | #if SQLITE_MIXED_ENDIAN_64BIT_FLOAT |
||
165 | "MIXED_ENDIAN_64BIT_FLOAT", |
||
166 | #endif |
||
167 | #if SQLITE_NO_SYNC |
||
168 | "NO_SYNC", |
||
169 | #endif |
||
170 | #if SQLITE_OMIT_ALTERTABLE |
||
171 | "OMIT_ALTERTABLE", |
||
172 | #endif |
||
173 | #if SQLITE_OMIT_ANALYZE |
||
174 | "OMIT_ANALYZE", |
||
175 | #endif |
||
176 | #if SQLITE_OMIT_ATTACH |
||
177 | "OMIT_ATTACH", |
||
178 | #endif |
||
179 | #if SQLITE_OMIT_AUTHORIZATION |
||
180 | "OMIT_AUTHORIZATION", |
||
181 | #endif |
||
182 | #if SQLITE_OMIT_AUTOINCREMENT |
||
183 | "OMIT_AUTOINCREMENT", |
||
184 | #endif |
||
185 | #if SQLITE_OMIT_AUTOINIT |
||
186 | "OMIT_AUTOINIT", |
||
187 | #endif |
||
188 | #if SQLITE_OMIT_AUTOMATIC_INDEX |
||
189 | "OMIT_AUTOMATIC_INDEX", |
||
190 | #endif |
||
191 | #if SQLITE_OMIT_AUTORESET |
||
192 | "OMIT_AUTORESET", |
||
193 | #endif |
||
194 | #if SQLITE_OMIT_AUTOVACUUM |
||
195 | "OMIT_AUTOVACUUM", |
||
196 | #endif |
||
197 | #if SQLITE_OMIT_BETWEEN_OPTIMIZATION |
||
198 | "OMIT_BETWEEN_OPTIMIZATION", |
||
199 | #endif |
||
200 | #if SQLITE_OMIT_BLOB_LITERAL |
||
201 | "OMIT_BLOB_LITERAL", |
||
202 | #endif |
||
203 | #if SQLITE_OMIT_BTREECOUNT |
||
204 | "OMIT_BTREECOUNT", |
||
205 | #endif |
||
206 | #if SQLITE_OMIT_BUILTIN_TEST |
||
207 | "OMIT_BUILTIN_TEST", |
||
208 | #endif |
||
209 | #if SQLITE_OMIT_CAST |
||
210 | "OMIT_CAST", |
||
211 | #endif |
||
212 | #if SQLITE_OMIT_CHECK |
||
213 | "OMIT_CHECK", |
||
214 | #endif |
||
215 | /* // redundant |
||
216 | ** #if SQLITE_OMIT_COMPILEOPTION_DIAGS |
||
217 | ** "OMIT_COMPILEOPTION_DIAGS", |
||
218 | ** #endif |
||
219 | */ |
||
220 | #if SQLITE_OMIT_COMPLETE |
||
221 | "OMIT_COMPLETE", |
||
222 | #endif |
||
223 | #if SQLITE_OMIT_COMPOUND_SELECT |
||
224 | "OMIT_COMPOUND_SELECT", |
||
225 | #endif |
||
226 | #if SQLITE_OMIT_DATETIME_FUNCS |
||
227 | "OMIT_DATETIME_FUNCS", |
||
228 | #endif |
||
229 | #if SQLITE_OMIT_DECLTYPE |
||
230 | "OMIT_DECLTYPE", |
||
231 | #endif |
||
232 | #if SQLITE_OMIT_DEPRECATED |
||
233 | "OMIT_DEPRECATED", |
||
234 | #endif |
||
235 | #if SQLITE_OMIT_DISKIO |
||
236 | "OMIT_DISKIO", |
||
237 | #endif |
||
238 | #if SQLITE_OMIT_EXPLAIN |
||
239 | "OMIT_EXPLAIN", |
||
240 | #endif |
||
241 | #if SQLITE_OMIT_FLAG_PRAGMAS |
||
242 | "OMIT_FLAG_PRAGMAS", |
||
243 | #endif |
||
244 | #if SQLITE_OMIT_FLOATING_POINT |
||
245 | "OMIT_FLOATING_POINT", |
||
246 | #endif |
||
247 | #if SQLITE_OMIT_FOREIGN_KEY |
||
248 | "OMIT_FOREIGN_KEY", |
||
249 | #endif |
||
250 | #if SQLITE_OMIT_GET_TABLE |
||
251 | "OMIT_GET_TABLE", |
||
252 | #endif |
||
253 | #if SQLITE_OMIT_INCRBLOB |
||
254 | "OMIT_INCRBLOB", |
||
255 | #endif |
||
256 | #if SQLITE_OMIT_INTEGRITY_CHECK |
||
257 | "OMIT_INTEGRITY_CHECK", |
||
258 | #endif |
||
259 | #if SQLITE_OMIT_LIKE_OPTIMIZATION |
||
260 | "OMIT_LIKE_OPTIMIZATION", |
||
261 | #endif |
||
262 | #if SQLITE_OMIT_LOAD_EXTENSION |
||
263 | "OMIT_LOAD_EXTENSION", |
||
264 | #endif |
||
265 | #if SQLITE_OMIT_LOCALTIME |
||
266 | "OMIT_LOCALTIME", |
||
267 | #endif |
||
268 | #if SQLITE_OMIT_LOOKASIDE |
||
269 | "OMIT_LOOKASIDE", |
||
270 | #endif |
||
271 | #if SQLITE_OMIT_MEMORYDB |
||
272 | "OMIT_MEMORYDB", |
||
273 | #endif |
||
274 | #if SQLITE_OMIT_OR_OPTIMIZATION |
||
275 | "OMIT_OR_OPTIMIZATION", |
||
276 | #endif |
||
277 | #if SQLITE_OMIT_PAGER_PRAGMAS |
||
278 | "OMIT_PAGER_PRAGMAS", |
||
279 | #endif |
||
280 | #if SQLITE_OMIT_PRAGMA |
||
281 | "OMIT_PRAGMA", |
||
282 | #endif |
||
283 | #if SQLITE_OMIT_PROGRESS_CALLBACK |
||
284 | "OMIT_PROGRESS_CALLBACK", |
||
285 | #endif |
||
286 | #if SQLITE_OMIT_QUICKBALANCE |
||
287 | "OMIT_QUICKBALANCE", |
||
288 | #endif |
||
289 | #if SQLITE_OMIT_REINDEX |
||
290 | "OMIT_REINDEX", |
||
291 | #endif |
||
292 | #if SQLITE_OMIT_SCHEMA_PRAGMAS |
||
293 | "OMIT_SCHEMA_PRAGMAS", |
||
294 | #endif |
||
295 | #if SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS |
||
296 | "OMIT_SCHEMA_VERSION_PRAGMAS", |
||
297 | #endif |
||
298 | #if SQLITE_OMIT_SHARED_CACHE |
||
299 | "OMIT_SHARED_CACHE", |
||
300 | #endif |
||
301 | #if SQLITE_OMIT_SUBQUERY |
||
302 | "OMIT_SUBQUERY", |
||
303 | #endif |
||
304 | #if SQLITE_OMIT_TCL_VARIABLE |
||
305 | "OMIT_TCL_VARIABLE", |
||
306 | #endif |
||
307 | #if SQLITE_OMIT_TEMPDB |
||
308 | "OMIT_TEMPDB", |
||
309 | #endif |
||
310 | #if SQLITE_OMIT_TRACE |
||
311 | "OMIT_TRACE", |
||
312 | #endif |
||
313 | #if SQLITE_OMIT_TRIGGER |
||
314 | "OMIT_TRIGGER", |
||
315 | #endif |
||
316 | #if SQLITE_OMIT_TRUNCATE_OPTIMIZATION |
||
317 | "OMIT_TRUNCATE_OPTIMIZATION", |
||
318 | #endif |
||
319 | #if SQLITE_OMIT_UTF16 |
||
320 | "OMIT_UTF16", |
||
321 | #endif |
||
322 | #if SQLITE_OMIT_VACUUM |
||
323 | "OMIT_VACUUM", |
||
324 | #endif |
||
325 | #if SQLITE_OMIT_VIEW |
||
326 | "OMIT_VIEW", |
||
327 | #endif |
||
328 | #if SQLITE_OMIT_VIRTUALTABLE |
||
329 | "OMIT_VIRTUALTABLE", |
||
330 | #endif |
||
331 | #if SQLITE_OMIT_WAL |
||
332 | "OMIT_WAL", |
||
333 | #endif |
||
334 | #if SQLITE_OMIT_WSD |
||
335 | "OMIT_WSD", |
||
336 | #endif |
||
337 | #if SQLITE_OMIT_XFER_OPT |
||
338 | "OMIT_XFER_OPT", |
||
339 | #endif |
||
340 | #if SQLITE_PERFORMANCE_TRACE |
||
341 | "PERFORMANCE_TRACE", |
||
342 | #endif |
||
343 | #if SQLITE_PROXY_DEBUG |
||
344 | "PROXY_DEBUG", |
||
345 | #endif |
||
346 | #if SQLITE_SECURE_DELETE |
||
347 | "SECURE_DELETE", |
||
348 | #endif |
||
349 | #if SQLITE_SMALL_STACK |
||
350 | "SMALL_STACK", |
||
351 | #endif |
||
352 | #if SQLITE_SOUNDEX |
||
353 | "SOUNDEX", |
||
354 | #endif |
||
355 | #if SQLITE_TCL |
||
356 | "TCL", |
||
357 | #endif |
||
358 | //#if SQLITE_TEMP_STORE |
||
359 | "TEMP_STORE=1",//CTIMEOPT_VAL(SQLITE_TEMP_STORE), |
||
360 | //#endif |
||
361 | #if SQLITE_TEST |
||
362 | "TEST", |
||
363 | #endif |
||
364 | #if SQLITE_THREADSAFE |
||
365 | "THREADSAFE=2", // For C#, hardcode to = 2 CTIMEOPT_VAL(SQLITE_THREADSAFE), |
||
366 | #else |
||
367 | "THREADSAFE=0", // For C#, hardcode to = 0 |
||
368 | #endif |
||
369 | #if SQLITE_USE_ALLOCA |
||
370 | "USE_ALLOCA", |
||
371 | #endif |
||
372 | #if SQLITE_ZERO_MALLOC |
||
373 | "ZERO_MALLOC" |
||
374 | #endif |
||
375 | }; |
||
376 | |||
377 | /* |
||
378 | ** Given the name of a compile-time option, return true if that option |
||
379 | ** was used and false if not. |
||
380 | ** |
||
381 | ** The name can optionally begin with "SQLITE_" but the "SQLITE_" prefix |
||
382 | ** is not required for a match. |
||
383 | */ |
||
384 | static int sqlite3_compileoption_used (string zOptName) |
||
385 | { |
||
386 | if (zOptName.EndsWith ("=")) |
||
387 | return 0; |
||
388 | int i, n = 0; |
||
389 | if (zOptName.StartsWith ("SQLITE_", System.StringComparison.OrdinalIgnoreCase)) |
||
390 | n = 7; |
||
391 | //n = sqlite3Strlen30(zOptName); |
||
392 | |||
393 | /* Since ArraySize(azCompileOpt) is normally in single digits, a |
||
394 | ** linear search is adequate. No need for a binary search. */ |
||
395 | if (!string.IsNullOrEmpty (zOptName)) { |
||
396 | for (i = 0; i < ArraySize( azCompileOpt ); i++) { |
||
397 | int n1 = (zOptName.Length - n < azCompileOpt [i].Length) ? zOptName.Length - n : azCompileOpt [i].Length; |
||
398 | if (String.Compare (zOptName, n, azCompileOpt [i], 0, n1, StringComparison.OrdinalIgnoreCase) == 0) |
||
399 | return 1; |
||
400 | } |
||
401 | } |
||
402 | return 0; |
||
403 | } |
||
404 | |||
405 | /* |
||
406 | ** Return the N-th compile-time option string. If N is out of range, |
||
407 | ** return a NULL pointer. |
||
408 | */ |
||
409 | static string sqlite3_compileoption_get( int N ) |
||
410 | { |
||
411 | if ( N >= 0 && N < ArraySize( azCompileOpt ) ) |
||
412 | { |
||
413 | return azCompileOpt[N]; |
||
414 | } |
||
415 | return null; |
||
416 | } |
||
417 | |||
418 | #endif //* SQLITE_OMIT_COMPILEOPTION_DIAGS */ |
||
419 | } |
||
420 | } |