Defines

register_point_struct.h File Reference

#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>
Include dependency graph for register_point_struct.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define POINT_CLOUD_REGISTER_POINT_STRUCT(name, fseq)
#define POINT_CLOUD_REGISTER_POINT_WRAPPER(wrapper, pod)
#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_Y(type, name, tag)   ((type, name, tag)) POINT_CLOUD_REGISTER_POINT_STRUCT_X
#define POINT_CLOUD_REGISTER_POINT_STRUCT_X0
#define POINT_CLOUD_REGISTER_POINT_STRUCT_Y0
#define POINT_CLOUD_REGISTER_POINT_STRUCT_I(name, seq)
#define POINT_CLOUD_REGISTER_FIELD_TAG(r, name, elem)   struct BOOST_PP_TUPLE_ELEM(3, 2, elem); \
#define POINT_CLOUD_REGISTER_FIELD_NAME(r, point, elem)
#define POINT_CLOUD_REGISTER_FIELD_OFFSET(r, name, elem)
#define POINT_CLOUD_REGISTER_FIELD_DATATYPE(r, name, elem)
#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)
#define POINT_CLOUD_REGISTER_POINT_FIELD_LIST(name, seq)

Define Documentation

#define POINT_CLOUD_EXTRACT_TAGS (   seq  )     BOOST_PP_SEQ_TRANSFORM(POINT_CLOUD_TAG_OP, _, seq)

Definition at line 139 of file register_point_struct.h.

#define POINT_CLOUD_REGISTER_FIELD_DATATYPE (   r,
  name,
  elem 
)
Value:
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 127 of file register_point_struct.h.

#define POINT_CLOUD_REGISTER_FIELD_NAME (   r,
  point,
  elem 
)
Value:
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 102 of file register_point_struct.h.

#define POINT_CLOUD_REGISTER_FIELD_OFFSET (   r,
  name,
  elem 
)
Value:
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 116 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 98 of file register_point_struct.h.

#define POINT_CLOUD_REGISTER_POINT_FIELD_LIST (   name,
  seq 
)
Value:
template<> struct fieldList<name>                             \
  {                                                             \
    typedef boost::mpl::vector<BOOST_PP_SEQ_ENUM(seq)> type;    \
  };                                                            \

Definition at line 141 of file register_point_struct.h.

#define POINT_CLOUD_REGISTER_POINT_STRUCT (   name,
  fseq 
)
Value:

Definition at line 55 of file register_point_struct.h.

#define POINT_CLOUD_REGISTER_POINT_STRUCT_I (   name,
  seq 
)
Value:
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 81 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 71 of file register_point_struct.h.

#define POINT_CLOUD_REGISTER_POINT_STRUCT_X0

Definition at line 75 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 73 of file register_point_struct.h.

#define POINT_CLOUD_REGISTER_POINT_STRUCT_Y0

Definition at line 76 of file register_point_struct.h.

#define POINT_CLOUD_REGISTER_POINT_WRAPPER (   wrapper,
  pod 
)
Value:
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 60 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 137 of file register_point_struct.h.