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
8namespace 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
22
24
26
28
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
42
44
46
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
#define IPPL_MPI_SERIALIZABLE(CppType)
Definition Archive.h:20