SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
cereal.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2006-2024 Knut Reinert & Freie Universität Berlin
2// SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
3// SPDX-License-Identifier: BSD-3-Clause
4
10#pragma once
11
12#include <type_traits>
13
15
16#if SEQAN3_WITH_CEREAL
17# include <cereal/archives/binary.hpp>
18# include <cereal/details/traits.hpp>
19#endif
20
21namespace seqan3
22{
23
38#if SEQAN3_WITH_CEREAL
39template <typename t>
40concept cereal_output_archive = std::is_base_of_v<cereal::detail::OutputArchiveBase, t>;
41#else
42template <typename t>
43concept cereal_output_archive = false;
44#endif
46
61#if SEQAN3_WITH_CEREAL
62template <typename t>
63concept cereal_input_archive = std::is_base_of_v<cereal::detail::InputArchiveBase, t>;
64#else
65template <typename t>
66concept cereal_input_archive = false;
67#endif
69
80#if SEQAN3_WITH_CEREAL
81template <typename t>
83#else
84template <typename t>
85concept cereal_archive = false;
86#endif
88
103#if SEQAN3_WITH_CEREAL
104template <typename t>
105concept cereal_text_archive = std::is_base_of_v<cereal::traits::TextArchive, t>;
106#else
107template <typename t>
108concept cereal_text_archive = false;
109#endif
111
145#if SEQAN3_WITH_CEREAL
146template <typename value_t,
147 typename input_archive_t = cereal::BinaryInputArchive,
148 typename output_archive_t = cereal::BinaryOutputArchive>
149concept cerealisable = cereal::traits::is_input_serializable<value_t, input_archive_t>::value
150 && cereal::traits::is_output_serializable<value_t, output_archive_t>::value;
151#else
152template <typename value_t, typename input_archive_t = void, typename output_archive_t = void>
153concept cerealisable = false;
154#endif
156
157} // namespace seqan3
158
159namespace seqan3::detail
160{
161
166#if SEQAN3_WITH_CEREAL
167template <typename type>
168using strip_cereal_wrapper_t = typename cereal::traits::strip_minimal<std::decay_t<type>>::type;
169#else
170template <typename type>
171using strip_cereal_wrapper_t = type;
172#endif
173
174} // namespace seqan3::detail
All archives of the Cereal library satisfy this.
All input archives of the Cereal library satisfy this.
All output archives of the Cereal library satisfy this.
All text archives of the Cereal library satisfy this.
Specifies the requirements for types that are serialisable via Cereal.
The main SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
Provides platform and dependency checks.
Hide me