diff --git a/src/libs/sqlite/sqlitebasestatement.h b/src/libs/sqlite/sqlitebasestatement.h index fd57b4f8f1c..397068477c1 100644 --- a/src/libs/sqlite/sqlitebasestatement.h +++ b/src/libs/sqlite/sqlitebasestatement.h @@ -27,6 +27,12 @@ using std::int64_t; +#ifdef Q_CC_MSVC +#define FLATTEN [[msvc::flatten]] +#else +#define FLATTEN [[gnu::flatten]] +#endif + namespace Sqlite { class Database; @@ -150,7 +156,7 @@ public: using BaseStatement::BaseStatement; StatementImplementation(StatementImplementation &&) = default; - void execute() + FLATTEN void execute() { Resetter resetter{this}; BaseStatement::next(); @@ -166,7 +172,7 @@ public: } template - void write(const ValueType&... values) + FLATTEN void write(const ValueType &...values) { Resetter resetter{this}; bindValues(values...); @@ -190,7 +196,7 @@ public: std::size_t capacity = 32, typename = std::enable_if_t::value>, typename... QueryTypes> - auto values(const QueryTypes &...queryValues) + FLATTEN auto values(const QueryTypes &...queryValues) { Resetter resetter{this}; Container resultValues; @@ -211,7 +217,7 @@ public: template typename Container = std::vector, typename = std::enable_if_t::value>, typename... QueryTypes> - auto values(const QueryTypes &...queryValues) + FLATTEN auto values(const QueryTypes &...queryValues) { return values, capacity>(queryValues...); } @@ -231,7 +237,7 @@ public: } template - auto optionalValue(const QueryTypes &...queryValues) + FLATTEN auto optionalValue(const QueryTypes &...queryValues) { Resetter resetter{this}; std::optional resultValue; @@ -245,7 +251,7 @@ public: } template - static auto toValue(Utils::SmallStringView sqlStatement, Database &database) + FLATTEN static auto toValue(Utils::SmallStringView sqlStatement, Database &database) { StatementImplementation statement(sqlStatement, database); @@ -257,7 +263,7 @@ public: } template - void readCallback(Callable &&callable, const QueryTypes &...queryValues) + FLATTEN void readCallback(Callable &&callable, const QueryTypes &...queryValues) { Resetter resetter{this}; @@ -272,7 +278,7 @@ public: } template - void readTo(Container &container, const QueryTypes &...queryValues) + FLATTEN void readTo(Container &container, const QueryTypes &...queryValues) { Resetter resetter{this}; @@ -283,13 +289,13 @@ public: } template - auto range(const QueryTypes &...queryValues) + FLATTEN auto range(const QueryTypes &...queryValues) { return SqliteResultRange{*this, queryValues...}; } template - auto rangeWithTransaction(const QueryTypes &...queryValues) + FLATTEN auto rangeWithTransaction(const QueryTypes &...queryValues) { return SqliteResultRangeWithTransaction{*this, queryValues...}; } diff --git a/src/libs/sqlite/sqlitereadstatement.h b/src/libs/sqlite/sqlitereadstatement.h index 4f8091598b0..eebce41780b 100644 --- a/src/libs/sqlite/sqlitereadstatement.h +++ b/src/libs/sqlite/sqlitereadstatement.h @@ -32,7 +32,7 @@ public: using Base::values; template - auto valueWithTransaction(const QueryTypes &...queryValues) + FLATTEN auto valueWithTransaction(const QueryTypes &...queryValues) { return withDeferredTransaction(Base::database(), [&] { return Base::template value(queryValues...); @@ -40,7 +40,7 @@ public: } template - auto optionalValueWithTransaction(const QueryTypes &...queryValues) + FLATTEN auto optionalValueWithTransaction(const QueryTypes &...queryValues) { return withDeferredTransaction(Base::database(), [&] { return Base::template optionalValue(queryValues...); @@ -48,7 +48,7 @@ public: } template - auto valuesWithTransaction(const QueryTypes &...queryValues) + FLATTEN auto valuesWithTransaction(const QueryTypes &...queryValues) { return withDeferredTransaction(Base::database(), [&] { return Base::template values(queryValues...); @@ -56,7 +56,7 @@ public: } template - void readCallbackWithTransaction(Callable &&callable, const QueryTypes &...queryValues) + FLATTEN void readCallbackWithTransaction(Callable &&callable, const QueryTypes &...queryValues) { withDeferredTransaction(Base::database(), [&] { Base::readCallback(std::forward(callable), queryValues...); @@ -64,7 +64,7 @@ public: } template - void readToWithTransaction(Container &container, const QueryTypes &...queryValues) + FLATTEN void readToWithTransaction(Container &container, const QueryTypes &...queryValues) { withDeferredTransaction(Base::database(), [&] { Base::readTo(container, queryValues...); }); } diff --git a/src/libs/sqlite/sqlitereadwritestatement.h b/src/libs/sqlite/sqlitereadwritestatement.h index 2b3e6c32477..8e3825cb52c 100644 --- a/src/libs/sqlite/sqlitereadwritestatement.h +++ b/src/libs/sqlite/sqlitereadwritestatement.h @@ -32,7 +32,7 @@ public: using Base::write; template - auto valueWithTransaction(const QueryTypes &...queryValues) + FLATTEN auto valueWithTransaction(const QueryTypes &...queryValues) { return withImmediateTransaction(Base::database(), [&] { return Base::template value(queryValues...); @@ -40,17 +40,15 @@ public: } template - auto optionalValueWithTransaction(const QueryTypes &...queryValues) + FLATTEN auto optionalValueWithTransaction(const QueryTypes &...queryValues) { return withImmediateTransaction(Base::database(), [&] { return Base::template optionalValue(queryValues...); }); } - template - auto valuesWithTransaction(const QueryTypes &...queryValues) + template + FLATTEN auto valuesWithTransaction(const QueryTypes &...queryValues) { return withImmediateTransaction(Base::database(), [&] { return Base::template values(queryValues...); @@ -58,7 +56,7 @@ public: } template - void readCallbackWithTransaction(Callable &&callable, const QueryTypes &...queryValues) + FLATTEN void readCallbackWithTransaction(Callable &&callable, const QueryTypes &...queryValues) { withImmediateTransaction(Base::database(), [&] { Base::readCallback(std::forward(callable), queryValues...); @@ -66,14 +64,14 @@ public: } template - void readToWithTransaction(Container &container, const QueryTypes &...queryValues) + FLATTEN void readToWithTransaction(Container &container, const QueryTypes &...queryValues) { withImmediateTransaction(Base::database(), [&] { Base::readTo(container, queryValues...); }); } - void executeWithTransaction() + FLATTEN void executeWithTransaction() { withImmediateTransaction(Base::database(), [&] { Base::execute();