Point Cloud Library (PCL)  1.6.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Macros
register_point_struct.h File Reference
#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>
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.

Macros

#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)
 
#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)
 

Macro Definition Documentation

#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 
)
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 129 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 104 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 118 of file register_point_struct.h.

#define POINT_CLOUD_REGISTER_FIELD_TAG (   r,
  name,
  elem 
)
Value:
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 
)
Value:
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 
)
Value:

Definition at line 57 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 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.

#define POINT_CLOUD_REGISTER_POINT_STRUCT_X0

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.

#define POINT_CLOUD_REGISTER_POINT_STRUCT_Y0

Definition at line 78 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 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.