From f5394bf1e82de64e3c5282688ba097b84f342a7c Mon Sep 17 00:00:00 2001 From: Ivan Komissarov Date: Sun, 20 Jun 2021 21:00:18 +0200 Subject: Implement Persistence::store/load functions for tuples Change-Id: Idf14c56e88624efe63cff0a502d6d46f7fce49c8 Reviewed-by: Christian Kandeler --- src/lib/corelib/tools/persistence.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/lib/corelib/tools/persistence.h b/src/lib/corelib/tools/persistence.h index 29d586177..ed3238f2b 100644 --- a/src/lib/corelib/tools/persistence.h +++ b/src/lib/corelib/tools/persistence.h @@ -453,6 +453,33 @@ template struct PPHelper> } }; +template struct PPHelper> +{ + template + static void storeHelper( + std::index_sequence, const std::tuple &tuple, PersistentPool *pool) + { + (pool->store(std::get(tuple)), ...); + } + + static void store(const std::tuple &tuple, PersistentPool *pool) + { + storeHelper(std::make_index_sequence(), tuple, pool); + } + + template + static void loadHelper( + std::index_sequence, std::tuple &tuple, PersistentPool *pool) + { + (pool->load(std::get(tuple)), ...); + } + + static void load(std::tuple &tuple, PersistentPool * pool) + { + loadHelper(std::make_index_sequence(), tuple, pool); + } +}; + template struct PPHelper> { using Int = typename QFlags::Int; -- cgit v1.2.3