Point Cloud Library (PCL)  1.11.1-dev
PCLPointField.h
1 #pragma once
2 
3 #include <pcl/memory.h> // for shared_ptr
4 #include <pcl/type_traits.h> // for asEnum_v
5 #include <pcl/types.h> // for index_t
6 
7 #include <string> // for string
8 #include <ostream> // for ostream
9 
10 namespace pcl
11 {
13  {
14  std::string name;
15 
17  std::uint8_t datatype = 0;
19 
20  enum PointFieldTypes { INT8 = traits::asEnum_v<std::int8_t>,
21  UINT8 = traits::asEnum_v<std::uint8_t>,
22  INT16 = traits::asEnum_v<std::int16_t>,
23  UINT16 = traits::asEnum_v<std::uint16_t>,
24  INT32 = traits::asEnum_v<std::int32_t>,
25  UINT32 = traits::asEnum_v<std::uint32_t>,
26  FLOAT32 = traits::asEnum_v<float>,
27  FLOAT64 = traits::asEnum_v<double>};
28 
29  public:
30  using Ptr = shared_ptr< ::pcl::PCLPointField>;
31  using ConstPtr = shared_ptr<const ::pcl::PCLPointField>;
32  }; // struct PCLPointField
33 
36 
37  inline std::ostream& operator<<(std::ostream& s, const ::pcl::PCLPointField & v)
38  {
39  s << "name: ";
40  s << " " << v.name << std::endl;
41  s << "offset: ";
42  s << " " << v.offset << std::endl;
43  s << "datatype: ";
44  s << " " << v.datatype << std::endl;
45  s << "count: ";
46  s << " " << v.count << std::endl;
47  return (s);
48  }
49 
50  // Return true if the PCLPointField matches the expected name and data type.
51  // Written as a struct to allow partially specializing on Tag.
52  template<typename PointT, typename Tag>
53  struct FieldMatches
54  {
55  bool operator() (const PCLPointField& field)
56  {
57  return ((field.name == traits::name<PointT, Tag>::value) &&
58  (field.datatype == traits::datatype<PointT, Tag>::value) &&
59  ((field.count == traits::datatype<PointT, Tag>::size) ||
60  (field.count == 0 && traits::datatype<PointT, Tag>::size == 1 /* see bug #821 */)));
61  }
62  };
63 
64 } // namespace pcl
65 
pcl
Definition: convolution.h:46
types.h
Defines basic non-point types used by PCL.
pcl::PCLPointFieldConstPtr
PCLPointField::ConstPtr PCLPointFieldConstPtr
Definition: PCLPointField.h:35
pcl::PCLPointFieldPtr
PCLPointField::Ptr PCLPointFieldPtr
Definition: PCLPointField.h:34
pcl::PCLPointField::count
uindex_t count
Definition: PCLPointField.h:18
pcl::PCLPointField::INT8
@ INT8
Definition: PCLPointField.h:20
pcl::PCLPointField::INT32
@ INT32
Definition: PCLPointField.h:24
pcl::FieldMatches::operator()
bool operator()(const PCLPointField &field)
Definition: PCLPointField.h:55
pcl::PCLPointField::ConstPtr
shared_ptr< const ::pcl::PCLPointField > ConstPtr
Definition: PCLPointField.h:31
pcl::PCLPointField::FLOAT32
@ FLOAT32
Definition: PCLPointField.h:26
pcl::PCLPointField::UINT32
@ UINT32
Definition: PCLPointField.h:25
pcl::PCLPointField::offset
uindex_t offset
Definition: PCLPointField.h:16
pcl::PCLPointField::datatype
std::uint8_t datatype
Definition: PCLPointField.h:17
pcl::PCLPointField::UINT8
@ UINT8
Definition: PCLPointField.h:21
pcl::operator<<
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
Definition: bivariate_polynomial.hpp:240
pcl::PCLPointField::INT16
@ INT16
Definition: PCLPointField.h:22
pcl::PCLPointField::UINT16
@ UINT16
Definition: PCLPointField.h:23
pcl::PCLPointField::PointFieldTypes
PointFieldTypes
Definition: PCLPointField.h:20
pcl::PCLPointField::FLOAT64
@ FLOAT64
Definition: PCLPointField.h:27
pcl::PCLPointField::Ptr
shared_ptr< ::pcl::PCLPointField > Ptr
Definition: PCLPointField.h:30
pcl::PCLPointField::name
std::string name
Definition: PCLPointField.h:14
pcl::PCLPointField
Definition: PCLPointField.h:12
pcl::FieldMatches
Definition: PCLPointField.h:53
pcl::uindex_t
detail::int_type_t< detail::index_type_size, false > uindex_t
Type used for an unsigned index in PCL.
Definition: types.h:118
memory.h
Defines functions, macros and traits for allocating and using memory.