IPPL (Independent Parallel Particle Layer)
IPPL
Loading...
Searching...
No Matches
Serializable.h
Go to the documentation of this file.
1
#ifndef IPPL_MPI_SERIALIZABLE_H
2
#define IPPL_MPI_SERIALIZABLE_H
3
4
#include <complex>
5
#include <type_traits>
6
#include <vector>
7
8
namespace
ippl
{
9
namespace
mpi
{
10
11
template
<
typename
>
12
struct
is_serializable
: std::false_type {};
13
14
#define IPPL_MPI_SERIALIZABLE(CppType) \
15
template <> \
16
struct is_serializable<CppType> : std::true_type {}; \
17
\
18
template <> \
19
struct is_serializable<std::vector<CppType> > : std::true_type {};
20
21
IPPL_MPI_SERIALIZABLE
(
char
);
22
23
IPPL_MPI_SERIALIZABLE
(
short
);
24
25
IPPL_MPI_SERIALIZABLE
(
int
);
26
27
IPPL_MPI_SERIALIZABLE
(
long
);
28
29
IPPL_MPI_SERIALIZABLE
(
long
long
);
30
31
IPPL_MPI_SERIALIZABLE
(
unsigned
char
);
32
33
IPPL_MPI_SERIALIZABLE
(
unsigned
short
);
34
35
IPPL_MPI_SERIALIZABLE
(
unsigned
int
);
36
37
IPPL_MPI_SERIALIZABLE
(
unsigned
long
);
38
39
IPPL_MPI_SERIALIZABLE
(
unsigned
long
long
);
40
41
IPPL_MPI_SERIALIZABLE
(
float
);
42
43
IPPL_MPI_SERIALIZABLE
(
double
);
44
45
IPPL_MPI_SERIALIZABLE
(
long
double
);
46
47
IPPL_MPI_SERIALIZABLE
(
bool
);
48
49
// IPPL_MPI_SERIALIZABLE(std::int8_t);
50
//
51
// IPPL_MPI_SERIALIZABLE(std::int16_t);
52
//
53
// IPPL_MPI_SERIALIZABLE(std::int32_t);
54
//
55
// IPPL_MPI_SERIALIZABLE(std::int64_t);
56
//
57
// IPPL_MPI_SERIALIZABLE(std::uint8_t);
58
//
59
// IPPL_MPI_SERIALIZABLE(std::uint16_t);
60
//
61
// IPPL_MPI_SERIALIZABLE(std::uint32_t);
62
//
63
// IPPL_MPI_SERIALIZABLE(std::uint64_t);
64
65
IPPL_MPI_SERIALIZABLE
(std::complex<float>);
66
67
IPPL_MPI_SERIALIZABLE
(std::complex<double>);
68
69
IPPL_MPI_SERIALIZABLE
(std::complex<long double>);
70
71
}
// namespace mpi
72
}
// namespace ippl
73
74
#endif
IPPL_MPI_SERIALIZABLE
#define IPPL_MPI_SERIALIZABLE(CppType)
Definition
Serializable.h:14
ippl
Definition
Archive.h:20
ippl::mpi
Definition
Buffers.cpp:28
ippl::mpi::is_serializable
Definition
Serializable.h:12