aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2021-08-11 18:19:18 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2021-08-12 10:49:16 +0000
commit6f08458e85304e21021e2906524d7819127cc027 (patch)
tree716bda6906d0e6e2e132f925e2810674d667e2b8
parent5d5deca29c49717896bb7eba0968dc99aa674c61 (diff)
PersistentPool: Further simplify templates
... using compile-time if. Change-Id: I593c2db3d90f31089b1835a0f65c598d45981ea1 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
-rw-r--r--src/lib/corelib/tools/persistence.h23
1 files changed, 6 insertions, 17 deletions
diff --git a/src/lib/corelib/tools/persistence.h b/src/lib/corelib/tools/persistence.h
index 0da540263..b7aa543a4 100644
--- a/src/lib/corelib/tools/persistence.h
+++ b/src/lib/corelib/tools/persistence.h
@@ -98,28 +98,17 @@ public:
}
enum OpType { Store, Load };
- template<OpType type, typename ...Types> struct OpTypeHelper { };
- template<typename ...Types> struct OpTypeHelper<Store, Types...>
- {
- static void serializationOp(PersistentPool *pool, const Types &...args)
- {
- pool->store(args...);
- }
- };
- template<typename ...Types> struct OpTypeHelper<Load, Types...>
- {
- static void serializationOp(PersistentPool *pool, Types &...args)
- {
- pool->load(args...);
- }
- };
template<OpType type, typename ...Types> void serializationOp(const Types &...args)
{
- OpTypeHelper<type, Types...>::serializationOp(this, args...);
+ static_assert(type == Store);
+ store(args...);
}
template<OpType type, typename ...Types> void serializationOp(Types &...args)
{
- OpTypeHelper<type, Types...>::serializationOp(this, args...);
+ if constexpr(type == Store)
+ store(args...);
+ else
+ load(args...);
}
void load(const QString &filePath);