Classes | Namespaces | Macros | Typedefs | Enumerations | Functions
third-party/realsense-file/rosbag/roscpp_serialization/include/ros/serialization.h File Reference
#include "roscpp_serialization_macros.h"
#include <ros/types.h>
#include <ros/time.h>
#include "serialized_message.h"
#include "ros/message_traits.h"
#include "ros/builtin_message_traits.h"
#include "ros/exception.h"
#include "ros/datatypes.h"
#include <vector>
#include <map>
#include <boost/call_traits.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/mpl/and.hpp>
#include <boost/mpl/or.hpp>
#include <boost/mpl/not.hpp>
#include <cstring>
Include dependency graph for third-party/realsense-file/rosbag/roscpp_serialization/include/ros/serialization.h:

Go to the source code of this file.

Classes

struct  rs2rosinternal::serialization::ArraySerializer< T, N, Enabled >
 Array serializer, default implementation does nothing. More...
 
struct  rs2rosinternal::serialization::ArraySerializer< T, N, typename boost::disable_if< mt::IsFixedSize< T > >::type >
 Array serializer, specialized for non-fixed-size, non-simple types. More...
 
struct  rs2rosinternal::serialization::ArraySerializer< T, N, typename boost::enable_if< mpl::and_< mt::IsFixedSize< T >, mpl::not_< mt::IsSimple< T > > > >::type >
 Array serializer, specialized for fixed-size, non-simple types. More...
 
struct  rs2rosinternal::serialization::ArraySerializer< T, N, typename boost::enable_if< mt::IsSimple< T > >::type >
 Array serializer, specialized for fixed-size, simple types. More...
 
struct  rs2rosinternal::serialization::IStream
 Input stream. More...
 
struct  rs2rosinternal::serialization::LStream
 Length stream. More...
 
struct  rs2rosinternal::serialization::OStream
 Output stream. More...
 
struct  rs2rosinternal::serialization::PreDeserialize< M >
 called by the SubscriptionCallbackHelper after a message is instantiated but before that message is deserialized More...
 
struct  rs2rosinternal::serialization::PreDeserializeParams< M >
 
struct  rs2rosinternal::serialization::Serializer< T >
 Templated serialization class. Default implementation provides backwards compatibility with old message types. More...
 
struct  rs2rosinternal::serialization::Serializer< bool >
 Serializer specialized for bool (serialized as uint8) More...
 
struct  rs2rosinternal::serialization::Serializer< rs2rosinternal::Duration >
 Serializer specialized for rs2rosinternal::Duration. More...
 
struct  rs2rosinternal::serialization::Serializer< rs2rosinternal::Time >
 Serializer specialized for rs2rosinternal::Time. More...
 
struct  rs2rosinternal::serialization::Serializer< std::basic_string< char, std::char_traits< char >, ContainerAllocator > >
 Serializer specialized for std::string. More...
 
struct  rs2rosinternal::serialization::Stream
 Stream base-class, provides common functionality for IStream and OStream. More...
 
class  rs2rosinternal::serialization::StreamOverrunException
 
struct  rs2rosinternal::serialization::VectorSerializer< T, ContainerAllocator, Enabled >
 Vector serializer. Default implementation does nothing. More...
 
struct  rs2rosinternal::serialization::VectorSerializer< T, ContainerAllocator, typename boost::disable_if< mt::IsFixedSize< T > >::type >
 Vector serializer, specialized for non-fixed-size, non-simple types. More...
 
struct  rs2rosinternal::serialization::VectorSerializer< T, ContainerAllocator, typename boost::enable_if< mpl::and_< mt::IsFixedSize< T >, mpl::not_< mt::IsSimple< T > > > >::type >
 Vector serializer, specialized for fixed-size non-simple types. More...
 
struct  rs2rosinternal::serialization::VectorSerializer< T, ContainerAllocator, typename boost::enable_if< mt::IsSimple< T > >::type >
 Vector serializer, specialized for fixed-size simple types. More...
 

Namespaces

 rs2rosinternal
 
 rs2rosinternal::serialization
 
 rs2rosinternal::serialization::stream_types
 Enum.
 

Macros

#define ROS_CREATE_SIMPLE_SERIALIZER(Type)
 
#define ROS_CREATE_SIMPLE_SERIALIZER_ARM(Type)
 
#define ROS_DECLARE_ALLINONE_SERIALIZER
 Declare your serializer to use an allInOne member instead of requiring 3 different serialization functions. More...
 
#define ROS_NEW_SERIALIZATION_API   1
 

Typedefs

typedef stream_types::StreamType rs2rosinternal::serialization::StreamType
 

Enumerations

enum  rs2rosinternal::serialization::stream_types::StreamType { rs2rosinternal::serialization::stream_types::Input, rs2rosinternal::serialization::stream_types::Output, rs2rosinternal::serialization::stream_types::Length }
 

Functions

template<typename T , typename Stream >
void rs2rosinternal::serialization::deserialize (Stream &stream, T &t)
 Deserialize an object. Stream here should normally be a rs2rosinternal::serialization::IStream. More...
 
template<typename T , class ContainerAllocator , typename Stream >
void rs2rosinternal::serialization::deserialize (Stream &stream, std::vector< T, ContainerAllocator > &t)
 deserialize version for std::vector More...
 
template<typename T , size_t N, typename Stream >
void rs2rosinternal::serialization::deserialize (Stream &stream, std::array< T, N > &t)
 deserialize version for std::array More...
 
template<typename M >
void rs2rosinternal::serialization::deserializeMessage (const SerializedMessage &m, M &message)
 Deserialize a message. If includes_length is true, skips the first 4 bytes. More...
 
template<typename T >
uint32_t rs2rosinternal::serialization::serializationLength (const T &t)
 Determine the serialized length of an object. More...
 
template<typename T , class ContainerAllocator >
uint32_t rs2rosinternal::serialization::serializationLength (const std::vector< T, ContainerAllocator > &t)
 serializationLength version for std::vector More...
 
template<typename T , size_t N>
uint32_t rs2rosinternal::serialization::serializationLength (const std::array< T, N > &t)
 serializationLength version for std::array More...
 
template<typename T , typename Stream >
void rs2rosinternal::serialization::serialize (Stream &stream, const T &t)
 Serialize an object. Stream here should normally be a rs2rosinternal::serialization::OStream. More...
 
template<typename T , class ContainerAllocator , typename Stream >
void rs2rosinternal::serialization::serialize (Stream &stream, const std::vector< T, ContainerAllocator > &t)
 serialize version for std::vector More...
 
template<typename T , size_t N, typename Stream >
void rs2rosinternal::serialization::serialize (Stream &stream, const std::array< T, N > &t)
 serialize version for std::array More...
 
template<typename M >
SerializedMessage rs2rosinternal::serialization::serializeMessage (const M &message)
 Serialize a message. More...
 
template<typename M >
SerializedMessage rs2rosinternal::serialization::serializeServiceResponse (bool ok, const M &message)
 Serialize a service response. More...
 
ROSCPP_SERIALIZATION_DECL void rs2rosinternal::serialization::throwStreamOverrun ()
 

Macro Definition Documentation

#define ROS_CREATE_SIMPLE_SERIALIZER (   Type)
Value:
template<> struct Serializer<Type> \
{ \
template<typename Stream> inline static void write(Stream& stream, const Type v) \
{ \
*reinterpret_cast<Type*>(stream.advance(sizeof(v))) = v; \
} \
\
template<typename Stream> inline static void read(Stream& stream, Type& v) \
{ \
v = *reinterpret_cast<Type*>(stream.advance(sizeof(v))); \
} \
\
inline static uint32_t serializedLength(const Type&) \
{ \
return sizeof(Type); \
} \
};
GLuint GLuint stream
Definition: glext.h:1790
unsigned int uint32_t
Definition: stdint.h:80
GLdouble v

Definition at line 174 of file third-party/realsense-file/rosbag/roscpp_serialization/include/ros/serialization.h.

#define ROS_CREATE_SIMPLE_SERIALIZER_ARM (   Type)
Value:
template<> struct Serializer<Type> \
{ \
template<typename Stream> inline static void write(Stream& stream, const Type v) \
{ \
memcpy(stream.advance(sizeof(v)), &v, sizeof(v) ); \
} \
\
template<typename Stream> inline static void read(Stream& stream, Type& v) \
{ \
memcpy(&v, stream.advance(sizeof(v)), sizeof(v) ); \
} \
\
inline static uint32_t serializedLength(const Type&) \
{ \
return sizeof(Type); \
} \
};
GLuint GLuint stream
Definition: glext.h:1790
unsigned int uint32_t
Definition: stdint.h:80
GLdouble v

Definition at line 193 of file third-party/realsense-file/rosbag/roscpp_serialization/include/ros/serialization.h.

#define ROS_DECLARE_ALLINONE_SERIALIZER
Value:
template<typename Stream, typename T> \
inline static void write(Stream& stream, const T& t) \
{ \
allInOne<Stream, const T&>(stream, t); \
} \
\
template<typename Stream, typename T> \
inline static void read(Stream& stream, T& t) \
{ \
allInOne<Stream, T&>(stream, t); \
} \
\
template<typename T> \
inline static uint32_t serializedLength(const T& t) \
{ \
LStream stream; \
allInOne<LStream, const T&>(stream, t); \
return stream.getLength(); \
}
GLuint GLuint stream
Definition: glext.h:1790
GLdouble t
unsigned int uint32_t
Definition: stdint.h:80

Declare your serializer to use an allInOne member instead of requiring 3 different serialization functions.

The allinone method has the form:

template<typename Stream, typename T>
inline static void allInOne(Stream& stream, T t)
{
  stream.next(t.a);
  stream.next(t.b);
  ...
}

The only guarantee given is that Stream::next(T) is defined.

Definition at line 72 of file third-party/realsense-file/rosbag/roscpp_serialization/include/ros/serialization.h.

#define ROS_NEW_SERIALIZATION_API   1


librealsense2
Author(s): Sergey Dorodnicov , Doron Hirshberg , Mark Horn , Reagan Lopez , Itay Carpis
autogenerated on Mon May 3 2021 02:50:29