35#ifndef _BLAZE_MATH_SERIALIZATION_VECTORSERIALIZER_H_
36#define _BLAZE_MATH_SERIALIZATION_VECTORSERIALIZER_H_
169 template<
bool IsDenseVector >
170 struct VectorValueMappingHelper;
182 template<
typename T >
183 struct VectorValueMapping
185 enum { value = VectorValueMappingHelper< IsDenseVector_v<T> >::value };
202 template<
typename Archive,
typename VT,
bool TF >
210 template<
typename Archive,
typename VT,
bool TF >
219 template<
typename Archive,
typename VT >
222 template<
typename Archive,
typename VT,
bool TF >
225 template<
typename Archive,
typename VT,
bool TF >
233 template<
typename Archive,
typename VT >
236 template<
typename VT,
bool TF >
239 template<
typename VT,
bool TF >
242 template<
typename VT >
245 template<
typename Archive,
typename VT >
248 template<
typename Archive,
typename VT,
bool TF >
252 template<
typename Archive,
typename VT,
bool TF >
256 template<
typename Archive,
typename VT,
bool TF >
259 template<
typename Archive,
typename VT,
bool TF >
262 template<
typename Archive,
typename VT,
bool TF >
352 archive << uint8_t ( 1U );
353 archive << uint8_t ( VectorValueMapping<VT>::value );
355 archive << uint8_t (
sizeof( ET ) );
356 archive << uint64_t( vec.size() );
357 archive << uint64_t( IsDenseVector_v<VT> ? vec.size() : vec.nonZeros() );
380 while( ( i < (*vec).size() ) && ( archive << (*vec)[i] ) ) {
406 ConstIterator element( (*vec).begin() );
407 while( ( element != (*vec).end() ) &&
408 ( archive << element->index() << element->value() ) ) {
476 else if( (
type_ & 1U ) != 0U || (
type_ & (~3U) ) != 0U ) {
485 else if( !IsResizable_v<VT> &&
size_ != vec.size() ) {
532template<
typename VT >
535 vec.resize (
size_,
false );
560 else if(
type_ == 2U ) {
593 while( ( i !=
size_ ) && ( archive >> value ) ) {
623 if(
size_ == 0UL )
return;
624 archive.read( &(*vec)[0],
size_ );
655 while( ( i !=
size_ ) && ( archive >> value ) ) {
690 while( ( i !=
number_ ) && ( archive >> index >> value ) ) {
691 (*vec)[index] = value;
725 while( ( i !=
number_ ) && ( archive >> index >> value ) ) {
726 (*vec).append( index, value,
false );
750struct VectorSerializer::VectorValueMappingHelper<true>
763struct VectorSerializer::VectorValueMappingHelper<false>
843template<
typename Archive
865template<
typename Archive
Header file for auxiliary alias declarations.
typename T::ElementType ElementType_t
Alias declaration for nested ElementType type definitions.
Definition: Aliases.h:190
typename T::ConstIterator ConstIterator_t
Alias declaration for nested ConstIterator type definitions.
Definition: Aliases.h:130
Header file for run time assertion macros.
Header file for the EnableIf class template.
Header file for the IsDenseVector type trait.
Header file for the IsResizable type trait.
void serialize(Archive &archive, const Matrix< MT, SO > &mat)
Serializes the given matrix and writes it to the archive.
Definition: MatrixSerializer.h:1256
void deserialize(Archive &archive, Matrix< MT, SO > &mat)
Deserializes a matrix from the given archive.
Definition: MatrixSerializer.h:1278
Header file for the TypeValueMapping class template.
Binary archive for the portable serialization of data.
Definition: Archive.h:140
Base class for N-dimensional dense vectors.
Definition: DenseVector.h:77
Base class for sparse vectors.
Definition: SparseVector.h:72
Serializer for dense and sparse vectors.
Definition: VectorSerializer.h:153
void deserializeHeader(Archive &archive, const VT &vec)
Deserializes all meta information about the given vector.
Definition: VectorSerializer.h:466
uint8_t elementSize_
The size in bytes of a single element of the vector.
Definition: VectorSerializer.h:273
void deserialize(Archive &archive, Vector< VT, TF > &vec)
Deserializes a vector from the given archive.
Definition: VectorSerializer.h:438
uint8_t elementType_
The type of an element.
Definition: VectorSerializer.h:272
uint64_t number_
The total number of elements contained in the vector.
Definition: VectorSerializer.h:275
VectorSerializer()
The default constructor of the VectorSerializer class.
Definition: VectorSerializer.h:293
void serialize(Archive &archive, const Vector< VT, TF > &vec)
Serializes the given vector and writes it to the archive.
Definition: VectorSerializer.h:326
void deserializeVector(Archive &archive, VT &vec)
Deserializes a vector from the archive.
Definition: VectorSerializer.h:555
void deserializeSparseVector(Archive &archive, DenseVector< VT, TF > &vec)
Deserializes a sparse vector from the archive.
Definition: VectorSerializer.h:682
uint64_t size_
The size of the vector.
Definition: VectorSerializer.h:274
uint8_t type_
The type of the vector.
Definition: VectorSerializer.h:271
void serializeHeader(Archive &archive, const VT &vec)
Serializes all meta information about the given vector.
Definition: VectorSerializer.h:348
DisableIf_t< IsResizable_v< VT > > prepareVector(DenseVector< VT, TF > &vec)
Prepares the given non-resizable dense vector for the deserialization process.
Definition: VectorSerializer.h:503
DisableIf_t< VT::simdEnabled > deserializeDenseVector(Archive &archive, DenseVector< VT, TF > &vec)
Deserializes a dense vector from the archive.
Definition: VectorSerializer.h:586
void serializeVector(Archive &archive, const DenseVector< VT, TF > &vec)
Serializes the elements of a dense vector.
Definition: VectorSerializer.h:377
uint8_t version_
The version of the archive.
Definition: VectorSerializer.h:270
Base class for N-dimensional vectors.
Definition: Vector.h:82
Constraint on the data type.
Header file for the DenseVector base class.
Header file for the SparseVector base class.
Header file for the Vector CRTP base class.
#define BLAZE_CONSTRAINT_MUST_BE_VECTOR_TYPE(T)
Constraint on the data type.
Definition: Vector.h:61
constexpr void reset(Matrix< MT, SO > &matrix)
Resetting the given matrix.
Definition: Matrix.h:806
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.
Definition: Assert.h:101
#define BLAZE_THROW_RUNTIME_ERROR(MESSAGE)
Macro for the emission of a std::runtime_error exception.
Definition: Exception.h:379
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:138
#define BLAZE_THROW_INVALID_ARGUMENT(MESSAGE)
Macro for the emission of a std::invalid_argument exception.
Definition: Exception.h:235
typename EnableIf<!Condition, T >::Type DisableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:175
Header file for the exception macros of the math module.
Conversion from a data type to a serial representation.
Definition: TypeValueMapping.h:164
Header file for basic type definitions.