From 55c4420b69fa172ac7b6b3523597b9a46a5d1bcd Mon Sep 17 00:00:00 2001 From: rtk0c Date: Sun, 22 May 2022 14:54:06 -0700 Subject: Vendor SQLiteCpp completely for internal patching --- 3rdparty/sqlitecpp/source/SQLiteCpp/VariadicBind.h | 98 ++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 3rdparty/sqlitecpp/source/SQLiteCpp/VariadicBind.h (limited to '3rdparty/sqlitecpp/source/SQLiteCpp/VariadicBind.h') diff --git a/3rdparty/sqlitecpp/source/SQLiteCpp/VariadicBind.h b/3rdparty/sqlitecpp/source/SQLiteCpp/VariadicBind.h new file mode 100644 index 0000000..e82b436 --- /dev/null +++ b/3rdparty/sqlitecpp/source/SQLiteCpp/VariadicBind.h @@ -0,0 +1,98 @@ +/** + * @file VariadicBind.h + * @ingroup SQLiteCpp + * @brief Convenience function for Statement::bind(...) + * + * Copyright (c) 2016 Paul Dreik (github@pauldreik.se) + * Copyright (c) 2016-2021 Sebastien Rombauts (sebastien.rombauts@gmail.com) + * Copyright (c) 2019 Maximilian Bachmann (contact@maxbachmann.de) + * + * Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt + * or copy at http://opensource.org/licenses/MIT) + */ +#pragma once + +#include + +#if (__cplusplus >= 201402L) || ( defined(_MSC_VER) && (_MSC_VER >= 1900) ) // c++14: Visual Studio 2015 +#include +#endif // c++14 + +/// @cond +#include +#include + +namespace SQLite +{ +/// @endcond + +/** + * \brief Convenience function for calling Statement::bind(...) once for each argument given. + * + * This takes care of incrementing the index between each calls to bind. + * + * This feature requires a c++11 capable compiler. + * + * \code{.cpp} + * SQLite::Statement stm("SELECT * FROM MyTable WHERE colA>? && colB=? && colC +void bind(SQLite::Statement& query, const Args& ... args) +{ + int pos = 0; + (void)std::initializer_list{ + ((void)query.bind(++pos, std::forward(args)), 0)... + }; +} + +#if (__cplusplus >= 201402L) || ( defined(_MSC_VER) && (_MSC_VER >= 1900) ) // c++14: Visual Studio 2015 + +/** + * \brief Convenience function for calling Statement::bind(...) once for each parameter of a tuple, + * by forwarding them to the variadic template + * + * This feature requires a c++14 capable compiler. + * + * \code{.cpp} + * SQLite::Statement stm("SELECT * FROM MyTable WHERE colA>? && colB=? && colC +void bind(SQLite::Statement& query, const std::tuple &tuple) +{ + bind(query, tuple, std::index_sequence_for()); +} + +/** + * \brief Convenience function for calling Statement::bind(...) once for each parameter of a tuple, + * by forwarding them to the variadic template. This function is just needed to convert the tuples + * to parameter packs + * + * This feature requires a c++14 capable compiler. + * + * @param query statement + * @param tuple tuple with values to bind + */ +template +void bind(SQLite::Statement& query, const std::tuple &tuple, std::index_sequence) +{ + bind(query, std::get(tuple)...); +} +#endif // c++14 + +} // namespace SQLite -- cgit v1.2.3-70-g09d2