NimbleSM
NimbleSM is a solid mechanics simulation code for dynamic systems
Loading...
Searching...
No Matches
nimble::serialization Namespace Reference

Classes

struct  meta
 
struct  meta< std::array< T, arr_size > >
 
struct  meta< std::pair< A, B > >
 
struct  meta< T * >
 
struct  serial
 
struct  serial< std::array< T *, arr_size >, true >
 
struct  serial< std::array< T, arr_size >, false >
 
struct  serial< std::pair< A, B >, false >
 
struct  serial< std::pair< A, B >, true >
 
struct  serial< std::vector< T >, false >
 
struct  serial< std::vector< T >, false, false >
 
struct  serial< std::vector< T >, false, true >
 
struct  serial< T *, false >
 
struct  serial< T *, true >
 
struct  serial< T, false >
 
struct  serial< T, true >
 

Typedefs

template<class T>
using serial_t = serial<typename std::remove_cv<T>::type, meta<T>::mem>
 

Functions

template<class T, class dataT>
size_t pack (const T &object, std::vector< dataT > &vect)
 
template<class T, class dataT>
size_t pack_avoid_resize (const T &object, std::vector< dataT > &vect)
 
template<class T, class dataT>
void unpack (T &object, const std::vector< dataT > &vect)
 

Typedef Documentation

◆ serial_t

template<class T>
using nimble::serialization::serial_t = serial<typename std::remove_cv<T>::type, meta<T>::mem>

Function Documentation

◆ pack()

template<class T, class dataT>
size_t nimble::serialization::pack ( const T & object,
std::vector< dataT > & vect )
302{
303 static_assert(std::is_pod<dataT>::value, "vector must be of POD type");
304 size_t size = serial_t<T>::size(object);
305 vect.resize(size / sizeof(dataT) + 1);
306 char* dataptr = (char*)&vect[0];
307 serial_t<T>::pack(object, dataptr);
308 return size;
309}
serial< typename std::remove_cv< T >::type, meta< T >::mem > serial_t
Definition nimble.mpi.serialization.h:84

◆ pack_avoid_resize()

template<class T, class dataT>
size_t nimble::serialization::pack_avoid_resize ( const T & object,
std::vector< dataT > & vect )
314{
315 static_assert(std::is_pod<dataT>::value, "vector must be of POD type");
316 size_t size = serial_t<T>::size(object);
317 if (size > vect.size()) vect.resize(size / sizeof(dataT) + 1);
318 char* dataptr = (char*)&vect[0];
319 serial_t<T>::pack(object, dataptr);
320 return size;
321}

◆ unpack()

template<class T, class dataT>
void nimble::serialization::unpack ( T & object,
const std::vector< dataT > & vect )
326{
327 static_assert(std::is_pod<dataT>::value, "vector must be of POD type");
328 char* dataptr = (char*)&vect[0];
329 serial_t<T>::unpack(object, dataptr);
330}