9#ifndef HEADER_SQLITEPP_GLOBAL_IFACE_INCLUDED
10#define HEADER_SQLITEPP_GLOBAL_IFACE_INCLUDED
12#include "exception_iface.hpp"
58 #if SQLITE_VERSION_NUMBER >= SQLITEPP_SQLITE_VERSION(3, 10, 0)
61 using counter_type = int;
65 counter_type highwater;
77 #if SQLITE_VERSION_NUMBER >= SQLITEPP_SQLITE_VERSION(3, 10, 0)
91 template<
int Code,
class ...Args>
94 static void apply(Args && ...args)
102 template<
int Code>
struct config_mapping;
124 template<
int Code,
class ...Args>
130 internal::config_mapping<Code>::type::apply(
std::forward<
decltype(args)>(args)...)
143 SQLITEPP_SUPPRESS_SILLY_VARARG_WARNING_BEGIN
145 #if SQLITEPP_USE_VARARG_POUND_POUND_TRICK
149 #define SQLITEPP_DEFINE_OPTION_0(code) \
150 template<> struct config_mapping<code> { using type = config_option<code>; };
151 #define SQLITEPP_DEFINE_OPTION_N(code, ...) \
152 template<> struct config_mapping<code> { using type = config_option<code, ##__VA_ARGS__>; };
156 #define SQLITEPP_DEFINE_OPTION(code, ...) \
157 template<> struct config_mapping<code> { using type = config_option<code __VA_OPT__(,) __VA_ARGS__>; };
159 #define SQLITEPP_DEFINE_OPTION_N(code, ...) SQLITEPP_DEFINE_OPTION(code __VA_OPT__(,) __VA_ARGS__)
160 #define SQLITEPP_DEFINE_OPTION_0(code) SQLITEPP_DEFINE_OPTION_N(code)
166 SQLITEPP_DEFINE_OPTION_0( SQLITE_CONFIG_SINGLETHREAD );
167 SQLITEPP_DEFINE_OPTION_0( SQLITE_CONFIG_MULTITHREAD );
168 SQLITEPP_DEFINE_OPTION_0( SQLITE_CONFIG_SERIALIZED );
171 #ifdef SQLITE_CONFIG_SMALL_MALLOC
172 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_SMALL_MALLOC,
int);
174 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_MEMSTATUS,
int);
175 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_PAGECACHE,
void *,
int,
int);
176 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_HEAP,
void *,
int,
int);
179 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_LOOKASIDE,
int,
int);
182 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_LOG,
void (*)(
void*,
int,
const char *),
void *);
183 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_URI,
int);
184 #ifdef SQLITE_CONFIG_COVERING_INDEX_SCAN
185 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_COVERING_INDEX_SCAN,
int);
187 #ifdef SQLITE_CONFIG_SQLLOG
188 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_SQLLOG,
void (*)(
void *,
sqlite3 *,
const char *,
int),
void *);
190 #ifdef SQLITE_CONFIG_MMAP_SIZE
191 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_MMAP_SIZE, int64_t, int64_t);
193 #ifdef SQLITE_CONFIG_WIN32_HEAPSIZE
194 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_WIN32_HEAPSIZE,
int);
196 #ifdef SQLITE_CONFIG_PCACHE_HDRSZ
197 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_PCACHE_HDRSZ,
int *);
199 #ifdef SQLITE_CONFIG_PMASZ
200 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_PMASZ,
unsigned int);
202 #ifdef SQLITE_CONFIG_STMTJRNL_SPILL
203 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_STMTJRNL_SPILL,
int);
205 #ifdef SQLITE_CONFIG_SORTERREF_SIZE
206 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_SORTERREF_SIZE,
int);
208 #ifdef SQLITE_CONFIG_MEMDB_MAXSIZE
209 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_MEMDB_MAXSIZE, int64_t);
211 #ifdef SQLITE_CONFIG_ROWID_IN_VIEW
212 SQLITEPP_DEFINE_OPTION_N( SQLITE_CONFIG_ROWID_IN_VIEW,
int);
217 #undef SQLITEPP_DEFINE_OPTION_0
218 #undef SQLITEPP_DEFINE_OPTION_N
219 #ifdef SQLITEPP_DEFINE_OPTION
220 #undef SQLITEPP_DEFINE_OPTION
223 SQLITEPP_SUPPRESS_SILLY_VARARG_WARNING_END
Exception used to report any SQLite errors.
Definition exception_iface.hpp:180
void initialize()
Initialize the SQLite library.
Definition global_iface.hpp:34
auto config(Args &&...args) -> void
Configures SQLite library.
Definition global_iface.hpp:126
void shutdown() noexcept
Deinitialize the SQLite library.
Definition global_iface.hpp:49
status_value status(int op, bool reset=false)
Obtain SQLite runtime status.
Definition global_iface.hpp:74
Return type for status().
Definition global_iface.hpp:57
@ reset
Reset the statement (does not affect the bindings).
Definition statement_iface.hpp:782
ThinSQLite++ namespace.
Definition backup_iface.hpp:17