SeqAn3
3.4.0-rc.3
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
14
#include <
seqan3/core/platform.hpp
>
15
16
#if SEQAN3_WITH_CEREAL
17
# include <cereal/archives/binary.hpp>
18
# include <cereal/details/traits.hpp>
19
#endif
20
21
namespace
seqan3
22
{
23
38
#if SEQAN3_WITH_CEREAL
39
template
<
typename
t>
40
concept
cereal_output_archive
=
std::is_base_of_v<cereal::detail::OutputArchiveBase, t>
;
41
#else
42
template
<
typename
t>
43
concept
cereal_output_archive
=
false
;
44
#endif
46
61
#if SEQAN3_WITH_CEREAL
62
template
<
typename
t>
63
concept
cereal_input_archive
=
std::is_base_of_v<cereal::detail::InputArchiveBase, t>
;
64
#else
65
template
<
typename
t>
66
concept
cereal_input_archive
=
false
;
67
#endif
69
80
#if SEQAN3_WITH_CEREAL
81
template
<
typename
t>
82
concept
cereal_archive
=
cereal_output_archive<t>
||
cereal_input_archive<t>
;
83
#else
84
template
<
typename
t>
85
concept
cereal_archive
=
false
;
86
#endif
88
103
#if SEQAN3_WITH_CEREAL
104
template
<
typename
t>
105
concept
cereal_text_archive
=
std::is_base_of_v<cereal::traits::TextArchive, t>
;
106
#else
107
template
<
typename
t>
108
concept
cereal_text_archive
=
false
;
109
#endif
111
145
#if SEQAN3_WITH_CEREAL
146
template
<
typename
value_t,
147
typename
input_archive_t = cereal::BinaryInputArchive,
148
typename
output_archive_t = cereal::BinaryOutputArchive>
149
concept
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
152
template
<
typename
value_t,
typename
input_archive_t =
void
,
typename
output_archive_t =
void
>
153
concept
cerealisable
=
false
;
154
#endif
156
157
}
// namespace seqan3
158
159
namespace
seqan3::detail
160
{
161
166
#if SEQAN3_WITH_CEREAL
167
template
<
typename
type>
168
using
strip_cereal_wrapper_t =
typename
cereal::traits::strip_minimal<std::decay_t<type>>::type;
169
#else
170
template
<
typename
type>
171
using
strip_cereal_wrapper_t = type;
172
#endif
173
174
}
// namespace seqan3::detail
cereal_archive
All archives of the Cereal library satisfy this.
cereal_input_archive
All input archives of the Cereal library satisfy this.
cereal_output_archive
All output archives of the Cereal library satisfy this.
cereal_text_archive
All text archives of the Cereal library satisfy this.
cerealisable
Specifies the requirements for types that are serialisable via Cereal.
seqan3
The main SeqAn3 namespace.
Definition
aligned_sequence_concept.hpp:26
platform.hpp
Provides platform and dependency checks.
std::tuple_size_v
T tuple_size_v
type_traits
Hide me
Version:
seqan3
core
concept
cereal.hpp
Generated on Wed Apr 23 2025 13:22:40 for SeqAn3 by
1.9.8