#include <pcl/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) |
#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 141 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 129 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 104 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 118 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 100 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 143 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)) \ /***/
Definition at line 57 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 83 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 73 of file register_point_struct.h.
Definition at line 77 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 75 of file register_point_struct.h.
Definition at line 78 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 62 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 139 of file register_point_struct.h.