1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-14 00:22:38 +03:00

Refactored compile time option diagnostic support to use strings identifiers instead of bitmask.

FossilOrigin-Name: 76a0294ab4208a0858a13bab0858e1bc1448b651
This commit is contained in:
shaneh
2010-02-23 20:08:35 +00:00
parent 440ac39bc0
commit dc97a8cdc1
11 changed files with 500 additions and 366 deletions

View File

@@ -36,339 +36,6 @@ const char *sqlite3_libversion(void){ return sqlite3_version; }
const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
int sqlite3_libversion_number(void){ return SQLITE_VERSION_NUMBER; }
int sqlite3_threadsafe(void){ return SQLITE_THREADSAFE; }
const char *sqlite3_compileopts(void){
static char zOpts[32] = "";
sqlite_int64 iEnable = 0; /* bitmask of all the SQLITE_ENABLE* defines */
sqlite_int64 iOmit = 0; /* bitmask of all the SQLITE_OMIT* defines */
sqlite_int64 iOther = 0; /* bitmask of all the SQLITE_* defines except */
/* SQLITE_MAX* and SQLITE_DEF* */
#ifdef SQLITE_32BIT_ROWID
iOther |= ((sqlite_int64)1<<0);
#endif
#ifdef SQLITE_4_BYTE_ALIGNED_MALLOC
iOther |= ((sqlite_int64)1<<1);
#endif
#ifdef SQLITE_API
iOther |= ((sqlite_int64)1<<2);
#endif
#ifdef SQLITE_CASE_SENSITIVE_LIKE
iOther |= ((sqlite_int64)1<<3);
#endif
#ifdef SQLITE_CHECK_PAGES
iOther |= ((sqlite_int64)1<<4);
#endif
#ifdef SQLITE_COVERAGE_TEST
iOther |= ((sqlite_int64)1<<5);
#endif
#ifdef SQLITE_DEBUG
iOther |= ((sqlite_int64)1<<6);
#endif
#ifdef SQLITE_DISABLE_DIRSYNC
iOther |= ((sqlite_int64)1<<7);
#endif
#ifdef SQLITE_DISABLE_LFS
iOther |= ((sqlite_int64)1<<8);
#endif
#ifdef SQLITE_ENABLE_ATOMIC_WRITE
iEnable |= ((sqlite_int64)1<<0);
#endif
#ifdef SQLITE_ENABLE_CEROD
iEnable |= ((sqlite_int64)1<<1);
#endif
#ifdef SQLITE_ENABLE_COLUMN_METADATA
iEnable |= ((sqlite_int64)1<<2);
#endif
#ifdef SQLITE_ENABLE_EXPENSIVE_ASSERT
iEnable |= ((sqlite_int64)1<<3);
#endif
#ifdef SQLITE_ENABLE_FTS1
iEnable |= ((sqlite_int64)1<<4);
#endif
#ifdef SQLITE_ENABLE_FTS2
iEnable |= ((sqlite_int64)1<<5);
#endif
#ifdef SQLITE_ENABLE_FTS3
iEnable |= ((sqlite_int64)1<<6);
#endif
#ifdef SQLITE_ENABLE_FTS3_PARENTHESIS
iEnable |= ((sqlite_int64)1<<7);
#endif
#ifdef SQLITE_ENABLE_FTS4
iEnable |= ((sqlite_int64)1<<8);
#endif
#ifdef SQLITE_ENABLE_ICU
iEnable |= ((sqlite_int64)1<<9);
#endif
#ifdef SQLITE_ENABLE_IOTRACE
iEnable |= ((sqlite_int64)1<<10);
#endif
#ifdef SQLITE_ENABLE_LOAD_EXTENSION
iEnable |= ((sqlite_int64)1<<11);
#endif
#ifdef SQLITE_ENABLE_LOCKING_STYLE
iEnable |= ((sqlite_int64)1<<12);
#endif
#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
iEnable |= ((sqlite_int64)1<<13);
#endif
#ifdef SQLITE_ENABLE_MEMSYS3
iEnable |= ((sqlite_int64)1<<14);
#endif
#ifdef SQLITE_ENABLE_MEMSYS5
iEnable |= ((sqlite_int64)1<<15);
#endif
#ifdef SQLITE_ENABLE_OVERSIZE_CELL_CHECK
iEnable |= ((sqlite_int64)1<<16);
#endif
#ifdef SQLITE_ENABLE_RTREE
iEnable |= ((sqlite_int64)1<<17);
#endif
#ifdef SQLITE_ENABLE_STAT2
iEnable |= ((sqlite_int64)1<<18);
#endif
#ifdef SQLITE_ENABLE_UNLOCK_NOTIFY
iEnable |= ((sqlite_int64)1<<19);
#endif
#ifdef SQLITE_ENABLE_UPDATE_DELETE_LIMIT
iEnable |= ((sqlite_int64)1<<20);
#endif
#ifdef SQLITE_HAS_CODEC
iOther |= ((sqlite_int64)1<<9);
#endif
#ifdef SQLITE_HAVE_ISNAN
iOther |= ((sqlite_int64)1<<10);
#endif
#ifdef SQLITE_HOMEGROWN_RECURSIVE_MUTEX
iOther |= ((sqlite_int64)1<<11);
#endif
#ifdef SQLITE_IGNORE_AFP_LOCK_ERRORS
iOther |= ((sqlite_int64)1<<12);
#endif
#ifdef SQLITE_IGNORE_FLOCK_LOCK_ERRORS
iOther |= ((sqlite_int64)1<<13);
#endif
#ifdef SQLITE_INT64_TYPE
iOther |= ((sqlite_int64)1<<14);
#endif
#ifdef SQLITE_LOCK_TRACE
iOther |= ((sqlite_int64)1<<15);
#endif
#ifdef SQLITE_MEMDEBUG
iOther |= ((sqlite_int64)1<<16);
#endif
#ifdef SQLITE_MIXED_ENDIAN_64BIT_FLOAT
iOther |= ((sqlite_int64)1<<17);
#endif
#ifdef SQLITE_MUTEX_NOOP
iOther |= ((sqlite_int64)1<<18);
#endif
#ifdef SQLITE_MUTEX_OMIT
iOther |= ((sqlite_int64)1<<19);
#endif
#ifdef SQLITE_MUTEX_OS2
iOther |= ((sqlite_int64)1<<20);
#endif
#ifdef SQLITE_MUTEX_PTHREADS
iOther |= ((sqlite_int64)1<<21);
#endif
#ifdef SQLITE_MUTEX_W32
iOther |= ((sqlite_int64)1<<22);
#endif
#ifdef SQLITE_NO_SYNC
iOther |= ((sqlite_int64)1<<23);
#endif
#ifdef SQLITE_OMIT_ALTERTABLE
iOmit |= ((sqlite_int64)1<<0);
#endif
#ifdef SQLITE_OMIT_ANALYZE
iOmit |= ((sqlite_int64)1<<1);
#endif
#ifdef SQLITE_OMIT_ATTACH
iOmit |= ((sqlite_int64)1<<2);
#endif
#ifdef SQLITE_OMIT_AUTHORIZATION
iOmit |= ((sqlite_int64)1<<3);
#endif
#ifdef SQLITE_OMIT_AUTOINCREMENT
iOmit |= ((sqlite_int64)1<<4);
#endif
#ifdef SQLITE_OMIT_AUTOINIT
iOmit |= ((sqlite_int64)1<<5);
#endif
#ifdef SQLITE_OMIT_AUTOVACUUM
iOmit |= ((sqlite_int64)1<<6);
#endif
#ifdef SQLITE_OMIT_BETWEEN_OPTIMIZATION
iOmit |= ((sqlite_int64)1<<7);
#endif
#ifdef SQLITE_OMIT_BLOB_LITERAL
iOmit |= ((sqlite_int64)1<<8);
#endif
#ifdef SQLITE_OMIT_BTREECOUNT
iOmit |= ((sqlite_int64)1<<9);
#endif
#ifdef SQLITE_OMIT_BUILTIN_TEST
iOmit |= ((sqlite_int64)1<<10);
#endif
#ifdef SQLITE_OMIT_CAST
iOmit |= ((sqlite_int64)1<<11);
#endif
#ifdef SQLITE_OMIT_CHECK
iOmit |= ((sqlite_int64)1<<12);
#endif
#ifdef SQLITE_OMIT_COMPLETE
iOmit |= ((sqlite_int64)1<<13);
#endif
#ifdef SQLITE_OMIT_COMPOUND_SELECT
iOmit |= ((sqlite_int64)1<<14);
#endif
#ifdef SQLITE_OMIT_DATETIME_FUNCS
iOmit |= ((sqlite_int64)1<<15);
#endif
#ifdef SQLITE_OMIT_DECLTYPE
iOmit |= ((sqlite_int64)1<<16);
#endif
#ifdef SQLITE_OMIT_DEPRECATED
iOmit |= ((sqlite_int64)1<<17);
#endif
#ifdef SQLITE_OMIT_DISKIO
iOmit |= ((sqlite_int64)1<<18);
#endif
#ifdef SQLITE_OMIT_EXPLAIN
iOmit |= ((sqlite_int64)1<<19);
#endif
#ifdef SQLITE_OMIT_FLAG_PRAGMAS
iOmit |= ((sqlite_int64)1<<20);
#endif
#ifdef SQLITE_OMIT_FLOATING_POINT
iOmit |= ((sqlite_int64)1<<21);
#endif
#ifdef SQLITE_OMIT_FOREIGN_KEY
iOmit |= ((sqlite_int64)1<<22);
#endif
#ifdef SQLITE_OMIT_GET_TABLE
iOmit |= ((sqlite_int64)1<<23);
#endif
#ifdef SQLITE_OMIT_GLOBALRECOVER
iOmit |= ((sqlite_int64)1<<24);
#endif
#ifdef SQLITE_OMIT_INCRBLOB
iOmit |= ((sqlite_int64)1<<25);
#endif
#ifdef SQLITE_OMIT_INTEGRITY_CHECK
iOmit |= ((sqlite_int64)1<<26);
#endif
#ifdef SQLITE_OMIT_LIKE_OPTIMIZATION
iOmit |= ((sqlite_int64)1<<27);
#endif
#ifdef SQLITE_OMIT_LOAD_EXTENSION
iOmit |= ((sqlite_int64)1<<28);
#endif
#ifdef SQLITE_OMIT_LOCALTIME
iOmit |= ((sqlite_int64)1<<29);
#endif
#ifdef SQLITE_OMIT_LOOKASIDE
iOmit |= ((sqlite_int64)1<<30);
#endif
#ifdef SQLITE_OMIT_MEMORYDB
iOmit |= ((sqlite_int64)1<<31);
#endif
#ifdef SQLITE_OMIT_OR_OPTIMIZATION
iOmit |= ((sqlite_int64)1<<32);
#endif
#ifdef SQLITE_OMIT_PAGER_PRAGMAS
iOmit |= ((sqlite_int64)1<<33);
#endif
#ifdef SQLITE_OMIT_PRAGMA
iOmit |= ((sqlite_int64)1<<34);
#endif
#ifdef SQLITE_OMIT_PROGRESS_CALLBACK
iOmit |= ((sqlite_int64)1<<35);
#endif
#ifdef SQLITE_OMIT_QUICKBALANCE
iOmit |= ((sqlite_int64)1<<36);
#endif
#ifdef SQLITE_OMIT_REINDEX
iOmit |= ((sqlite_int64)1<<37);
#endif
#ifdef SQLITE_OMIT_SCHEMA_PRAGMAS
iOmit |= ((sqlite_int64)1<<38);
#endif
#ifdef SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
iOmit |= ((sqlite_int64)1<<39);
#endif
#ifdef SQLITE_OMIT_SHARED_CACHE
iOmit |= ((sqlite_int64)1<<40);
#endif
#ifdef SQLITE_OMIT_SUBQUERY
iOmit |= ((sqlite_int64)1<<41);
#endif
#ifdef SQLITE_OMIT_TCL_VARIABLE
iOmit |= ((sqlite_int64)1<<42);
#endif
#ifdef SQLITE_OMIT_TEMPDB
iOmit |= ((sqlite_int64)1<<43);
#endif
#ifdef SQLITE_OMIT_TRACE
iOmit |= ((sqlite_int64)1<<44);
#endif
#ifdef SQLITE_OMIT_TRIGGER
iOmit |= ((sqlite_int64)1<<45);
#endif
#ifdef SQLITE_OMIT_TRUNCATE_OPTIMIZATION
iOmit |= ((sqlite_int64)1<<46);
#endif
#ifdef SQLITE_OMIT_UTF16
iOmit |= ((sqlite_int64)1<<47);
#endif
#ifdef SQLITE_OMIT_VACUUM
iOmit |= ((sqlite_int64)1<<48);
#endif
#ifdef SQLITE_OMIT_VIEW
iOmit |= ((sqlite_int64)1<<49);
#endif
#ifdef SQLITE_OMIT_VIRTUALTABLE
iOmit |= ((sqlite_int64)1<<50);
#endif
#ifdef SQLITE_OMIT_WSD
iOmit |= ((sqlite_int64)1<<51);
#endif
#ifdef SQLITE_OMIT_XFER_OPT
iOmit |= ((sqlite_int64)1<<52);
#endif
#ifdef SQLITE_PERFORMANCE_TRACE
iOther |= ((sqlite_int64)1<<24);
#endif
#ifdef SQLITE_PROXY_DEBUG
iOther |= ((sqlite_int64)1<<25);
#endif
#ifdef SQLITE_SECURE_DELETE
iOther |= ((sqlite_int64)1<<26);
#endif
#ifdef SQLITE_SMALL_STACK
iOther |= ((sqlite_int64)1<<27);
#endif
#ifdef SQLITE_SOUNDEX
iOther |= ((sqlite_int64)1<<28);
#endif
#ifdef SQLITE_TCL
iOther |= ((sqlite_int64)1<<29);
#endif
#ifdef SQLITE_TEST
iOther |= ((sqlite_int64)1<<30);
#endif
#ifdef SQLITE_USE_ALLOCA
iOther |= ((sqlite_int64)1<<31);
#endif
#ifdef SQLITE_ZERO_MALLOC
iOther |= ((sqlite_int64)1<<32);
#endif
sqlite3_snprintf(sizeof(zOpts)-1, zOpts,
"%016llx%016llx%016llx", iEnable, iOmit, iOther);
return zOpts;
}
#if !defined(SQLITE_OMIT_TRACE) && defined(SQLITE_ENABLE_IOTRACE)
/*
@@ -717,7 +384,12 @@ int sqlite3_config(int op, ...){
** NULL.
*/
case SQLITE_CONFIG_LOG: {
sqlite3GlobalConfig.xLog = va_arg(ap, void(*)(void*,int,const char*));
/* MSVC is picky about pulling func ptrs from va lists.
** http://support.microsoft.com/kb/47961
** sqlite3GlobalConfig.xLog = va_arg(ap, void(*)(void*,int,const char*));
*/
typedef void(*LOGFUNC_t)(void*,int,const char*);
sqlite3GlobalConfig.xLog = va_arg(ap, LOGFUNC_t);
sqlite3GlobalConfig.pLogArg = va_arg(ap, void*);
break;
}