Skip to content

[Do not Merge] CI Test #1421

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 210 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
210 commits
Select commit Hold shift + click to select a range
7e2f578
First attempt to offer sqlite_orm as a named C++ module
trueqbit Jul 16, 2024
2adf823
Added includes of dependent headers
trueqbit Jul 17, 2024
b0c02a1
Import named module `std` when building named module `sqlite_orm`
trueqbit Jul 17, 2024
3bbcd81
Reverted changes to examples/iteration.cpp
trueqbit Jul 17, 2024
08908ac
Update using of internal namespace
trueqbit Jul 17, 2024
9c0b25d
Added missing includes to dev/serializing_util.h
trueqbit Jul 18, 2024
5b515ca
Only export the public sqlite_orm API
trueqbit Jul 18, 2024
1ab8076
Included <sqlite3.h> explicitly in examples and unit tests
trueqbit Jul 18, 2024
6aa4c3e
Merge branch 'upstream/dev' into feature/modules-support
trueqbit Jul 18, 2024
7c4f44d
Explicitly included <cstdint> in examples
trueqbit Jul 18, 2024
e6df974
Removed test code in `storage_t<>::drop_column()`
trueqbit Jul 18, 2024
1bd2bac
Explicitly included <cstdint> in unit tests
trueqbit Jul 18, 2024
93f50b1
[CMake] Package module interface unit .ixx file
trueqbit Jul 19, 2024
b28d104
Building the sqlite_orm named module depends on `std.compat`
trueqbit Jul 20, 2024
a971b92
Use std-qualified `std::time_t` in examples
trueqbit Jul 20, 2024
bd635cc
Corrected named module exports
trueqbit Jul 20, 2024
787ac05
Provide a module interface unit .cppm file for clang
trueqbit Jul 20, 2024
dd49223
Removed inclusion of `cxx_universal.h` where it's not needed
trueqbit Jul 20, 2024
59dde21
No more including of `cxx_universal.h`
trueqbit Jul 20, 2024
32b363a
Updated formatting
trueqbit Jul 20, 2024
1b5d90f
Provide a module interface unit .cxx file for gcc
trueqbit Jul 22, 2024
a006f62
Updated newline-endings of clang .cppm file
trueqbit Jul 22, 2024
1a3d518
Trying to compile a test file that consumes sqlite_orm as a named module
trueqbit Jul 22, 2024
ea04817
Merge branch 'upstream/dev' into feature/modules-support
trueqbit Jul 22, 2024
f673902
Corrected if conditions in CMake build scripts
trueqbit Jul 22, 2024
312defd
Trying to correct adding sqlite_orm.ixx to test target sources
trueqbit Jul 22, 2024
d9a6810
Updated formatting of amalgamated sqlite_orm.h
trueqbit Jul 22, 2024
495c2a4
Link sqlite_orm to modules_tests
trueqbit Jul 22, 2024
efbef40
Updated comment on when the "named module" test is built
trueqbit Jul 23, 2024
996bcbc
Merge branch 'upstream/dev' into feature/modules-support
trueqbit Jul 24, 2024
8ba8730
Added `_EXPORT_SQLITE_ORM` macro to clang-format's `AttributeMacros`
trueqbit Jul 24, 2024
8cdae9b
Merge branch 'upstream/dev' into feature/modules-support
trueqbit Jul 24, 2024
40ecb6d
Updated clang-formatting styles before merging upstream/dev
trueqbit Jan 28, 2025
f96cf15
Merge branch 'upstream/dev' into feature/modules-support
trueqbit Jan 28, 2025
b5d80a8
Module-Export of locking mode
trueqbit Jan 28, 2025
84f2289
Corrected exporting symbols for `match`
trueqbit Jan 28, 2025
868fefb
Use range-based for with init-statement
trueqbit Jan 28, 2025
348e1b4
Used `std::remove()`
trueqbit Jan 28, 2025
3c1f7d2
Used internal test macro for C++ range algortithms
trueqbit Jan 28, 2025
05c3868
Fixed a wrong word in the example file for `std::any`
trueqbit Jan 28, 2025
27388f1
Bumped up Catch2 version.
Jan 28, 2025
7c49e34
Use range-based for with init-statement
trueqbit Jan 28, 2025
ae6aa10
Used `std::remove()`
trueqbit Jan 28, 2025
c11ee54
Used internal test macro for C++ range algortithms
trueqbit Jan 28, 2025
ed147d2
Fixed a wrong word in the example file for `std::any`
trueqbit Jan 28, 2025
178794a
Say good-bye to pre-C++14
trueqbit Jan 28, 2025
1406f18
Merge pull request #1386 from maxagorbatenko/dev
trueqbit Jan 29, 2025
c78a77d
Merge branch 'upstream/dev' into upstream/init-range-based-for
trueqbit Jan 29, 2025
3f91f93
Renamed feature test macro for range-based `for`
trueqbit Jan 29, 2025
1dfa9b3
Initialized members of mapped objects in unit tests
trueqbit Jan 29, 2025
e60c923
Runner-up: Used qualified `std::remove()`
trueqbit Jan 29, 2025
051203f
Correctly observe availability of `std::any`
trueqbit Jan 29, 2025
ec30c3d
Replaced #include of `<cassert>` with `<assert.h>`
trueqbit Jan 29, 2025
3f8619b
Removed code used in local test environment
trueqbit Jan 29, 2025
fb0098c
Used C++20 default comparisons where possible
trueqbit Jan 29, 2025
381d129
Updated comment in internal C++ feature check headers
trueqbit Jan 29, 2025
74ed544
Merge pull request #1387 from fnc12/init-range-based-for
trueqbit Jan 29, 2025
0738f17
Runner-up: Used qualified `std::remove()`
trueqbit Jan 29, 2025
dd64414
Correctly observe availability of `std::any`
trueqbit Jan 29, 2025
6feafc2
Replaced #include of `<cassert>` with `<assert.h>`
trueqbit Jan 29, 2025
a162bfc
Used C++20 default comparisons where possible
trueqbit Jan 29, 2025
a223ec0
Merge branch 'upstream/defaulted-comparisons' into upstream/C++17-rou…
trueqbit Jan 29, 2025
493f051
Merge pull request #1388 from fnc12/upstream/defaulted-comparisons
trueqbit Jan 30, 2025
c88a522
Corrected merge errors
trueqbit Jan 30, 2025
8a5e25b
Merge branch 'upstream/dev' into upstream/C++17-round-1
trueqbit Jan 30, 2025
cc01c81
Merge branch 'upstream/dev' into feature/modules-support
trueqbit Jan 30, 2025
12a911a
Reverted removing underscore of a few member variables
trueqbit Jan 30, 2025
1f4cbb7
Various things in respect to 'order by' and 'indexed columns'
trueqbit Jan 30, 2025
bbdaea4
Merge pull request #1389 from fnc12/C++17-round-1
trueqbit Jan 31, 2025
463b4c0
Merge branch 'upstream/dev' into feature/modules-support
trueqbit Jan 31, 2025
86cf6cd
appveyor: trying without C++23 build
trueqbit Jan 31, 2025
d8d4064
Corrected mismatching #ifdef
trueqbit Jan 31, 2025
db32c5d
Remove named module UT file from regular unit test files
trueqbit Feb 2, 2025
8794196
Moved C++ named modules test under a dedicated subfolder
trueqbit Feb 3, 2025
c516022
Revert "appveyor: trying without C++23 build"
trueqbit Feb 3, 2025
1fd53b9
Renamed macros for named module export
trueqbit Feb 4, 2025
fbf6e14
Improved connection reference counting
trueqbit Feb 5, 2025
d9c828d
Merge pull request #1396 from fnc12/connection_reference_counting
trueqbit Feb 5, 2025
9623289
Corrected newline endings of file cstring_literal.h
trueqbit Feb 5, 2025
1d473c6
Merge branch 'upstream/dev' into feature/modules-support
trueqbit Feb 5, 2025
cfc1095
Merge pull request #1336 from fnc12/feature/modules-support
trueqbit Feb 6, 2025
dedbf10
Database connection control options
trueqbit Feb 16, 2025
117f2b1
Updated amalgamated header
trueqbit Feb 16, 2025
9ab6712
Avoided a triple-layered alias template expressions
trueqbit Feb 18, 2025
f422a1b
Corrected the point at which the handler is called to set up the data…
trueqbit Feb 18, 2025
8147850
Renamed database callback function variable
trueqbit Feb 18, 2025
cb39f45
Merge branch 'upstream/circumvent_triple_layered_alias_template' into…
trueqbit Feb 18, 2025
92d95b9
Merge pull request #1401 from fnc12/circumvent_triple_layered_alias_t…
trueqbit Feb 18, 2025
6249684
Merge pull request #1399 from fnc12/connection_control
trueqbit Feb 19, 2025
3dcb110
Added column_pointer and table reference support to foreign key columns
trueqbit Mar 2, 2025
b8eb4e1
Simplified column pointer logic for foreign keys
trueqbit Mar 5, 2025
77daa3b
Added support for primary key table constraint with inheritance
trueqbit Mar 5, 2025
b7104cd
Corrected namespace of metafunction `conjunction`
trueqbit Mar 6, 2025
99d12ba
Updated comments on primary and foreign key builder functions
trueqbit Mar 6, 2025
6f10b3e
Merge pull request #1404 from fnc12/feature/pk-fk-with-inheritance
trueqbit Mar 8, 2025
c44a36e
Fixed binding values in several 'order by' clauses
trueqbit Mar 20, 2025
3a8716e
appveyor: Updated vcpkg environment to 2025.02.14
trueqbit Mar 20, 2025
02fd886
Merge pull request #1407 from fnc12/fix_multi_order_by
trueqbit Mar 20, 2025
88a15d9
open_mode and vfs_object implementation squash
ancientjpeg Jan 30, 2025
c8dd742
test green
ancientjpeg Feb 21, 2025
6393c23
address MSVC lack of designated initializer support
ancientjpeg Feb 21, 2025
d1d98ac
fixup
ancientjpeg Feb 26, 2025
34d38a5
improve tests slightly
ancientjpeg Mar 3, 2025
99f02e9
update test
ancientjpeg Mar 20, 2025
c0ef19f
add string_constant_type define
ancientjpeg Mar 20, 2025
c9be6fa
convert vfs modes to inline constexpr strings
ancientjpeg Mar 20, 2025
be57535
rename to db_open_mode
ancientjpeg Mar 20, 2025
f586a4f
rename vfs name file
ancientjpeg Mar 20, 2025
d3dfbe1
add module exports
ancientjpeg Mar 20, 2025
0744c40
remove label in skip clause
ancientjpeg Mar 20, 2025
0b3970a
all variable renames
ancientjpeg Mar 21, 2025
573158d
name fixups; tests green
ancientjpeg Mar 21, 2025
acabb86
Revert "remove label in skip clause"
ancientjpeg Mar 21, 2025
1da3a83
change connection holder options arg to const ref
ancientjpeg Mar 21, 2025
3b45408
final fixups
ancientjpeg Mar 21, 2025
13627c8
formatting fix
ancientjpeg Mar 21, 2025
aaa11e5
Maximum efficient result row stepping loop
trueqbit Mar 23, 2025
bad4c9f
Removed superfluous value cast to char
trueqbit Mar 23, 2025
38d1e38
Used C API for strings from `std` namespace in unit tests
trueqbit Mar 23, 2025
932f350
Enabled SQLite extended error codes
trueqbit Mar 23, 2025
88ed04a
added sqlite_executor
fnc12 Mar 23, 2025
1f11843
fixed is_insert_raw
fnc12 Mar 23, 2025
0344ae0
Handle empty range and unregistered function errors up-front
trueqbit Mar 23, 2025
03057a2
SQLite error handling solely based on return code
trueqbit Mar 23, 2025
1068c74
added find_column_name to virtual table
fnc12 Mar 24, 2025
946ea02
fixed init order in storage_base and fixed non member pointer types i…
fnc12 Mar 24, 2025
a157910
added compiler check
fnc12 Mar 24, 2025
eb7ba8a
added const
fnc12 Mar 24, 2025
0958cbb
changed flag name
fnc12 Mar 24, 2025
cc80391
Generalized checking the presence of application-defined functions
trueqbit Mar 24, 2025
24588fa
Merge branch 'upstream/dev' into fix_multi_order_by
trueqbit Mar 24, 2025
637ae0f
Runner-up: Fixed binding values in several 'order by' clauses
trueqbit Mar 24, 2025
b3c3fc8
Merge pull request #1414 from fnc12/bugfix/1410
fnc12 Mar 25, 2025
00742fd
Merge branch 'dev' into feature/logger
fnc12 Mar 25, 2025
cb0bb4f
Merge pull request #1415 from fnc12/fix_multi_order_by
trueqbit Mar 25, 2025
8e4b72e
Corrected `polyfill::is_invocable` type trait
trueqbit Mar 25, 2025
99a0f44
Merge branch 'upstream/dev' into upstream/fix_error_race_condition
trueqbit Mar 25, 2025
f6ac5d1
Corrected `polyfill::is_invocable` type trait
trueqbit Mar 25, 2025
b429f84
Added a deduction guide in a unit test file
trueqbit Mar 25, 2025
4942e5a
Require `if constexpr` support
trueqbit Mar 25, 2025
8278f6d
`if constexpr`-ification
trueqbit Mar 25, 2025
b80473b
Corrected construction of "overloaded lambda"
trueqbit Mar 25, 2025
6b2300d
Merge branch 'upstream/fix_error_race_condition' into c++17_if-constexpr
trueqbit Mar 25, 2025
a07bb98
Enabled msvc warning about constant conditional expression
trueqbit Mar 25, 2025
54df3f0
Added a comment about multi-threading and the last insert rowid
trueqbit Mar 26, 2025
3b1b588
Merge pull request #1412 from fnc12/fix_error_race_condition
trueqbit Mar 26, 2025
1a23287
Merge branch 'upstream/fix_error_race_condition' into upstream/c++17_…
trueqbit Mar 26, 2025
971ce8f
Treat member initialization reorder as error for msvc as well
trueqbit Mar 26, 2025
c8f2118
appveyor: Updated vcpkg environment to 2025.03.19
trueqbit Mar 26, 2025
254d0fa
Attached a few more `maybe_unused` attributes
trueqbit Mar 26, 2025
59d4e8a
appveyor: Replaced C++14 build jobs by C++23
trueqbit Mar 26, 2025
1de4c41
Fixed CMake target compile options for msvc
trueqbit Mar 26, 2025
29cdd6d
Require C++ fold expression support
trueqbit Mar 26, 2025
0d25847
Required C++ exception specifications be part of the type system
trueqbit Mar 26, 2025
9628b93
Required C++ Initialization of aggregate class with base classes
trueqbit Mar 26, 2025
0f6148b
appveyor: Corrected CMake generator for Visual Studio 2019 worker image
trueqbit Mar 26, 2025
d21f808
appveyor: Updated Ubuntu build worker image for C++23 builds
trueqbit Mar 26, 2025
239412d
Required C++ Constexpr lambdas
trueqbit Mar 26, 2025
a76b878
appveyor: Try to use Clang-18 for C++23 builds
trueqbit Mar 26, 2025
cc73afc
Corrected concepts used in unit tests.
trueqbit Mar 26, 2025
a46353b
Renamed internal method that sync's regular tables
trueqbit Mar 26, 2025
731225a
Merge branch 'dev' into feature/1392-support-sqlite-vfs
ancientjpeg Mar 26, 2025
7b8fd9b
Renamed `empty_callable` -> `always_default`
trueqbit Mar 27, 2025
e292542
Removed superfluous inclusion of _functional/cxx_core_features.h_
trueqbit Mar 27, 2025
a0eac9b
Renamed _functional/static_magic.h_ -> _functional/always_default.h_
trueqbit Mar 27, 2025
f5f7511
Improved `same_or_void` with concepts
trueqbit Mar 27, 2025
5b2d116
Used `std::time` in a qualified way
trueqbit Mar 27, 2025
132221a
Added a unit test for `always_default`
trueqbit Mar 27, 2025
90a4fe5
Addressed a few things found when compiling with VC 15.9
trueqbit Mar 27, 2025
06ac677
Renamed type trait `is_base_of_template` -> `is_base_template_of`
trueqbit Mar 27, 2025
491ef23
Coalesced checks for C++14 language features
trueqbit Mar 27, 2025
cd8737d
Corrected unit test for `always_default`
trueqbit Mar 28, 2025
ba448ce
Removed superfluous newlines introduced in commit #f96cf150bdb4
trueqbit Mar 28, 2025
b18ef87
Follow-up: Corrected concepts used in unit tests.
trueqbit Mar 28, 2025
c3e2027
Reordered template parameters of type trait `is_base_template_of`
trueqbit Mar 28, 2025
62da285
Merge branch 'upstream/c++17_if-constexpr' into upstream/c++17_fold-e…
trueqbit Mar 28, 2025
5624e6a
Unit test for reverse tuple iteration
trueqbit Mar 28, 2025
29a1aac
Derived class for a string literator operator template needs its own …
trueqbit Mar 28, 2025
6c537ac
Unit test for reverse tuple iteration
trueqbit Mar 28, 2025
0a95bc3
added pragma logger tests
fnc12 Mar 29, 2025
d61cf3c
Merge branch 'dev' into feature/logger
fnc12 Mar 29, 2025
7029ef2
code format
fnc12 Mar 29, 2025
6311714
fixed connection name
fnc12 Mar 29, 2025
a96f29b
Unlike msvc, gcc+clang require NTTPs to be copyable
trueqbit Mar 29, 2025
1df8021
fixed sqlite version
fnc12 Mar 29, 2025
ed8394d
Ensure that a CTE's moniker type is non-const
trueqbit Mar 29, 2025
00ee4a4
Corrected unit test for gcc until v13.3
trueqbit Mar 29, 2025
2f42c7c
Further fallback correction for gcc until v13.3
trueqbit Mar 29, 2025
d9bb705
Handled non-copyable quoted scalar functions
trueqbit Mar 29, 2025
d59eb5d
Replaced `(void)` casts by `maybe_unused` annotations where possible
trueqbit Mar 29, 2025
095c1a0
Corrected "Macintosh" newlines
trueqbit Mar 30, 2025
2bd2b11
Updated a comment on non-copyable quoted functions
trueqbit Mar 30, 2025
0c13c71
C++17 mentioned as a basic requirement in the readme
trueqbit Mar 30, 2025
546fa36
Merge pull request #1417 from fnc12/feature/c++17_if-constexpr
trueqbit Mar 30, 2025
fc3da95
Merge branch 'upstream/dev' into upstream/c++17_fold-expressions
trueqbit Mar 30, 2025
8e8ef20
Merge pull request #1419 from fnc12/c++17-round-3
trueqbit Mar 30, 2025
c72ba19
added tests for almost all public storage funcs
fnc12 Mar 30, 2025
1f2732b
Merge branch 'dev' into feature/logger
fnc12 Mar 30, 2025
b0e2ff8
bug fix after merge
fnc12 Mar 30, 2025
fd41602
removed semicolon
fnc12 Mar 30, 2025
bbcf8f1
removed std::move to fix windows compilation
fnc12 Mar 31, 2025
e3383f0
implement recommended edits
ancientjpeg Mar 31, 2025
75df44a
Merge branch 'dev' into feature/1392-support-sqlite-vfs
ancientjpeg Apr 2, 2025
53bad11
fix visual studio error
ancientjpeg Apr 2, 2025
e94d56c
type fixes
fnc12 Apr 2, 2025
7aada90
run generator
ancientjpeg Apr 2, 2025
564afba
Merge pull request #1393 from Minimal-Audio/feature/1392-support-sqli…
trueqbit Apr 3, 2025
51b32f8
Merge branch 'dev' into feature/logger
fnc12 Apr 3, 2025
2a2600d
reverted perform step(s) implementation
fnc12 Apr 5, 2025
047762f
changed return type to void
fnc12 Apr 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
AttributeMacros: [SQLITE_ORM_CPP_LIKELY, SQLITE_ORM_CPP_UNLIKELY]
AttributeMacros: [SQLITE_ORM_CPP_LIKELY, SQLITE_ORM_CPP_UNLIKELY, SQLITE_ORM_EXPORT]
StatementMacros:
- __pragma
- _Pragma
Expand Down
15 changes: 14 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,19 @@
"type_traits": "cpp",
"utility": "cpp",
"__config": "cpp",
"any": "cpp"
"any": "cpp",
"__threading_support": "cpp",
"condition_variable": "cpp",
"complex": "cpp",
"thread": "cpp",
"future": "cpp",
"fstream": "cpp",
"execution": "cpp",
"iostream": "cpp",
"numbers": "cpp",
"queue": "cpp",
"semaphore": "cpp",
"stack": "cpp",
"unordered_set": "cpp"
}
}
17 changes: 16 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,14 @@ set(PACKAGE_VERSION ${sqlite_orm_VERSION})
project("sqlite_orm" VERSION ${PACKAGE_VERSION})

# Handling C++ standard version to use
option(SQLITE_ORM_ENABLE_CXX_23 "Enable C++ 23" OFF)
option(SQLITE_ORM_ENABLE_CXX_20 "Enable C++ 20" OFF)
option(SQLITE_ORM_ENABLE_CXX_17 "Enable C++ 17" OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(SQLITE_ORM_ENABLE_CXX_20)
if(SQLITE_ORM_ENABLE_CXX_23)
set(CMAKE_CXX_STANDARD 23)
message(STATUS "SQLITE_ORM: Build with C++23 features")
elseif(SQLITE_ORM_ENABLE_CXX_20)
set(CMAKE_CXX_STANDARD 20)
message(STATUS "SQLITE_ORM: Build with C++20 features")
elseif(SQLITE_ORM_ENABLE_CXX_17)
Expand Down Expand Up @@ -51,6 +55,17 @@ target_sources(sqlite_orm INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/incl

target_include_directories(sqlite_orm INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>)

if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
target_compile_options(sqlite_orm INTERFACE
-Wreorder
-Werror=reorder
)
elseif(MSVC)
target_compile_options(sqlite_orm INTERFACE
/we5038
)
endif()

include(ucm)

if (MSVC)
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ SQLite ORM light header only library for modern C++. Please read the license pre
* **No raw string queries**
* **Intuitive syntax**
* **Comfortable interface - one code line per single query**
* **Built with modern C++14/C++17/C++20 features (no macros and external scripts)**
* **Built with modern C++17 functionality (or higher) - no macros and external scripts**
* **CRUD support**
* **Pure select query support**
* **Prepared statements support**
Expand Down Expand Up @@ -801,7 +801,7 @@ If you want to use the lib directly with Make or something else, just set the in

# Requirements

* C++14 compatible compiler (not C++11 cause of templated lambdas in the lib).
* C++17 compatible compiler.
* Sqlite3 installed on your system and in the path, so cmake can find it (or linked to you project if you don't use cmake)

# Video from conference
Expand Down
39 changes: 20 additions & 19 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,26 @@ configuration:
environment:
appveyor_yml_disable_ps_linux: true
matrix:
- job_name: clang, C++14
appveyor_build_worker_image: Ubuntu
CC: clang
CXX: clang++
SQLITE_ORM_CXX_STANDARD: "-DSQLITE_ORM_ENABLE_CXX_14=ON"
- job_name: Visual Studio 2022, x64, C++23
appveyor_build_worker_image: Visual Studio 2022
platform: x64
SQLITE_ORM_CXX_STANDARD: "-DSQLITE_ORM_ENABLE_CXX_23=ON"

- job_name: clang, C++23
appveyor_build_worker_image: Ubuntu2204
CC: clang-18
CXX: clang++-18
SQLITE_ORM_CXX_STANDARD: "-DSQLITE_ORM_ENABLE_CXX_23=ON"
cmake_build_parallel: ""

- job_name: gcc, C++14
appveyor_build_worker_image: Ubuntu
- job_name: gcc, C++23
appveyor_build_worker_image: Ubuntu2204
CC: gcc
CXX: g++
SQLITE_ORM_CXX_STANDARD: "-DSQLITE_ORM_ENABLE_CXX_14=ON"
SQLITE_ORM_CXX_STANDARD: "-DSQLITE_ORM_ENABLE_CXX_23=ON"
# gcc was stuck with a parallel build
cmake_build_parallel: ""

# Representative for C++14
- job_name: Visual Studio 2017, x64, C++14
appveyor_build_worker_image: Visual Studio 2017
platform: x64
SQLITE_ORM_CXX_STANDARD: ""

- job_name: clang, C++17
appveyor_build_worker_image: Ubuntu
CC: clang
Expand Down Expand Up @@ -72,8 +71,9 @@ environment:
SQLITE_ORM_CXX_STANDARD: "-DSQLITE_ORM_ENABLE_CXX_20=ON"
cmake_build_parallel: ""

- job_name: Visual Studio 2022, x64, C++17
appveyor_build_worker_image: Visual Studio 2022
# Representative for C++17
- job_name: Visual Studio 2017, x64, C++17
appveyor_build_worker_image: Visual Studio 2017
platform: x64
SQLITE_ORM_CXX_STANDARD: "-DSQLITE_ORM_ENABLE_CXX_17=ON"

Expand Down Expand Up @@ -108,7 +108,7 @@ for:
install:
- |-
cd C:\Tools\vcpkg
git fetch --tags && git checkout 2025.01.13
git fetch --tags && git checkout 2025.03.19
cd %APPVEYOR_BUILD_FOLDER%
C:\Tools\vcpkg\bootstrap-vcpkg.bat -disableMetrics
C:\Tools\vcpkg\vcpkg integrate install
Expand All @@ -132,6 +132,7 @@ for:
matrix:
only:
- appveyor_build_worker_image: Ubuntu
- appveyor_build_worker_image: Ubuntu2204
init:
- |-
echo $appveyor_build_worker_image
Expand All @@ -141,7 +142,7 @@ for:
install:
- |-
pushd $HOME/vcpkg
git fetch --tags && git checkout 2025.01.13
git fetch --tags && git checkout 2025.03.19
popd
$HOME/vcpkg/bootstrap-vcpkg.sh -disableMetrics
$HOME/vcpkg/vcpkg integrate install --overlay-triplets=vcpkg/triplets
Expand Down Expand Up @@ -169,7 +170,7 @@ for:
# using custom vcpkg triplets for building and linking dynamic dependent libraries
install:
- |-
git clone --depth 1 --branch 2025.01.13 https://github.com/microsoft/vcpkg.git $HOME/vcpkg
git clone --depth 1 --branch 2025.03.19 https://github.com/microsoft/vcpkg.git $HOME/vcpkg
$HOME/vcpkg/bootstrap-vcpkg.sh -disableMetrics
$HOME/vcpkg/vcpkg integrate install --overlay-triplets=vcpkg/triplets
vcpkg install sqlite3[core,dbstat,math,json1,fts5,soundex] catch2 --overlay-triplets=vcpkg/triplets
Expand Down
4 changes: 2 additions & 2 deletions dependencies/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING)
FetchContent_Declare(
Catch2
GIT_REPOSITORY https://github.com/catchorg/Catch2.git
GIT_TAG v3.2.1
GIT_TAG v3.8.0
)
else()
FetchContent_Declare(
Catch2
GIT_REPOSITORY https://github.com/catchorg/Catch2.git
GIT_TAG v3.2.1
GIT_TAG v3.8.0
# prefer find_package() over building from source
FIND_PACKAGE_ARGS 3 CONFIG
)
Expand Down
11 changes: 8 additions & 3 deletions dev/alias.h
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
#pragma once

#ifndef SQLITE_ORM_IMPORT_STD_MODULE
#include <type_traits> // std::enable_if, std::is_same
#include <utility> // std::make_index_sequence, std::move
#include <string> // std::string
#include <sstream> // std::stringstream
#if (SQLITE_VERSION_NUMBER >= 3008003) && defined(SQLITE_ORM_WITH_CTE)
#include <array>
#endif
#endif

#include "functional/cxx_type_traits_polyfill.h"
#include "functional/mpl/conditional.h"
#include "functional/cstring_literal.h"
#include "type_traits.h"
#include "alias_traits.h"
#include "field_of.h"
#include "table_type_of.h"
#include "tags.h"
#include "column_pointer.h"
Expand Down Expand Up @@ -185,7 +188,9 @@ namespace sqlite_orm {
inline constexpr bool is_builtin_numeric_column_alias_v<column_alias<C...>> = ((C >= '0' && C <= '9') && ...);
#endif
}
}

SQLITE_ORM_EXPORT namespace sqlite_orm {
/**
* Using a column pointer, create a column reference to an aliased table column.
*
Expand Down Expand Up @@ -247,7 +252,7 @@ namespace sqlite_orm {
requires (!orm_cte_moniker<internal::auto_type_t<als>>)
constexpr auto alias_column(C field) {
using namespace ::sqlite_orm::internal;
using A = decltype(als);
using A = std::remove_const_t<decltype(als)>;
using aliased_type = type_t<A>;
static_assert(is_field_of_v<C, aliased_type>, "Column must be from aliased table");

Expand Down Expand Up @@ -343,7 +348,7 @@ namespace sqlite_orm {
*/
template<orm_column_alias auto als, class E>
auto as(E expression) {
return internal::as_t<decltype(als), E>{std::move(expression)};
return internal::as_t<std::remove_const_t<decltype(als)>, E>{std::move(expression)};
}

/**
Expand Down Expand Up @@ -375,7 +380,7 @@ namespace sqlite_orm {
#ifdef SQLITE_ORM_WITH_CPP20_ALIASES
template<orm_column_alias auto als>
auto get() {
return internal::alias_holder<decltype(als)>{};
return internal::alias_holder<std::remove_const_t<decltype(als)>>{};
}
#endif

Expand Down
8 changes: 7 additions & 1 deletion dev/alias_traits.h
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
#pragma once

#ifndef SQLITE_ORM_IMPORT_STD_MODULE
#include <type_traits> // std::is_base_of, std::is_same
#ifdef SQLITE_ORM_WITH_CPP20_ALIASES
#include <concepts>
#endif
#endif

#include "functional/cxx_type_traits_polyfill.h"
#include "type_traits.h"
#include "table_reference.h"

namespace sqlite_orm {
SQLITE_ORM_EXPORT namespace sqlite_orm {

/** @short Base class for a custom table alias, column alias or expression alias.
*/
struct alias_tag {};
}

namespace sqlite_orm {
namespace internal {

template<class A>
Expand Down Expand Up @@ -65,7 +69,9 @@ namespace sqlite_orm {
template<class A>
using is_cte_moniker = polyfill::bool_constant<is_cte_moniker_v<A>>;
}
}

SQLITE_ORM_EXPORT namespace sqlite_orm {
#ifdef SQLITE_ORM_WITH_CPP20_ALIASES
template<class A>
concept orm_alias = std::derived_from<A, alias_tag>;
Expand Down
4 changes: 3 additions & 1 deletion dev/arg_values.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

#include "row_extractor.h"

namespace sqlite_orm {
SQLITE_ORM_EXPORT namespace sqlite_orm {

/** @short Wrapper around a dynamically typed value object.
*/
Expand Down Expand Up @@ -98,9 +98,11 @@ namespace sqlite_orm {
return &other.container == &this->container && other.index == this->index;
}

#ifndef SQLITE_ORM_DEFAULT_COMPARISONS_SUPPORTED
bool operator!=(const iterator& other) const {
return !(*this == other);
}
#endif

private:
const arg_values& container;
Expand Down
4 changes: 3 additions & 1 deletion dev/arithmetic_tag.h
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
#pragma once

#ifndef SQLITE_ORM_IMPORT_STD_MODULE
#include <type_traits> // std::is_integral
#endif

#include "functional/mpl/conditional.h"

namespace sqlite_orm {
SQLITE_ORM_EXPORT namespace sqlite_orm {

/**
* Helper classes used by statement_binder and row_extractor.
Expand Down
4 changes: 4 additions & 0 deletions dev/ast/excluded.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#pragma once

#ifndef SQLITE_ORM_IMPORT_STD_MODULE
#include <utility> // std::move
#endif

namespace sqlite_orm {
namespace internal {
Expand All @@ -12,7 +14,9 @@ namespace sqlite_orm {
expression_type expression;
};
}
}

SQLITE_ORM_EXPORT namespace sqlite_orm {
template<class T>
internal::excluded_t<T> excluded(T expression) {
return {std::move(expression)};
Expand Down
4 changes: 4 additions & 0 deletions dev/ast/exists.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#pragma once

#ifndef SQLITE_ORM_IMPORT_STD_MODULE
#include <utility> // std::move
#endif

#include "../tags.h"

Expand All @@ -17,7 +19,9 @@ namespace sqlite_orm {
exists_t(expression_type expression_) : expression(std::move(expression_)) {}
};
}
}

SQLITE_ORM_EXPORT namespace sqlite_orm {
/**
* EXISTS(condition).
* Example: storage.select(columns(&Agent::code, &Agent::name, &Agent::workingArea, &Agent::comission),
Expand Down
4 changes: 4 additions & 0 deletions dev/ast/group_by.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
#pragma once

#ifndef SQLITE_ORM_IMPORT_STD_MODULE
#include <tuple> // std::tuple, std::make_tuple
#include <type_traits> // std::true_type, std::false_type
#include <utility> // std::forward, std::move
#endif

#include "../functional/cxx_type_traits_polyfill.h"

Expand Down Expand Up @@ -37,7 +39,9 @@ namespace sqlite_orm {
using is_group_by = polyfill::disjunction<polyfill::is_specialization_of<T, group_by_t>,
polyfill::is_specialization_of<T, group_by_with_having>>;
}
}

SQLITE_ORM_EXPORT namespace sqlite_orm {
/**
* GROUP BY column.
* Example: storage.get_all<Employee>(group_by(&Employee::name))
Expand Down
2 changes: 2 additions & 0 deletions dev/ast/into.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ namespace sqlite_orm {
template<class T>
using is_into = polyfill::is_specialization_of<T, into_t>;
}
}

SQLITE_ORM_EXPORT namespace sqlite_orm {
template<class T>
internal::into_t<T> into() {
return {};
Expand Down
Loading
Loading