STAPL API Reference          
Overview   Containers   Algorithms   Views   Skeletons   Run-Time System
Modules     Classes    
Classes | Functions
Serialization

Support for packing/unpacking of arbitrary types. More...

+ Collaboration diagram for Serialization:

Classes

class  stapl::runtime::object_storage< T >
 Storage for objects used in communication over shared memory. More...
 
class  stapl::runtime::packed_object_storage< T, Empty >
 Storage for object of type T used in communication. More...
 
class  stapl::typer
 typer class is used for packing, unpacking and copying objects. More...
 
struct  stapl::bitwise_wrapper< T >
 Wrapper class for a bitwise packed members. More...
 
struct  stapl::define_type_provider< T >
 Transforms an object of type T to an object of type U that has a U::define_type(stapl::typer&) function through the apply() function. More...
 
class  stapl::typer_traits< T, Enable >
 Provides methods for assisting in packing and unpacking objects. More...
 
struct  stapl::typer_traits_specialization< T, Enable >
 Traits class to detect which typer_traits is a specialization and which is the default. More...
 

Functions

template<typename T >
T * stapl::clone (T const &t)
 Clones t.
 
template<typename T >
constexpr bitwise_wrapper< T > bitwise (T const &)
 Declares the object t as bitwise packable.
 

Detailed Description

Support for packing/unpacking of arbitrary types.

During communication transport, all RMI arguments are copied. The specific copying method varies with the type of the object. The RTS obtains information about an object to determine the optimal means of packing/unpacking and copying from its type.

Simple types, such as fundamental types (int, double etc) are packed by copying them using memcpy().

More complex types require extra marshalling information. See stapl::typer for more information.

Distributed objects (stapl::p_object, stapl::rmi_handle) are never packed. When something that references a distributed object has to communicated (e.g a pointer, and std::reference_wrapper or anything similar) then a stapl::rmi_handle::light_reference or stapl::rmi_handle::reference is being transported instead.