SeqAn3
3.0.2
The Modern C++ library for sequence analysis.
cereal.hpp
Go to the documentation of this file.
1
// -----------------------------------------------------------------------------------------------------
2
// Copyright (c) 2006-2020, Knut Reinert & Freie Universität Berlin
3
// Copyright (c) 2016-2020, Knut Reinert & MPI für molekulare Genetik
4
// This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
5
// shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
6
// -----------------------------------------------------------------------------------------------------
7
13
#pragma once
14
15
#include <type_traits>
16
17
#include <
seqan3/core/platform.hpp
>
18
19
#if SEQAN3_WITH_CEREAL
20
#include <cereal/details/traits.hpp>
21
#include <cereal/archives/binary.hpp>
22
#endif
23
24
namespace
seqan3
25
{
26
38
#if SEQAN3_WITH_CEREAL
40
template
<
typename
t>
41
SEQAN3_CONCEPT
cereal_output_archive
= std::is_base_of_v<cereal::detail::OutputArchiveBase, t>;
42
#else
43
template
<
typename
t>
44
SEQAN3_CONCEPT
cereal_output_archive
=
false
;
45
#endif
46
59
#if SEQAN3_WITH_CEREAL
61
template
<
typename
t>
62
SEQAN3_CONCEPT
cereal_input_archive
= std::is_base_of_v<cereal::detail::InputArchiveBase, t>;
63
#else
64
template
<
typename
t>
65
SEQAN3_CONCEPT
cereal_input_archive
=
false
;
66
#endif
67
76
#if SEQAN3_WITH_CEREAL
78
template
<
typename
t>
79
SEQAN3_CONCEPT
cereal_archive
=
cereal_output_archive<t>
||
cereal_input_archive<t>
;
80
#else
81
template
<
typename
t>
82
SEQAN3_CONCEPT
cereal_archive
=
false
;
83
#endif
84
97
#if SEQAN3_WITH_CEREAL
99
template
<
typename
t>
100
SEQAN3_CONCEPT
cereal_text_archive
= std::is_base_of_v<cereal::traits::TextArchive, t>;
101
#else
102
template
<
typename
t>
103
SEQAN3_CONCEPT
cereal_text_archive
=
false
;
104
#endif
105
139
#if SEQAN3_WITH_CEREAL
141
template
<
typename
value_t,
142
typename
input_archive_t = cereal::BinaryInputArchive,
143
typename
output_archive_t = cereal::BinaryOutputArchive>
144
SEQAN3_CONCEPT
cerealisable
=
145
cereal::traits::is_input_serializable<value_t, input_archive_t>::value &&
146
cereal::traits::is_output_serializable<value_t, output_archive_t>::value;
147
#else
148
template
<
typename
value_t,
149
typename
input_archive_t = void,
150
typename
output_archive_t =
void
>
151
SEQAN3_CONCEPT
cerealisable
=
false
;
152
#endif
153
155
}
// namespace seqan3
156
157
namespace
seqan3::detail
158
{
159
164
#if SEQAN3_WITH_CEREAL
165
template
<
typename
type>
166
using
strip_cereal_wrapper_t =
typename
cereal::traits::strip_minimal<std::decay_t<type>>::type;
167
#else
168
template
<
typename
type>
169
using
strip_cereal_wrapper_t = type;
170
#endif
171
172
}
// namespace seqan3::detail
cereal_text_archive
All text archives of the Cereal library satisfy this.
cereal_input_archive
All input archives of the Cereal library satisfy this.
seqan3
The main SeqAn3 namespace.
Definition:
aligned_sequence_concept.hpp:29
cereal_output_archive
All output archives of the Cereal library satisfy this.
platform.hpp
Provides platform and dependency checks.
cereal_archive
All archives of the Cereal library satisfy this.
cerealisable
Specifies the requirements for types that are serialisable via Cereal.
seqan3
core
concept
cereal.hpp
Generated on Sat Dec 12 2020 17:52:29 for SeqAn3 by
1.8.20