// ------------------------------------------------------------------------------------------------
#include "Common.hpp"

// ------------------------------------------------------------------------------------------------
namespace SqMod {

/* ------------------------------------------------------------------------------------------------
 * Helper class that represents an integral enumeration value. Used to reduce compilation times.
*/
struct EnumElement
{
    CSStr Name;
    Int32 Value;
};

// ------------------------------------------------------------------------------------------------
static const EnumElement g_MainEnum[] = {
    {_SC("ABORT"),                                SQLITE_ABORT},
    {_SC("ABORT_ROLLBACK"),                       SQLITE_ABORT_ROLLBACK},
    {_SC("ACCESS_EXISTS"),                        SQLITE_ACCESS_EXISTS},
    {_SC("ACCESS_READ"),                          SQLITE_ACCESS_READ},
    {_SC("ACCESS_READWRITE"),                     SQLITE_ACCESS_READWRITE},
    {_SC("ALTER_TABLE"),                          SQLITE_ALTER_TABLE},
    {_SC("ANALYZE"),                              SQLITE_ANALYZE},
    {_SC("ANY"),                                  SQLITE_ANY},
    {_SC("ATTACH"),                               SQLITE_ATTACH},
    {_SC("AUTH"),                                 SQLITE_AUTH},
    {_SC("AUTH_USER"),                            SQLITE_AUTH_USER},
    {_SC("BLOB"),                                 SQLITE_BLOB},
    {_SC("BUSY"),                                 SQLITE_BUSY},
    {_SC("BUSY_RECOVERY"),                        SQLITE_BUSY_RECOVERY},
    {_SC("BUSY_SNAPSHOT"),                        SQLITE_BUSY_SNAPSHOT},
    {_SC("CANTOPEN"),                             SQLITE_CANTOPEN},
    {_SC("CANTOPEN_CONVPATH"),                    SQLITE_CANTOPEN_CONVPATH},
    {_SC("CANTOPEN_FULLPATH"),                    SQLITE_CANTOPEN_FULLPATH},
    {_SC("CANTOPEN_ISDIR"),                       SQLITE_CANTOPEN_ISDIR},
    {_SC("CANTOPEN_NOTEMPDIR"),                   SQLITE_CANTOPEN_NOTEMPDIR},
    {_SC("CHECKPOINT_FULL"),                      SQLITE_CHECKPOINT_FULL},
    {_SC("CHECKPOINT_PASSIVE"),                   SQLITE_CHECKPOINT_PASSIVE},
    {_SC("CHECKPOINT_RESTART"),                   SQLITE_CHECKPOINT_RESTART},
    {_SC("CHECKPOINT_TRUNCATE"),                  SQLITE_CHECKPOINT_TRUNCATE},
    {_SC("CONFIG_COVERING_INDEX_SCAN"),           SQLITE_CONFIG_COVERING_INDEX_SCAN},
    {_SC("CONFIG_GETMALLOC"),                     SQLITE_CONFIG_GETMALLOC},
    {_SC("CONFIG_GETMUTEX"),                      SQLITE_CONFIG_GETMUTEX},
    {_SC("CONFIG_GETPCACHE"),                     SQLITE_CONFIG_GETPCACHE},
    {_SC("CONFIG_GETPCACHE2"),                    SQLITE_CONFIG_GETPCACHE2},
    {_SC("CONFIG_HEAP"),                          SQLITE_CONFIG_HEAP},
    {_SC("CONFIG_LOG"),                           SQLITE_CONFIG_LOG},
    {_SC("CONFIG_LOOKASIDE"),                     SQLITE_CONFIG_LOOKASIDE},
    {_SC("CONFIG_MALLOC"),                        SQLITE_CONFIG_MALLOC},
    {_SC("CONFIG_MEMSTATUS"),                     SQLITE_CONFIG_MEMSTATUS},
    {_SC("CONFIG_MMAP_SIZE"),                     SQLITE_CONFIG_MMAP_SIZE},
    {_SC("CONFIG_MULTITHREAD"),                   SQLITE_CONFIG_MULTITHREAD},
    {_SC("CONFIG_MUTEX"),                         SQLITE_CONFIG_MUTEX},
    {_SC("CONFIG_PAGECACHE"),                     SQLITE_CONFIG_PAGECACHE},
    {_SC("CONFIG_PCACHE"),                        SQLITE_CONFIG_PCACHE},
    {_SC("CONFIG_PCACHE2"),                       SQLITE_CONFIG_PCACHE2},
    {_SC("CONFIG_PCACHE_HDRSZ"),                  SQLITE_CONFIG_PCACHE_HDRSZ},
    {_SC("CONFIG_PMASZ"),                         SQLITE_CONFIG_PMASZ},
    {_SC("CONFIG_SCRATCH"),                       SQLITE_CONFIG_SCRATCH},
    {_SC("CONFIG_SERIALIZED"),                    SQLITE_CONFIG_SERIALIZED},
    {_SC("CONFIG_SINGLETHREAD"),                  SQLITE_CONFIG_SINGLETHREAD},
    {_SC("CONFIG_SQLLOG"),                        SQLITE_CONFIG_SQLLOG},
    {_SC("CONFIG_URI"),                           SQLITE_CONFIG_URI},
    {_SC("CONFIG_WIN32_HEAPSIZE"),                SQLITE_CONFIG_WIN32_HEAPSIZE},
    {_SC("CONSTRAINT"),                           SQLITE_CONSTRAINT},
    {_SC("CONSTRAINT_CHECK"),                     SQLITE_CONSTRAINT_CHECK},
    {_SC("CONSTRAINT_COMMITHOOK"),                SQLITE_CONSTRAINT_COMMITHOOK},
    {_SC("CONSTRAINT_FOREIGNKEY"),                SQLITE_CONSTRAINT_FOREIGNKEY},
    {_SC("CONSTRAINT_FUNCTION"),                  SQLITE_CONSTRAINT_FUNCTION},
    {_SC("CONSTRAINT_NOTNULL"),                   SQLITE_CONSTRAINT_NOTNULL},
    {_SC("CONSTRAINT_PRIMARYKEY"),                SQLITE_CONSTRAINT_PRIMARYKEY},
    {_SC("CONSTRAINT_ROWID"),                     SQLITE_CONSTRAINT_ROWID},
    {_SC("CONSTRAINT_TRIGGER"),                   SQLITE_CONSTRAINT_TRIGGER},
    {_SC("CONSTRAINT_UNIQUE"),                    SQLITE_CONSTRAINT_UNIQUE},
    {_SC("CONSTRAINT_VTAB"),                      SQLITE_CONSTRAINT_VTAB},
    {_SC("COPY"),                                 SQLITE_COPY},
    {_SC("CORRUPT"),                              SQLITE_CORRUPT},
    {_SC("CORRUPT_VTAB"),                         SQLITE_CORRUPT_VTAB},
    {_SC("CREATE_INDEX"),                         SQLITE_CREATE_INDEX},
    {_SC("CREATE_TABLE"),                         SQLITE_CREATE_TABLE},
    {_SC("CREATE_TEMP_INDEX"),                    SQLITE_CREATE_TEMP_INDEX},
    {_SC("CREATE_TEMP_TABLE"),                    SQLITE_CREATE_TEMP_TABLE},
    {_SC("CREATE_TEMP_TRIGGER"),                  SQLITE_CREATE_TEMP_TRIGGER},
    {_SC("CREATE_TEMP_VIEW"),                     SQLITE_CREATE_TEMP_VIEW},
    {_SC("CREATE_TRIGGER"),                       SQLITE_CREATE_TRIGGER},
    {_SC("CREATE_VIEW"),                          SQLITE_CREATE_VIEW},
    {_SC("CREATE_VTABLE"),                        SQLITE_CREATE_VTABLE},
    {_SC("DBCONFIG_ENABLE_FKEY"),                 SQLITE_DBCONFIG_ENABLE_FKEY},
    {_SC("DBCONFIG_ENABLE_TRIGGER"),              SQLITE_DBCONFIG_ENABLE_TRIGGER},
    {_SC("DBCONFIG_LOOKASIDE"),                   SQLITE_DBCONFIG_LOOKASIDE},
    {_SC("DBSTATUS_CACHE_HIT"),                   SQLITE_DBSTATUS_CACHE_HIT},
    {_SC("DBSTATUS_CACHE_MISS"),                  SQLITE_DBSTATUS_CACHE_MISS},
    {_SC("DBSTATUS_CACHE_USED"),                  SQLITE_DBSTATUS_CACHE_USED},
    {_SC("DBSTATUS_CACHE_WRITE"),                 SQLITE_DBSTATUS_CACHE_WRITE},
    {_SC("DBSTATUS_DEFERRED_FKS"),                SQLITE_DBSTATUS_DEFERRED_FKS},
    {_SC("DBSTATUS_LOOKASIDE_HIT"),               SQLITE_DBSTATUS_LOOKASIDE_HIT},
    {_SC("DBSTATUS_LOOKASIDE_MISS_FULL"),         SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL},
    {_SC("DBSTATUS_LOOKASIDE_MISS_SIZE"),         SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE},
    {_SC("DBSTATUS_LOOKASIDE_USED"),              SQLITE_DBSTATUS_LOOKASIDE_USED},
    {_SC("DBSTATUS_MAX"),                         SQLITE_DBSTATUS_MAX},
    {_SC("DBSTATUS_SCHEMA_USED"),                 SQLITE_DBSTATUS_SCHEMA_USED},
    {_SC("DBSTATUS_STMT_USED"),                   SQLITE_DBSTATUS_STMT_USED},
    {_SC("DELETE"),                               SQLITE_DELETE},
    {_SC("DENY"),                                 SQLITE_DENY},
    {_SC("DETACH"),                               SQLITE_DETACH},
    {_SC("DETERMINISTIC"),                        SQLITE_DETERMINISTIC},
    {_SC("DONE"),                                 SQLITE_DONE},
    {_SC("DROP_INDEX"),                           SQLITE_DROP_INDEX},
    {_SC("DROP_TABLE"),                           SQLITE_DROP_TABLE},
    {_SC("DROP_TEMP_INDEX"),                      SQLITE_DROP_TEMP_INDEX},
    {_SC("DROP_TEMP_TABLE"),                      SQLITE_DROP_TEMP_TABLE},
    {_SC("DROP_TEMP_TRIGGER"),                    SQLITE_DROP_TEMP_TRIGGER},
    {_SC("DROP_TEMP_VIEW"),                       SQLITE_DROP_TEMP_VIEW},
    {_SC("DROP_TRIGGER"),                         SQLITE_DROP_TRIGGER},
    {_SC("DROP_VIEW"),                            SQLITE_DROP_VIEW},
    {_SC("DROP_VTABLE"),                          SQLITE_DROP_VTABLE},
    {_SC("EMPTY"),                                SQLITE_EMPTY},
    {_SC("ERROR"),                                SQLITE_ERROR},
    {_SC("FAIL"),                                 SQLITE_FAIL},
    {_SC("FCNTL_BUSYHANDLER"),                    SQLITE_FCNTL_BUSYHANDLER},
    {_SC("FCNTL_CHUNK_SIZE"),                     SQLITE_FCNTL_CHUNK_SIZE},
    {_SC("FCNTL_COMMIT_PHASETWO"),                SQLITE_FCNTL_COMMIT_PHASETWO},
    {_SC("FCNTL_FILE_POINTER"),                   SQLITE_FCNTL_FILE_POINTER},
    {_SC("FCNTL_GET_LOCKPROXYFILE"),              SQLITE_FCNTL_GET_LOCKPROXYFILE},
    {_SC("FCNTL_HAS_MOVED"),                      SQLITE_FCNTL_HAS_MOVED},
    {_SC("FCNTL_LAST_ERRNO"),                     SQLITE_FCNTL_LAST_ERRNO},
    {_SC("FCNTL_LOCKSTATE"),                      SQLITE_FCNTL_LOCKSTATE},
    {_SC("FCNTL_MMAP_SIZE"),                      SQLITE_FCNTL_MMAP_SIZE},
    {_SC("FCNTL_OVERWRITE"),                      SQLITE_FCNTL_OVERWRITE},
    {_SC("FCNTL_PERSIST_WAL"),                    SQLITE_FCNTL_PERSIST_WAL},
    {_SC("FCNTL_POWERSAFE_OVERWRITE"),            SQLITE_FCNTL_POWERSAFE_OVERWRITE},
    {_SC("FCNTL_PRAGMA"),                         SQLITE_FCNTL_PRAGMA},
    {_SC("FCNTL_RBU"),                            SQLITE_FCNTL_RBU},
    {_SC("FCNTL_SET_LOCKPROXYFILE"),              SQLITE_FCNTL_SET_LOCKPROXYFILE},
    {_SC("FCNTL_SIZE_HINT"),                      SQLITE_FCNTL_SIZE_HINT},
    {_SC("FCNTL_SYNC"),                           SQLITE_FCNTL_SYNC},
    {_SC("FCNTL_SYNC_OMITTED"),                   SQLITE_FCNTL_SYNC_OMITTED},
    {_SC("FCNTL_TEMPFILENAME"),                   SQLITE_FCNTL_TEMPFILENAME},
    {_SC("FCNTL_TRACE"),                          SQLITE_FCNTL_TRACE},
    {_SC("FCNTL_VFSNAME"),                        SQLITE_FCNTL_VFSNAME},
    {_SC("FCNTL_WAL_BLOCK"),                      SQLITE_FCNTL_WAL_BLOCK},
    {_SC("FCNTL_WIN32_AV_RETRY"),                 SQLITE_FCNTL_WIN32_AV_RETRY},
    {_SC("FCNTL_WIN32_SET_HANDLE"),               SQLITE_FCNTL_WIN32_SET_HANDLE},
    {_SC("FCNTL_ZIPVFS"),                         SQLITE_FCNTL_ZIPVFS},
    {_SC("FLOAT"),                                SQLITE_FLOAT},
    {_SC("FORMAT"),                               SQLITE_FORMAT},
    {_SC("FULL"),                                 SQLITE_FULL},
    {_SC("FUNCTION"),                             SQLITE_FUNCTION},
    {_SC("IGNORE"),                               SQLITE_IGNORE},
    {_SC("INDEX_CONSTRAINT_EQ"),                  SQLITE_INDEX_CONSTRAINT_EQ},
    {_SC("INDEX_CONSTRAINT_GE"),                  SQLITE_INDEX_CONSTRAINT_GE},
    {_SC("INDEX_CONSTRAINT_GT"),                  SQLITE_INDEX_CONSTRAINT_GT},
    {_SC("INDEX_CONSTRAINT_LE"),                  SQLITE_INDEX_CONSTRAINT_LE},
    {_SC("INDEX_CONSTRAINT_LT"),                  SQLITE_INDEX_CONSTRAINT_LT},
    {_SC("INDEX_CONSTRAINT_MATCH"),               SQLITE_INDEX_CONSTRAINT_MATCH},
    {_SC("INDEX_SCAN_UNIQUE"),                    SQLITE_INDEX_SCAN_UNIQUE},
    {_SC("INSERT"),                               SQLITE_INSERT},
    {_SC("INTEGER"),                              SQLITE_INTEGER},
    {_SC("INTERNAL"),                             SQLITE_INTERNAL},
    {_SC("INTERRUPT"),                            SQLITE_INTERRUPT},
    {_SC("IOCAP_ATOMIC"),                         SQLITE_IOCAP_ATOMIC},
    {_SC("IOCAP_ATOMIC16K"),                      SQLITE_IOCAP_ATOMIC16K},
    {_SC("IOCAP_ATOMIC1K"),                       SQLITE_IOCAP_ATOMIC1K},
    {_SC("IOCAP_ATOMIC2K"),                       SQLITE_IOCAP_ATOMIC2K},
    {_SC("IOCAP_ATOMIC32K"),                      SQLITE_IOCAP_ATOMIC32K},
    {_SC("IOCAP_ATOMIC4K"),                       SQLITE_IOCAP_ATOMIC4K},
    {_SC("IOCAP_ATOMIC512"),                      SQLITE_IOCAP_ATOMIC512},
    {_SC("IOCAP_ATOMIC64K"),                      SQLITE_IOCAP_ATOMIC64K},
    {_SC("IOCAP_ATOMIC8K"),                       SQLITE_IOCAP_ATOMIC8K},
    {_SC("IOCAP_IMMUTABLE"),                      SQLITE_IOCAP_IMMUTABLE},
    {_SC("IOCAP_POWERSAFE_OVERWRITE"),            SQLITE_IOCAP_POWERSAFE_OVERWRITE},
    {_SC("IOCAP_SAFE_APPEND"),                    SQLITE_IOCAP_SAFE_APPEND},
    {_SC("IOCAP_SEQUENTIAL"),                     SQLITE_IOCAP_SEQUENTIAL},
    {_SC("IOCAP_UNDELETABLE_WHEN_OPEN"),          SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN},
    {_SC("IOERR"),                                SQLITE_IOERR},
    {_SC("IOERR_ACCESS"),                         SQLITE_IOERR_ACCESS},
    {_SC("IOERR_BLOCKED"),                        SQLITE_IOERR_BLOCKED},
    {_SC("IOERR_CHECKRESERVEDLOCK"),              SQLITE_IOERR_CHECKRESERVEDLOCK},
    {_SC("IOERR_CLOSE"),                          SQLITE_IOERR_CLOSE},
    {_SC("IOERR_CONVPATH"),                       SQLITE_IOERR_CONVPATH},
    {_SC("IOERR_DELETE"),                         SQLITE_IOERR_DELETE},
    {_SC("IOERR_DELETE_NOENT"),                   SQLITE_IOERR_DELETE_NOENT},
    {_SC("IOERR_DIR_CLOSE"),                      SQLITE_IOERR_DIR_CLOSE},
    {_SC("IOERR_DIR_FSYNC"),                      SQLITE_IOERR_DIR_FSYNC},
    {_SC("IOERR_FSTAT"),                          SQLITE_IOERR_FSTAT},
    {_SC("IOERR_FSYNC"),                          SQLITE_IOERR_FSYNC},
    {_SC("IOERR_GETTEMPPATH"),                    SQLITE_IOERR_GETTEMPPATH},
    {_SC("IOERR_LOCK"),                           SQLITE_IOERR_LOCK},
    {_SC("IOERR_MMAP"),                           SQLITE_IOERR_MMAP},
    {_SC("IOERR_NOMEM"),                          SQLITE_IOERR_NOMEM},
    {_SC("IOERR_RDLOCK"),                         SQLITE_IOERR_RDLOCK},
    {_SC("IOERR_READ"),                           SQLITE_IOERR_READ},
    {_SC("IOERR_SEEK"),                           SQLITE_IOERR_SEEK},
    {_SC("IOERR_SHMLOCK"),                        SQLITE_IOERR_SHMLOCK},
    {_SC("IOERR_SHMMAP"),                         SQLITE_IOERR_SHMMAP},
    {_SC("IOERR_SHMOPEN"),                        SQLITE_IOERR_SHMOPEN},
    {_SC("IOERR_SHMSIZE"),                        SQLITE_IOERR_SHMSIZE},
    {_SC("IOERR_SHORT_READ"),                     SQLITE_IOERR_SHORT_READ},
    {_SC("IOERR_TRUNCATE"),                       SQLITE_IOERR_TRUNCATE},
    {_SC("IOERR_UNLOCK"),                         SQLITE_IOERR_UNLOCK},
    {_SC("IOERR_VNODE"),                          SQLITE_IOERR_VNODE},
    {_SC("IOERR_WRITE"),                          SQLITE_IOERR_WRITE},
    {_SC("LIMIT_ATTACHED"),                       SQLITE_LIMIT_ATTACHED},
    {_SC("LIMIT_COLUMN"),                         SQLITE_LIMIT_COLUMN},
    {_SC("LIMIT_COMPOUND_SELECT"),                SQLITE_LIMIT_COMPOUND_SELECT},
    {_SC("LIMIT_EXPR_DEPTH"),                     SQLITE_LIMIT_EXPR_DEPTH},
    {_SC("LIMIT_FUNCTION_ARG"),                   SQLITE_LIMIT_FUNCTION_ARG},
    {_SC("LIMIT_LENGTH"),                         SQLITE_LIMIT_LENGTH},
    {_SC("LIMIT_LIKE_PATTERN_LENGTH"),            SQLITE_LIMIT_LIKE_PATTERN_LENGTH},
    {_SC("LIMIT_SQL_LENGTH"),                     SQLITE_LIMIT_SQL_LENGTH},
    {_SC("LIMIT_TRIGGER_DEPTH"),                  SQLITE_LIMIT_TRIGGER_DEPTH},
    {_SC("LIMIT_VARIABLE_NUMBER"),                SQLITE_LIMIT_VARIABLE_NUMBER},
    {_SC("LIMIT_VDBE_OP"),                        SQLITE_LIMIT_VDBE_OP},
    {_SC("LIMIT_WORKER_THREADS"),                 SQLITE_LIMIT_WORKER_THREADS},
    {_SC("LOCKED"),                               SQLITE_LOCKED},
    {_SC("LOCKED_SHAREDCACHE"),                   SQLITE_LOCKED_SHAREDCACHE},
    {_SC("LOCK_EXCLUSIVE"),                       SQLITE_LOCK_EXCLUSIVE},
    {_SC("LOCK_NONE"),                            SQLITE_LOCK_NONE},
    {_SC("LOCK_PENDING"),                         SQLITE_LOCK_PENDING},
    {_SC("LOCK_RESERVED"),                        SQLITE_LOCK_RESERVED},
    {_SC("LOCK_SHARED"),                          SQLITE_LOCK_SHARED},
    {_SC("MISMATCH"),                             SQLITE_MISMATCH},
    {_SC("MISUSE"),                               SQLITE_MISUSE},
    {_SC("MUTEX_FAST"),                           SQLITE_MUTEX_FAST},
    {_SC("MUTEX_RECURSIVE"),                      SQLITE_MUTEX_RECURSIVE},
    {_SC("MUTEX_STATIC_APP1"),                    SQLITE_MUTEX_STATIC_APP1},
    {_SC("MUTEX_STATIC_APP2"),                    SQLITE_MUTEX_STATIC_APP2},
    {_SC("MUTEX_STATIC_APP3"),                    SQLITE_MUTEX_STATIC_APP3},
    {_SC("MUTEX_STATIC_LRU"),                     SQLITE_MUTEX_STATIC_LRU},
    {_SC("MUTEX_STATIC_LRU2"),                    SQLITE_MUTEX_STATIC_LRU2},
    {_SC("MUTEX_STATIC_MASTER"),                  SQLITE_MUTEX_STATIC_MASTER},
    {_SC("MUTEX_STATIC_MEM"),                     SQLITE_MUTEX_STATIC_MEM},
    {_SC("MUTEX_STATIC_MEM2"),                    SQLITE_MUTEX_STATIC_MEM2},
    {_SC("MUTEX_STATIC_OPEN"),                    SQLITE_MUTEX_STATIC_OPEN},
    {_SC("MUTEX_STATIC_PMEM"),                    SQLITE_MUTEX_STATIC_PMEM},
    {_SC("MUTEX_STATIC_PRNG"),                    SQLITE_MUTEX_STATIC_PRNG},
    {_SC("MUTEX_STATIC_VFS1"),                    SQLITE_MUTEX_STATIC_VFS1},
    {_SC("MUTEX_STATIC_VFS2"),                    SQLITE_MUTEX_STATIC_VFS2},
    {_SC("MUTEX_STATIC_VFS3"),                    SQLITE_MUTEX_STATIC_VFS3},
    {_SC("NOLFS"),                                SQLITE_NOLFS},
    {_SC("NOMEM"),                                SQLITE_NOMEM},
    {_SC("NOTADB"),                               SQLITE_NOTADB},
    {_SC("NOTFOUND"),                             SQLITE_NOTFOUND},
    {_SC("NOTICE"),                               SQLITE_NOTICE},
    {_SC("NOTICE_RECOVER_ROLLBACK"),              SQLITE_NOTICE_RECOVER_ROLLBACK},
    {_SC("NOTICE_RECOVER_WAL"),                   SQLITE_NOTICE_RECOVER_WAL},
    {_SC("NULL"),                                 SQLITE_NULL},
    {_SC("OK"),                                   SQLITE_OK},
    {_SC("OPEN_AUTOPROXY"),                       SQLITE_OPEN_AUTOPROXY},
    {_SC("OPEN_CREATE"),                          SQLITE_OPEN_CREATE},
    {_SC("OPEN_DELETEONCLOSE"),                   SQLITE_OPEN_DELETEONCLOSE},
    {_SC("OPEN_EXCLUSIVE"),                       SQLITE_OPEN_EXCLUSIVE},
    {_SC("OPEN_FULLMUTEX"),                       SQLITE_OPEN_FULLMUTEX},
    {_SC("OPEN_MAIN_DB"),                         SQLITE_OPEN_MAIN_DB},
    {_SC("OPEN_MAIN_JOURNAL"),                    SQLITE_OPEN_MAIN_JOURNAL},
    {_SC("OPEN_MASTER_JOURNAL"),                  SQLITE_OPEN_MASTER_JOURNAL},
    {_SC("OPEN_MEMORY"),                          SQLITE_OPEN_MEMORY},
    {_SC("OPEN_NOMUTEX"),                         SQLITE_OPEN_NOMUTEX},
    {_SC("OPEN_PRIVATECACHE"),                    SQLITE_OPEN_PRIVATECACHE},
    {_SC("OPEN_READONLY"),                        SQLITE_OPEN_READONLY},
    {_SC("OPEN_READWRITE"),                       SQLITE_OPEN_READWRITE},
    {_SC("OPEN_SHAREDCACHE"),                     SQLITE_OPEN_SHAREDCACHE},
    {_SC("OPEN_SUBJOURNAL"),                      SQLITE_OPEN_SUBJOURNAL},
    {_SC("OPEN_TEMP_DB"),                         SQLITE_OPEN_TEMP_DB},
    {_SC("OPEN_TEMP_JOURNAL"),                    SQLITE_OPEN_TEMP_JOURNAL},
    {_SC("OPEN_TRANSIENT_DB"),                    SQLITE_OPEN_TRANSIENT_DB},
    {_SC("OPEN_URI"),                             SQLITE_OPEN_URI},
    {_SC("OPEN_WAL"),                             SQLITE_OPEN_WAL},
    {_SC("PERM"),                                 SQLITE_PERM},
    {_SC("PRAGMA"),                               SQLITE_PRAGMA},
    {_SC("PROTOCOL"),                             SQLITE_PROTOCOL},
    {_SC("RANGE"),                                SQLITE_RANGE},
    {_SC("READ"),                                 SQLITE_READ},
    {_SC("READONLY"),                             SQLITE_READONLY},
    {_SC("READONLY_CANTLOCK"),                    SQLITE_READONLY_CANTLOCK},
    {_SC("READONLY_DBMOVED"),                     SQLITE_READONLY_DBMOVED},
    {_SC("READONLY_RECOVERY"),                    SQLITE_READONLY_RECOVERY},
    {_SC("READONLY_ROLLBACK"),                    SQLITE_READONLY_ROLLBACK},
    {_SC("RECURSIVE"),                            SQLITE_RECURSIVE},
    {_SC("REINDEX"),                              SQLITE_REINDEX},
    {_SC("REPLACE"),                              SQLITE_REPLACE},
    {_SC("ROLLBACK"),                             SQLITE_ROLLBACK},
    {_SC("ROW"),                                  SQLITE_ROW},
    {_SC("SAVEPOINT"),                            SQLITE_SAVEPOINT},
    {_SC("SCANSTAT_EST"),                         SQLITE_SCANSTAT_EST},
    {_SC("SCANSTAT_EXPLAIN"),                     SQLITE_SCANSTAT_EXPLAIN},
    {_SC("SCANSTAT_NAME"),                        SQLITE_SCANSTAT_NAME},
    {_SC("SCANSTAT_NLOOP"),                       SQLITE_SCANSTAT_NLOOP},
    {_SC("SCANSTAT_NVISIT"),                      SQLITE_SCANSTAT_NVISIT},
    {_SC("SCANSTAT_SELECTID"),                    SQLITE_SCANSTAT_SELECTID},
    {_SC("SCHEMA"),                               SQLITE_SCHEMA},
    {_SC("SELECT"),                               SQLITE_SELECT},
    {_SC("SHM_EXCLUSIVE"),                        SQLITE_SHM_EXCLUSIVE},
    {_SC("SHM_LOCK"),                             SQLITE_SHM_LOCK},
    {_SC("SHM_NLOCK"),                            SQLITE_SHM_NLOCK},
    {_SC("SHM_SHARED"),                           SQLITE_SHM_SHARED},
    {_SC("SHM_UNLOCK"),                           SQLITE_SHM_UNLOCK},
    {_SC("STATUS_MALLOC_COUNT"),                  SQLITE_STATUS_MALLOC_COUNT},
    {_SC("STATUS_MALLOC_SIZE"),                   SQLITE_STATUS_MALLOC_SIZE},
    {_SC("STATUS_MEMORY_USED"),                   SQLITE_STATUS_MEMORY_USED},
    {_SC("STATUS_PAGECACHE_OVERFLOW"),            SQLITE_STATUS_PAGECACHE_OVERFLOW},
    {_SC("STATUS_PAGECACHE_SIZE"),                SQLITE_STATUS_PAGECACHE_SIZE},
    {_SC("STATUS_PAGECACHE_USED"),                SQLITE_STATUS_PAGECACHE_USED},
    {_SC("STATUS_PARSER_STACK"),                  SQLITE_STATUS_PARSER_STACK},
    {_SC("STATUS_SCRATCH_OVERFLOW"),              SQLITE_STATUS_SCRATCH_OVERFLOW},
    {_SC("STATUS_SCRATCH_SIZE"),                  SQLITE_STATUS_SCRATCH_SIZE},
    {_SC("STATUS_SCRATCH_USED"),                  SQLITE_STATUS_SCRATCH_USED},
    {_SC("STMTSTATUS_AUTOINDEX"),                 SQLITE_STMTSTATUS_AUTOINDEX},
    {_SC("STMTSTATUS_FULLSCAN_STEP"),             SQLITE_STMTSTATUS_FULLSCAN_STEP},
    {_SC("STMTSTATUS_SORT"),                      SQLITE_STMTSTATUS_SORT},
    {_SC("STMTSTATUS_VM_STEP"),                   SQLITE_STMTSTATUS_VM_STEP},
    {_SC("SYNC_DATAONLY"),                        SQLITE_SYNC_DATAONLY},
    {_SC("SYNC_FULL"),                            SQLITE_SYNC_FULL},
    {_SC("SYNC_NORMAL"),                          SQLITE_SYNC_NORMAL},
    {_SC("TESTCTRL_ALWAYS"),                      SQLITE_TESTCTRL_ALWAYS},
    {_SC("TESTCTRL_ASSERT"),                      SQLITE_TESTCTRL_ASSERT},
    {_SC("TESTCTRL_BENIGN_MALLOC_HOOKS"),         SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS},
    {_SC("TESTCTRL_BITVEC_TEST"),                 SQLITE_TESTCTRL_BITVEC_TEST},
    {_SC("TESTCTRL_BYTEORDER"),                   SQLITE_TESTCTRL_BYTEORDER},
    {_SC("TESTCTRL_EXPLAIN_STMT"),                SQLITE_TESTCTRL_EXPLAIN_STMT},
    {_SC("TESTCTRL_FAULT_INSTALL"),               SQLITE_TESTCTRL_FAULT_INSTALL},
    {_SC("TESTCTRL_FIRST"),                       SQLITE_TESTCTRL_FIRST},
    {_SC("TESTCTRL_IMPOSTER"),                    SQLITE_TESTCTRL_IMPOSTER},
    {_SC("TESTCTRL_ISINIT"),                      SQLITE_TESTCTRL_ISINIT},
    {_SC("TESTCTRL_ISKEYWORD"),                   SQLITE_TESTCTRL_ISKEYWORD},
    {_SC("TESTCTRL_LAST"),                        SQLITE_TESTCTRL_LAST},
    {_SC("TESTCTRL_LOCALTIME_FAULT"),             SQLITE_TESTCTRL_LOCALTIME_FAULT},
    {_SC("TESTCTRL_NEVER_CORRUPT"),               SQLITE_TESTCTRL_NEVER_CORRUPT},
    {_SC("TESTCTRL_OPTIMIZATIONS"),               SQLITE_TESTCTRL_OPTIMIZATIONS},
    {_SC("TESTCTRL_PENDING_BYTE"),                SQLITE_TESTCTRL_PENDING_BYTE},
    {_SC("TESTCTRL_PRNG_RESET"),                  SQLITE_TESTCTRL_PRNG_RESET},
    {_SC("TESTCTRL_PRNG_RESTORE"),                SQLITE_TESTCTRL_PRNG_RESTORE},
    {_SC("TESTCTRL_PRNG_SAVE"),                   SQLITE_TESTCTRL_PRNG_SAVE},
    {_SC("TESTCTRL_RESERVE"),                     SQLITE_TESTCTRL_RESERVE},
    {_SC("TESTCTRL_SCRATCHMALLOC"),               SQLITE_TESTCTRL_SCRATCHMALLOC},
    {_SC("TESTCTRL_SORTER_MMAP"),                 SQLITE_TESTCTRL_SORTER_MMAP},
    {_SC("TESTCTRL_VDBE_COVERAGE"),               SQLITE_TESTCTRL_VDBE_COVERAGE},
    {_SC("TEXT"),                                 SQLITE_TEXT},
    {_SC("TOOBIG"),                               SQLITE_TOOBIG},
    {_SC("TRANSACTION"),                          SQLITE_TRANSACTION},
    {_SC("UPDATE"),                               SQLITE_UPDATE},
    {_SC("UTF16"),                                SQLITE_UTF16},
    {_SC("UTF16BE"),                              SQLITE_UTF16BE},
    {_SC("UTF16LE"),                              SQLITE_UTF16LE},
    {_SC("UTF16_ALIGNED"),                        SQLITE_UTF16_ALIGNED},
    {_SC("UTF8"),                                 SQLITE_UTF8},
    {_SC("VERSION_NUMBER"),                       SQLITE_VERSION_NUMBER},
    {_SC("VTAB_CONSTRAINT_SUPPORT"),              SQLITE_VTAB_CONSTRAINT_SUPPORT},
    {_SC("WARNING"),                              SQLITE_WARNING},
    {_SC("WARNING_AUTOINDEX"),                    SQLITE_WARNING_AUTOINDEX}
};

// ================================================================================================
void Register_Constants(Table & sqlns)
{
    Enumeration e(sqlns.GetVM());

    for (Uint32 n = 0; n < (sizeof(g_MainEnum) / sizeof(EnumElement)); ++n)
    {
        e.Const(g_MainEnum[n].Name, g_MainEnum[n].Value);
    }

    ConstTable(sqlns.GetVM()).Enum(_SC("ESQLite"), e);
}

} // Namespace:: SqMod