// Copyright (C) 2016 Jochen Becher // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include "parameters.h" #include namespace qark { #if 0 // TODO this is ambigous with default implementation in access.h template inline typename std::enable_if::value, void>::type save( Archive &archive, const T &value, const Parameters &) { archive.write(static_cast(value)); } template inline typename std::enable_if::value, void>::type load( Archive &archive, T &value, const Parameters &) { int i = 0; archive.read(&i); value = (T) i; } #endif #define QARK_SERIALIZE_ENUM(ENUM) \ template \ inline void save(Archive &archive, const ENUM &e, const Parameters &) \ { \ archive.write(static_cast(e)); \ } \ template \ inline void load(Archive &archive, ENUM &e, const Parameters &) \ { \ int i = 0; \ archive.read(&i); \ e = (ENUM) i; \ } template inline void save(Archive &archive, const QFlags &flags, const Parameters &) { archive.write((typename QFlags::Int) flags); } template inline void load(Archive &archive, QFlags &flags, const Parameters &) { typename QFlags::Int i = 0; archive.read(&i); flags = QFlags(i); } } // namespace qark