#include "pcl/ros/point_traits.h"
#include <boost/mpl/vector.hpp>
#include <boost/mpl/for_each.hpp>
#include <boost/mpl/assert.hpp>
#include <boost/preprocessor/seq/enum.hpp>
#include <boost/preprocessor/seq/for_each.hpp>
#include <boost/preprocessor/seq/transform.hpp>
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
#include <boost/type_traits/is_pod.hpp>
#include <stddef.h>
Go to the source code of this file.
Defines | |
#define | POINT_CLOUD_EXTRACT_TAGS(seq) BOOST_PP_SEQ_TRANSFORM(POINT_CLOUD_TAG_OP, _, seq) |
#define | POINT_CLOUD_REGISTER_FIELD_DATATYPE(r, name, elem) |
#define | POINT_CLOUD_REGISTER_FIELD_NAME(r, point, elem) |
#define | POINT_CLOUD_REGISTER_FIELD_OFFSET(r, name, elem) |
#define | POINT_CLOUD_REGISTER_FIELD_TAG(r, name, elem) struct BOOST_PP_TUPLE_ELEM(3, 2, elem); \ |
#define | POINT_CLOUD_REGISTER_POINT_FIELD_LIST(name, seq) |
#define | POINT_CLOUD_REGISTER_POINT_STRUCT(name, fseq) |
#define | POINT_CLOUD_REGISTER_POINT_STRUCT_I(name, seq) |
#define | POINT_CLOUD_REGISTER_POINT_STRUCT_X(type, name, tag) ((type, name, tag)) POINT_CLOUD_REGISTER_POINT_STRUCT_Y |
#define | POINT_CLOUD_REGISTER_POINT_STRUCT_X0 |
#define | POINT_CLOUD_REGISTER_POINT_STRUCT_Y(type, name, tag) ((type, name, tag)) POINT_CLOUD_REGISTER_POINT_STRUCT_X |
#define | POINT_CLOUD_REGISTER_POINT_STRUCT_Y0 |
#define | POINT_CLOUD_REGISTER_POINT_WRAPPER(wrapper, pod) |
#define | POINT_CLOUD_TAG_OP(s, data, elem) pcl::fields::BOOST_PP_TUPLE_ELEM(3, 2, elem) |
#define POINT_CLOUD_EXTRACT_TAGS | ( | seq | ) | BOOST_PP_SEQ_TRANSFORM(POINT_CLOUD_TAG_OP, _, seq) |
Definition at line 146 of file register_point_struct.h.
#define POINT_CLOUD_REGISTER_FIELD_DATATYPE | ( | r, | |||
name, | |||||
elem | ) |
template<> struct datatype<name, pcl::fields::BOOST_PP_TUPLE_ELEM(3, 2, elem)> \ { \ typedef boost::mpl::identity<BOOST_PP_TUPLE_ELEM(3, 0, elem)>::type type; \ typedef decomposeArray<type> decomposed; \ static const uint8_t value = asEnum<decomposed::type>::value; \ static const uint32_t size = decomposed::value; \ }; \
Definition at line 134 of file register_point_struct.h.
#define POINT_CLOUD_REGISTER_FIELD_NAME | ( | r, | |||
point, | |||||
elem | ) |
template<int dummy> \ struct name<point, pcl::fields::BOOST_PP_TUPLE_ELEM(3, 2, elem), dummy> \ { \ static const char value[]; \ }; \ \ template<int dummy> \ const char name<point, \ pcl::fields::BOOST_PP_TUPLE_ELEM(3, 2, elem), \ dummy>::value[] = \ BOOST_PP_STRINGIZE(BOOST_PP_TUPLE_ELEM(3, 2, elem)); \
Definition at line 109 of file register_point_struct.h.
#define POINT_CLOUD_REGISTER_FIELD_OFFSET | ( | r, | |||
name, | |||||
elem | ) |
template<> struct offset<name, pcl::fields::BOOST_PP_TUPLE_ELEM(3, 2, elem)> \ { \ static const size_t value = offsetof(name, BOOST_PP_TUPLE_ELEM(3, 1, elem)); \ }; \
Definition at line 123 of file register_point_struct.h.
#define POINT_CLOUD_REGISTER_FIELD_TAG | ( | r, | |||
name, | |||||
elem | ) | struct BOOST_PP_TUPLE_ELEM(3, 2, elem); \ |
Definition at line 105 of file register_point_struct.h.
#define POINT_CLOUD_REGISTER_POINT_FIELD_LIST | ( | name, | |||
seq | ) |
template<> struct fieldList<name> \ { \ typedef boost::mpl::vector<BOOST_PP_SEQ_ENUM(seq)> type; \ }; \
Definition at line 148 of file register_point_struct.h.
#define POINT_CLOUD_REGISTER_POINT_STRUCT | ( | name, | |||
fseq | ) |
POINT_CLOUD_REGISTER_POINT_STRUCT_I(name, \ BOOST_PP_CAT(POINT_CLOUD_REGISTER_POINT_STRUCT_X fseq, 0)) \
Point structure registration methods.
Definition at line 62 of file register_point_struct.h.
#define POINT_CLOUD_REGISTER_POINT_STRUCT_I | ( | name, | |||
seq | ) |
namespace pcl \ { \ namespace fields \ { \ BOOST_PP_SEQ_FOR_EACH(POINT_CLOUD_REGISTER_FIELD_TAG, name, seq) \ } \ namespace traits \ { \ BOOST_PP_SEQ_FOR_EACH(POINT_CLOUD_REGISTER_FIELD_NAME, name, seq) \ BOOST_PP_SEQ_FOR_EACH(POINT_CLOUD_REGISTER_FIELD_OFFSET, name, seq) \ BOOST_PP_SEQ_FOR_EACH(POINT_CLOUD_REGISTER_FIELD_DATATYPE, name, seq) \ POINT_CLOUD_REGISTER_POINT_FIELD_LIST(name, POINT_CLOUD_EXTRACT_TAGS(seq)) \ } \ } \
Definition at line 88 of file register_point_struct.h.
#define POINT_CLOUD_REGISTER_POINT_STRUCT_X | ( | type, | |||
name, | |||||
tag | ) | ((type, name, tag)) POINT_CLOUD_REGISTER_POINT_STRUCT_Y |
Definition at line 78 of file register_point_struct.h.
#define POINT_CLOUD_REGISTER_POINT_STRUCT_X0 |
Definition at line 82 of file register_point_struct.h.
#define POINT_CLOUD_REGISTER_POINT_STRUCT_Y | ( | type, | |||
name, | |||||
tag | ) | ((type, name, tag)) POINT_CLOUD_REGISTER_POINT_STRUCT_X |
Definition at line 80 of file register_point_struct.h.
#define POINT_CLOUD_REGISTER_POINT_STRUCT_Y0 |
Definition at line 83 of file register_point_struct.h.
#define POINT_CLOUD_REGISTER_POINT_WRAPPER | ( | wrapper, | |||
pod | ) |
BOOST_MPL_ASSERT_MSG(sizeof(wrapper) == sizeof(pod), POINT_WRAPPER_AND_POD_TYPES_HAVE_DIFFERENT_SIZES, (wrapper, pod)); \ namespace pcl { \ namespace traits { \ template<> struct POD<wrapper> { typedef pod type; }; \ } \ } \
Definition at line 67 of file register_point_struct.h.
#define POINT_CLOUD_TAG_OP | ( | s, | |||
data, | |||||
elem | ) | pcl::fields::BOOST_PP_TUPLE_ELEM(3, 2, elem) |
Definition at line 144 of file register_point_struct.h.