SeqAn3
3.0.1
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
136
#if SEQAN3_WITH_CEREAL
138
template
<
typename
value_t,
139
typename
input_archive_t = cereal::BinaryInputArchive,
140
typename
output_archive_t = cereal::BinaryOutputArchive>
141
SEQAN3_CONCEPT
cerealisable
=
142
cereal::traits::is_input_serializable<value_t, input_archive_t>::value &&
143
cereal::traits::is_output_serializable<value_t, output_archive_t>::value;
144
#else
145
template
<
typename
value_t,
146
typename
input_archive_t = void,
147
typename
output_archive_t =
void
>
148
SEQAN3_CONCEPT
cerealisable
=
false
;
149
#endif
150
152
}
// namespace seqan3
153
154
namespace
seqan3::detail
155
{
156
161
#if SEQAN3_WITH_CEREAL
162
template
<
typename
type>
163
using
strip_cereal_wrapper_t =
typename
cereal::traits::strip_minimal<std::decay_t<type>>::type;
164
#else
165
template
<
typename
type>
166
using
strip_cereal_wrapper_t = type;
167
#endif
168
169
}
// 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:36
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 Tue Feb 18 2020 09:33:19 for SeqAn3 by
1.8.16