From c7542bf7b1cd90641e55924d5abd3b71da681d73 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Fri, 4 Mar 2022 21:59:48 +0000 Subject: Simplify a few bits of code with fold expressions --- icetray/icetray/abstractCachingDatabaseClient.cpp | 5 ----- icetray/icetray/abstractCachingDatabaseClient.h | 17 +++-------------- icetray/icetray/abstractDatabaseClient.h | 13 +++++-------- icetray/icetray/logger.h | 11 ++--------- 4 files changed, 10 insertions(+), 36 deletions(-) diff --git a/icetray/icetray/abstractCachingDatabaseClient.cpp b/icetray/icetray/abstractCachingDatabaseClient.cpp index 3671f63..fcd5ed5 100644 --- a/icetray/icetray/abstractCachingDatabaseClient.cpp +++ b/icetray/icetray/abstractCachingDatabaseClient.cpp @@ -16,9 +16,4 @@ namespace IceTray { AbstractDatabaseClient(d) { } - - void - AbstractCachingDatabaseClient::keyPushParams(CacheKey &) - { - } } diff --git a/icetray/icetray/abstractCachingDatabaseClient.h b/icetray/icetray/abstractCachingDatabaseClient.h index e9e91e7..eac937c 100644 --- a/icetray/icetray/abstractCachingDatabaseClient.h +++ b/icetray/icetray/abstractCachingDatabaseClient.h @@ -18,6 +18,7 @@ // IWYU pragma: no_include "cache.impl.h" // IWYU pragma: no_include // IWYU pragma: no_include +// IWYU pragma: no_include namespace IceTray { class DLL_PUBLIC AbstractCachingDatabaseClient : public AbstractDatabaseClient { @@ -32,11 +33,8 @@ namespace IceTray { inline Domain fetchCache(const SqlSource & sql, time_t cacheTime, const Params &... params) { - CacheKey key; - key.reserve(sizeof...(Params) + 2); - key.push_back(*sql.getCommandOptions()->hash); - key.push_back(typeid(Domain).hash_code()); - keyPushParams(key, params...); + const CacheKey key {sql.getCommandOptions()->hash.value_or(0), typeid(Domain).hash_code(), + (std::hash()(params))...}; if (auto cached = cache.get(key)) { return std::any_cast(*cached); } @@ -46,15 +44,6 @@ namespace IceTray { } private: - template - static void inline keyPushParams(CacheKey & k, const Param & p, const Params &... params) - { - k.push_back(std::hash()(p)); - keyPushParams(k, params...); - } - - static void keyPushParams(CacheKey &); - using Cache = AdHoc::Cache; Cache cache; }; diff --git a/icetray/icetray/abstractDatabaseClient.h b/icetray/icetray/abstractDatabaseClient.h index cc81251..85f95b2 100644 --- a/icetray/icetray/abstractDatabaseClient.h +++ b/icetray/icetray/abstractDatabaseClient.h @@ -51,7 +51,7 @@ namespace IceTray { const Params &... params) { auto s = sql.select(c); - bind(0, s.get(), params...); + bind(s.get(), params...); return Slicer::DeserializeAny(s.get(), typeIdCol); } @@ -68,20 +68,17 @@ namespace IceTray { modify(DB::Connection * c, const SqlSource & sql, const Params &... params) { auto s = sql.modify(c); - bind(0, s.get(), params...); + bind(s.get(), params...); return s->execute(); } protected: - template - static void inline bind(unsigned int offset, DB::Command * cmd, const Param & p, const Params &... params) + template static void inline bind(DB::Command * cmd, const Params &... params) { - cmd->bindParam(offset, p); - bind(offset + 1, cmd, params...); + unsigned int offset {}; + (cmd->bindParam(offset++, params), ...); } - static void inline bind(unsigned int, DB::Command *) { } - DB::ConnectionPoolPtr db; }; } diff --git a/icetray/icetray/logger.h b/icetray/icetray/logger.h index d625217..81b64c6 100644 --- a/icetray/icetray/logger.h +++ b/icetray/icetray/logger.h @@ -72,20 +72,13 @@ namespace IceTray { const auto fl = firstFor(priority); if (fl != logs.end()) { auto fmt = AdHoc::Buffer::getFormat(msgfmt); - messagebf(fl, priority, fmt, args...); + (fmt % ... % args); + messagebf(fl, priority, fmt); } } private: void message(LogLevelWriters::const_iterator fl, LogLevel priority, const std::string & msg) const; - template - void - messagebf(LogLevelWriters::const_iterator fl, LogLevel priority, boost::format & f, const Arg & arg, - const OtherArgs &... otherargs) const - { - f % arg; - messagebf(fl, priority, f, otherargs...); - } void messagebf(LogLevelWriters::const_iterator fl, LogLevel priority, const boost::format & f) const; LogLevelWriters::const_iterator firstFor(LogLevel priority) const; -- cgit v1.2.3