ThinSQLite++
A thin, safe and convenient modern C++ wrapper for the SQLite API.
Loading...
Searching...
No Matches
config.hpp
1/*
2 Copyright 2019 Eugene Gershnik
3
4 Use of this source code is governed by a BSD-style
5 license that can be found in the LICENSE file or at
6 https://github.com/gershnik/thinsqlitepp/blob/master/LICENSE
7*/
8
9#ifndef HEADER_SQLITEPP_CONFIG_INCLUDED
10#define HEADER_SQLITEPP_CONFIG_INCLUDED
11
12#ifndef SQLITE_VERSION
13 #if defined(THINSQLITEPP_CUSTOM_SQLITE_H)
14 #include THINSQLITEPP_CUSTOM_SQLITE_H
15 #elif THINSQLITEPP_BUILDING_EXTENSION
16 #include <sqlite3ext.h>
17 SQLITE_EXTENSION_INIT3
18 #else
19 #include <sqlite3.h>
20 #endif
21#endif
22
23#define SQLITEPP_SQLITE_VERSION(x, y, z) ((x) * 1000000 + (y) * 1000 + (z))
24
25#if SQLITE_VERSION_NUMBER < SQLITEPP_SQLITE_VERSION(3, 7, 15)
26
27 #error This library requires SQLite 3.7.15 or greater
28
29#endif
30
31#if __cplusplus <= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG <= 201703L)
32
33 #define SQLITEPP_USE_VARARG_POUND_POUND_TRICK 1
34
35#endif
36
37#ifdef __clang__
38 #define SQLITEPP_SUPPRESS_SILLY_VARARG_WARNING_BEGIN _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"")
39 #define SQLITEPP_SUPPRESS_SILLY_VARARG_WARNING_END _Pragma("GCC diagnostic pop")
40#else
41 #define SQLITEPP_SUPPRESS_SILLY_VARARG_WARNING_BEGIN
42 #define SQLITEPP_SUPPRESS_SILLY_VARARG_WARNING_END
43#endif
44
45#ifndef DOXYGEN
46 #if __cpp_concepts >= 201907L
47 #define SQLITEPP_ENABLE_IF(cond, t) requires(cond) t
48 #define SQLITEPP_ENABLE_IFP(prefix, cond, t) requires(cond) prefix t
49 #else
50 #define SQLITEPP_ENABLE_IF(cond, t) std::enable_if_t<(cond), t>
51 #define SQLITEPP_ENABLE_IFP(prefix, cond, t) prefix std::enable_if_t<(cond), t>
52 #endif
53#else
54 #define SQLITEPP_ENABLE_IF(cond, t) t
55#endif
56
57#if SQLITEPP_BUILDING_MODULE
58 #define SQLITEPP_EXPORTED export
59#else
60 #define SQLITEPP_EXPORTED
61#endif
62
63#endif
64