10 #ifndef EIGEN_SERIALIZER_H
11 #define EIGEN_SERIALIZER_H
13 #include <type_traits>
26 template <
typename T,
typename EnableIf =
void>
31 class Serializer<
T, typename std::enable_if_t<std::is_trivial<T>::value && std::is_standard_layout<T>::value>> {
53 return dest +
sizeof(
value);
68 return src +
sizeof(
value);
74 template <
typename Derived>
89 const size_t header_bytes =
sizeof(Header);
90 const size_t data_bytes =
sizeof(
Scalar) *
value.size();
93 memcpy(dest, &header, header_bytes);
95 memcpy(dest,
value.data(), data_bytes);
96 return dest + data_bytes;
102 const size_t header_bytes =
sizeof(Header);
105 memcpy(&header, src, header_bytes);
107 const size_t data_bytes =
sizeof(
Scalar) * header.rows * header.cols;
109 value.resize(header.rows, header.cols);
110 memcpy(
value.data(), src, data_bytes);
111 return src + data_bytes;
115 template <
typename Scalar,
int Rows,
int Cols,
int Options,
int MaxRows,
int MaxCols>
117 :
public Serializer<DenseBase<Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols>>> {};
119 template <
typename Scalar,
int Rows,
int Cols,
int Options,
int MaxRows,
int MaxCols>
121 :
public Serializer<DenseBase<Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols>>> {};
126 template <
size_t N,
typename... Types>
129 template <
size_t N,
typename T1,
typename... Ts>
142 dest = serializer.serialize(dest,
end,
value);
149 src = serializer.deserialize(src,
end,
value);
174 template <
typename... Args>
187 template <
typename... Args>
200 template <
typename... Args>
#define EIGEN_USING_STD(FUNC)
Definition: Macros.h:1090
#define EIGEN_PREDICT_FALSE(x)
Definition: Macros.h:1179
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
void serialize(Archive &ar, Vec3D &v)
Definition: Utilities.h:18
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
General-purpose arrays with easy API for coefficient-wise operations.
Definition: Array.h:48
Base class for all dense matrices, vectors, and arrays.
Definition: DenseBase.h:44
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
Derived::Scalar Scalar
Definition: Serializer.h:77
EIGEN_DEVICE_FUNC uint8_t * serialize(uint8_t *dest, uint8_t *end, const Derived &value)
Definition: Serializer.h:86
EIGEN_DEVICE_FUNC size_t size(const Derived &value) const
Definition: Serializer.h:84
EIGEN_DEVICE_FUNC const uint8_t * deserialize(const uint8_t *src, const uint8_t *end, Derived &value) const
Definition: Serializer.h:99
EIGEN_DEVICE_FUNC const uint8_t * deserialize(const uint8_t *src, const uint8_t *end, T &value) const
Definition: Serializer.h:63
EIGEN_DEVICE_FUNC uint8_t * serialize(uint8_t *dest, uint8_t *end, const T &value)
Definition: Serializer.h:48
EIGEN_DEVICE_FUNC size_t size(const T &value) const
Definition: Serializer.h:39
Definition: Serializer.h:27
@ N
Definition: constructor.cpp:22
static constexpr lastp1_t end
Definition: IndexedViewHelper.h:79
if(UPLO(*uplo)==INVALID) info
Definition: level3_impl.h:428
std::uint8_t uint8_t
Definition: Meta.h:36
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
squared absolute value
Definition: GlobalFunctions.h:87
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const uint8_t * deserialize(const uint8_t *src, const uint8_t *end, Args &... args)
Definition: Serializer.h:201
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t serialize_size(const Args &... args)
Definition: Serializer.h:175
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE uint8_t * serialize(uint8_t *dest, uint8_t *end, const Args &... args)
Definition: Serializer.h:188
args
Definition: compute_granudrum_aor.py:143
Definition: Eigen_Colamd.h:49
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE uint8_t * serialize(uint8_t *dest, uint8_t *)
Definition: Serializer.h:159
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t serialize_size()
Definition: Serializer.h:157
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const uint8_t * deserialize(const uint8_t *src, const uint8_t *)
Definition: Serializer.h:161
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE uint8_t * serialize(uint8_t *dest, uint8_t *end, const T1 &value, const Ts &... args)
Definition: Serializer.h:139
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const uint8_t * deserialize(const uint8_t *src, const uint8_t *end, T1 &value, Ts &... args)
Definition: Serializer.h:146
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t serialize_size(const T1 &value, const Ts &... args)
Definition: Serializer.h:133
Definition: Serializer.h:127