STAPL API Reference |
Modules Classes |
Support for packing/unpacking of arbitrary types. More...
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. | |
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.