35 #ifndef _BLAZE_MATH_SERIALIZATION_VECTORSERIALIZER_H_ 36 #define _BLAZE_MATH_SERIALIZATION_VECTORSERIALIZER_H_ 170 template<
bool IsDenseVector >
171 struct VectorValueMappingHelper;
183 template<
typename T >
184 struct VectorValueMapping
186 enum { value = VectorValueMappingHelper< IsDenseVector_v<T> >::value };
203 template<
typename Archive,
typename VT,
bool TF >
211 template<
typename Archive,
typename VT,
bool TF >
220 template<
typename Archive,
typename VT >
223 template<
typename Archive,
typename VT,
bool TF >
226 template<
typename Archive,
typename VT,
bool TF >
234 template<
typename Archive,
typename VT >
237 template<
typename VT,
bool TF >
240 template<
typename VT,
bool TF >
243 template<
typename VT >
246 template<
typename Archive,
typename VT >
249 template<
typename Archive,
typename VT,
bool TF >
253 template<
typename Archive,
typename VT,
bool TF >
257 template<
typename Archive,
typename VT,
bool TF >
260 template<
typename Archive,
typename VT,
bool TF >
263 template<
typename Archive,
typename VT,
bool TF >
354 archive <<
uint8_t ( VectorValueMapping<VT>::value );
356 archive <<
uint8_t (
sizeof( ET ) );
358 archive <<
uint64_t( IsDenseVector_v<VT> ? vec.size() : vec.nonZeros() );
381 while( ( i < (~vec).
size() ) && ( archive << (~vec)[i] ) ) {
407 ConstIterator element( (~vec).
begin() );
408 while( ( element != (~vec).
end() ) &&
409 ( archive << element->index() << element->value() ) ) {
477 else if( (
type_ & 1U ) != 0U || (
type_ & (~3U) ) != 0U ) {
486 else if( !IsResizable_v<VT> &&
size_ != vec.size() ) {
502 template<
typename VT
517 template<
typename VT
533 template<
typename VT >
536 vec.resize (
size_,
false );
561 else if(
type_ == 2U ) {
594 while( ( i !=
size_ ) && ( archive >> value ) ) {
624 if(
size_ == 0UL )
return;
625 archive.read( &(~vec)[0],
size_ );
656 while( ( i !=
size_ ) && ( archive >> value ) ) {
691 while( ( i !=
number_ ) && ( archive >> index >> value ) ) {
692 (~vec)[index] = value;
726 while( ( i !=
number_ ) && ( archive >> index >> value ) ) {
727 (~vec).append( index, value,
false );
751 struct VectorSerializer::VectorValueMappingHelper<true>
764 struct VectorSerializer::VectorValueMappingHelper<false>
844 template<
typename Archive
866 template<
typename Archive
#define BLAZE_THROW_INVALID_ARGUMENT(MESSAGE)
Macro for the emission of a std::invalid_argument exception.This macro encapsulates the default way o...
Definition: Exception.h:235
void serialize(Archive &archive, const Vector< VT, TF > &vec)
Serializes the given vector and writes it to the archive.
Definition: VectorSerializer.h:327
Header file for auxiliary alias declarations.
uint64_t size_
The size of the vector.
Definition: VectorSerializer.h:275
Binary archive for the portable serialization of data.The Archive class implements the functionality ...
Definition: Archive.h:140
Header file for basic type definitions.
Header file for the SparseVector base class.
Serializer for dense and sparse vectors.The VectorSerializer implements the necessary logic to serial...
Definition: VectorSerializer.h:153
MT::Iterator begin(Matrix< MT, SO > &matrix, size_t i)
Returns an iterator to the first element of row/column i.
Definition: Matrix.h:372
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:595
8-bit unsigned integer type of the Blaze library.
Header file for the DenseVector base class.
void deserializeVector(Archive &archive, VT &vec)
Deserializes a vector from the archive.
Definition: VectorSerializer.h:556
void deserializeHeader(Archive &archive, const VT &vec)
Deserializes all meta information about the given vector.
Definition: VectorSerializer.h:467
void serializeVector(Archive &archive, const DenseVector< VT, TF > &vec)
Serializes the elements of a dense vector.
Definition: VectorSerializer.h:378
uint8_t version_
The version of the archive.
Definition: VectorSerializer.h:271
typename T::ElementType ElementType_t
Alias declaration for nested ElementType type definitions.The ElementType_t alias declaration provide...
Definition: Aliases.h:170
#define BLAZE_THROW_RUNTIME_ERROR(MESSAGE)
Macro for the emission of a std::runtime_error exception.This macro encapsulates the default way of B...
Definition: Exception.h:379
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.The EnableIf_t alias declaration provides a convenient...
Definition: EnableIf.h:138
Header file for the DisableIf class template.
DisableIf_t< IsResizable_v< VT > > prepareVector(DenseVector< VT, TF > &vec)
Prepares the given non-resizable dense vector for the deserialization process.
Definition: VectorSerializer.h:504
void serializeHeader(Archive &archive, const VT &vec)
Serializes all meta information about the given vector.
Definition: VectorSerializer.h:349
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
void serialize(Archive &archive, const Matrix< MT, SO > &mat)
Serializes the given matrix and writes it to the archive.
Definition: MatrixSerializer.h:1257
uint8_t elementSize_
The size in bytes of a single element of the vector.
Definition: VectorSerializer.h:274
Base class for N-dimensional dense vectors.The DenseVector class is a base class for all arbitrarily ...
Definition: DenseVector.h:76
Header file for the exception macros of the math module.
MT::Iterator end(Matrix< MT, SO > &matrix, size_t i)
Returns an iterator just past the last element of row/column i.
Definition: Matrix.h:438
Header file for the EnableIf class template.
64-bit unsigned integer type of the Blaze library.
void deserialize(Archive &archive, Vector< VT, TF > &vec)
Deserializes a vector from the given archive.
Definition: VectorSerializer.h:439
#define BLAZE_CONSTRAINT_MUST_BE_VECTOR_TYPE(T)
Constraint on the data type.In case the given data type T is not a N-dimensional vector type,...
Definition: Vector.h:61
Header file for run time assertion macros.
VectorSerializer()
The default constructor of the VectorSerializer class.
Definition: VectorSerializer.h:294
Conversion from a data type to a serial representation.This class template converts the given data ty...
Definition: TypeValueMapping.h:163
uint64_t number_
The total number of elements contained in the vector.
Definition: VectorSerializer.h:276
constexpr size_t size(const Matrix< MT, SO > &matrix) noexcept
Returns the total number of elements of the matrix.
Definition: Matrix.h:530
DisableIf_t< VT::simdEnabled > deserializeDenseVector(Archive &archive, DenseVector< VT, TF > &vec)
Deserializes a dense vector from the archive.
Definition: VectorSerializer.h:587
uint8_t type_
The type of the vector.
Definition: VectorSerializer.h:272
Header file for the IsDenseVector type trait.
void deserialize(Archive &archive, Matrix< MT, SO > &mat)
Deserializes a matrix from the given archive.
Definition: MatrixSerializer.h:1279
void deserializeSparseVector(Archive &archive, DenseVector< VT, TF > &vec)
Deserializes a sparse vector from the archive.
Definition: VectorSerializer.h:683
Header file for the TypeValueMapping class template.
typename T::ConstIterator ConstIterator_t
Alias declaration for nested ConstIterator type definitions.The ConstIterator_t alias declaration pro...
Definition: Aliases.h:110
Base class for N-dimensional vectors.The Vector class is a base class for all arbitrarily sized (N-di...
Definition: Forward.h:198
Base class for sparse vectors.The SparseVector class is a base class for all arbitrarily sized (N-dim...
Definition: Forward.h:146
Constraint on the data type.
typename DisableIf< Condition, T >::Type DisableIf_t
Auxiliary type for the DisableIf class template.The DisableIf_t alias declaration provides a convenie...
Definition: DisableIf.h:138
Header file for the IsResizable type trait.
Header file for the Vector CRTP base class.
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.In case of an invalid run time expression,...
Definition: Assert.h:101
uint8_t elementType_
The type of an element.
Definition: VectorSerializer.h:273