CppSerdes  1.0
A serialization/deserialization library designed with embedded systems in mind
serdes::packet_base Struct Referenceabstract

inheritable base class to allow format recording and application with no additional memory storage (except for the virtual table pointer) More...

#include <serdes_fwd_declarations.h>

Inherited by compound_type, coordinates, coordinates, coordinates, coordinates, header_type, my_delimited_data, my_info, packet_format, vector3d< capacity >, and voltage_command::payload_t.

Public Member Functions

virtual void format (packet &)=0
 override to declare the serdes process used in store() and load()
 
template<typename T_array , size_t N>
serdes::status_t store (T_array(&target_buffer)[N], size_t max_elements=N, size_t bit_offset=0)
 [[serialize]] stores data into the target "sized" serial array according to the format() process More...
 
template<typename T_pointer , typename std::enable_if< std::is_pointer< T_pointer >::value, int * >::type = nullptr>
serdes::status_t store (T_pointer target_buffer, size_t max_elements=~size_t(0), size_t bit_offset=0)
 [[serialize]] stores data into the target (un-sized) pointer according to the format() process More...
 
template<typename T_sized_pointer , typename std::enable_if< serdes::detail::is_sized_pointer< T_sized_pointer >::value, int * >::type = nullptr>
serdes::status_t store (T_sized_pointer target_buffer, size_t bit_offset=0)
 [[serialize]] stores data into the target sized_pointer according to the format() process More...
 
template<typename T_array , size_t N>
serdes::status_t load (const T_array(&source_buffer)[N], size_t max_elements=N, size_t bit_offset=0)
 [[deserialize]] loads data from the source "sized" array according to the format() process More...
 
template<typename T_pointer , typename std::enable_if< std::is_pointer< T_pointer >::value, int * >::type = nullptr>
serdes::status_t load (const T_pointer source_buffer, size_t max_elements=~size_t(0), size_t bit_offset=0)
 [[deserialize]] loads data out of a source (un-sized) pointer according to the format() process More...
 
template<typename T_sized_pointer , typename std::enable_if< serdes::detail::is_sized_pointer< T_sized_pointer >::value, int * >::type = nullptr>
serdes::status_t load (const T_sized_pointer source_buffer, size_t bit_offset=0)
 [[deserialize]] loads data out of a sized_pointer object according to the format() process More...
 
template<typename T >
serdes::status_t operator>> (T &&value)
 [[serialize]] stores the packet_base object into the passed serial data (same as store) More...
 
template<typename T >
serdes::status_t operator<< (T &&value)
 [[deserialize]] loads packet_base data into the passed serial data (same as load) More...
 
template<typename T_array , size_t N>
status_t store (T_array(&target_buffer)[N], size_t max_elements, size_t bit_offset)
 
template<typename T_pointer , typename std::enable_if< std::is_pointer< T_pointer >::value, int * >::type>
status_t store (T_pointer target_buffer, size_t max_elements, size_t bit_offset)
 
template<typename T_sized_pointer , typename std::enable_if< serdes::detail::is_sized_pointer< T_sized_pointer >::value, int * >::type>
status_t store (T_sized_pointer target_buffer, size_t bit_offset)
 
template<typename T_array , size_t N>
status_t load (const T_array(&source_buffer)[N], size_t max_elements, size_t bit_offset)
 
template<typename T_pointer , typename std::enable_if< std::is_pointer< T_pointer >::value, int * >::type>
status_t load (const T_pointer source_buffer, size_t max_elements, size_t bit_offset)
 
template<typename T_sized_pointer , typename std::enable_if< serdes::detail::is_sized_pointer< T_sized_pointer >::value, int * >::type>
status_t load (const T_sized_pointer target_buffer, size_t bit_offset)
 
template<typename T >
status_t operator>> (T &&value)
 
template<typename T >
status_t operator<< (T &&value)
 

Detailed Description

inheritable base class to allow format recording and application with no additional memory storage (except for the virtual table pointer)

Examples:
04_object_oriented_serial.cpp, 05_nested_object_oriented_serial.cpp, 06_variable_length_formats.cpp, 07_delimited_arrays.cpp, 08_error_handling.cpp, 09_runtime_edittable_formats.cpp, 10_virtual_fields.cpp, and 13_arrays_of_packets.cpp.

Member Function Documentation

template<typename T_array , size_t N>
serdes::status_t serdes::packet_base::load ( const T_array(&)  source_buffer[N],
size_t  max_elements = N,
size_t  bit_offset = 0 
)

[[deserialize]] loads data from the source "sized" array according to the format() process

Template Parameters
T_arraythe source buffer base type
Nthe size of the buffer
Parameters
source_bufferthe source serial data to read data from
max_elementsthe maximum number of elements to read in the array (can be <= N)
bit_offsetthe starting bit offset
Returns
serdes::status_t: the load process's resulting status
template<typename T_pointer , typename std::enable_if< std::is_pointer< T_pointer >::value, int * >::type = nullptr>
serdes::status_t serdes::packet_base::load ( const T_pointer  source_buffer,
size_t  max_elements = ~size_t(0),
size_t  bit_offset = 0 
)

[[deserialize]] loads data out of a source (un-sized) pointer according to the format() process

Template Parameters
T_pointerthe source buffer base type
Parameters
source_bufferthe source serial data to read data from
max_elementsthe maximum number of elements to read in the array
bit_offsetthe starting bit offset
Returns
serdes::status_t: the load process's resulting status
template<typename T_sized_pointer , typename std::enable_if< serdes::detail::is_sized_pointer< T_sized_pointer >::value, int * >::type = nullptr>
serdes::status_t serdes::packet_base::load ( const T_sized_pointer  source_buffer,
size_t  bit_offset = 0 
)

[[deserialize]] loads data out of a sized_pointer object according to the format() process

Template Parameters
T_sized_pointerthe source buffer sized_pointer type
Parameters
source_bufferthe source serial data to read data from
bit_offsetthe starting bit offset
Returns
serdes::status_t: the load process's resulting status
template<typename T >
serdes::status_t serdes::packet_base::operator<< ( T &&  value)

[[deserialize]] loads packet_base data into the passed serial data (same as load)

Template Parameters
Tvalue type
Parameters
valueserial buffer
Returns
status_t: status of the load operation
template<typename T >
serdes::status_t serdes::packet_base::operator>> ( T &&  value)

[[serialize]] stores the packet_base object into the passed serial data (same as store)

Template Parameters
Tvalue type
Parameters
valueserial buffer
Returns
status_t: status of the store operation
template<typename T_array , size_t N>
serdes::status_t serdes::packet_base::store ( T_array(&)  target_buffer[N],
size_t  max_elements = N,
size_t  bit_offset = 0 
)

[[serialize]] stores data into the target "sized" serial array according to the format() process

Template Parameters
T_arraythe target buffer base type
Nthe size of the buffer
Parameters
target_bufferthe target serial data to store data into
max_elementsthe maximum number of elements to use in the array (can be <= N)
bit_offsetthe starting bit offset
Returns
serdes::status_t: the store process's resulting status
template<typename T_pointer , typename std::enable_if< std::is_pointer< T_pointer >::value, int * >::type = nullptr>
serdes::status_t serdes::packet_base::store ( T_pointer  target_buffer,
size_t  max_elements = ~size_t(0),
size_t  bit_offset = 0 
)

[[serialize]] stores data into the target (un-sized) pointer according to the format() process

Template Parameters
T_pointerpointer type of the target buffer
Parameters
target_bufferthe target serial data to store data into
max_elementsthe maximum number of elements to use in the array
bit_offsetthe starting bit offset
Returns
serdes::status_t: the store process's resulting status
template<typename T_sized_pointer , typename std::enable_if< serdes::detail::is_sized_pointer< T_sized_pointer >::value, int * >::type = nullptr>
serdes::status_t serdes::packet_base::store ( T_sized_pointer  target_buffer,
size_t  bit_offset = 0 
)

[[serialize]] stores data into the target sized_pointer according to the format() process

Template Parameters
T_sized_pointerthe sized_pointer type of the target buffer
Parameters
target_bufferthe target serial data to store data into (holds info on its own size)
bit_offsetthe starting bit offset
Returns
serdes::status_t: the store process's resulting status

The documentation for this struct was generated from the following files: