12 #ifndef SST_CORE_SERIALIZATION_IMPL_SERIALIZE_VALARRAY_H 13 #define SST_CORE_SERIALIZATION_IMPL_SERIALIZE_VALARRAY_H 15 #ifndef SST_INCLUDING_SERIALIZE_H 17 "The header file sst/core/serialization/impl/serialize_valarray.h should not be directly included as it is not part of the stable public API. The file is included in sst/core/serialization/serialize.h" 20 #include "sst/core/serialization/serializer.h" 23 #include <type_traits> 30 constexpr
bool is_valarray_v =
false;
34 constexpr
bool is_valarray_v<std::valarray<T>> = std::is_trivially_copyable_v<T> && std::is_standard_layout_v<T>;
38 class serialize_impl<T, std::enable_if_t<is_valarray_v<std::remove_pointer_t<T>>>>
40 void operator()(T& obj,
serializer& ser, ser_opt_t UNUSED(options))
42 const auto& objPtr = get_ptr(obj);
44 switch ( ser.mode() ) {
45 case serializer::SIZER:
46 size = objPtr->size();
50 case serializer::PACK:
51 size = objPtr->size();
55 case serializer::UNPACK:
57 if constexpr ( std::is_pointer_v<T> )
58 obj =
new std::remove_pointer_t<T>(size);
64 size = objPtr->size();
65 ser.mapper().map_hierarchy_start(
67 for (
size_t i = 0; i < size; ++i )
68 SST_SER_NAME((*objPtr)[i], std::to_string(i).c_str());
69 ser.mapper().map_hierarchy_end();
72 ser.raw(&(*objPtr)[0], size *
sizeof((*objPtr)[0]));
75 SST_FRIEND_SERIALIZE();
80 #endif // SST_CORE_SERIALIZATION_IMPL_SERIALIZE_VALARRAY_H This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition: serializer.h:42
Class used to map containers.
Definition: objectMap.h:1457
Base serialize class.
Definition: serialize.h:113