SeqAn3
3.0.2
The Modern C++ library for sequence analysis.
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
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.
Version:
main_user
main_dev
3.4.0
3.3.0
3.2.0
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
seqan3
core
concept
cereal.hpp
Generated on Thu Dec 3 2020 18:58:18 for SeqAn3 by
1.8.20