Point Cloud Library (PCL) 1.15.0
Loading...
Searching...
No Matches
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
10namespace pcl
11{
13 {
14 std::string name;
15
17 std::uint8_t datatype = 0;
19
20 enum PointFieldTypes { BOOL = traits::asEnum_v<bool>,
21 INT8 = traits::asEnum_v<std::int8_t>,
22 UINT8 = traits::asEnum_v<std::uint8_t>,
23 INT16 = traits::asEnum_v<std::int16_t>,
24 UINT16 = traits::asEnum_v<std::uint16_t>,
25 INT32 = traits::asEnum_v<std::int32_t>,
26 UINT32 = traits::asEnum_v<std::uint32_t>,
27 INT64 = traits::asEnum_v<std::int64_t>,
28 UINT64 = traits::asEnum_v<std::uint64_t>,
29 FLOAT32 = traits::asEnum_v<float>,
30 FLOAT64 = traits::asEnum_v<double>};
31
32 public:
33 using Ptr = shared_ptr< ::pcl::PCLPointField>;
34 using ConstPtr = shared_ptr<const ::pcl::PCLPointField>;
35 }; // struct PCLPointField
36
39
40 inline std::ostream& operator<<(std::ostream& s, const ::pcl::PCLPointField & v)
41 {
42 s << "name: ";
43 s << " " << v.name << std::endl;
44 s << "offset: ";
45 s << " " << v.offset << std::endl;
46 s << "datatype: ";
47 switch(v.datatype) {
48 case ::pcl::PCLPointField::PointFieldTypes::BOOL: s << " BOOL" << std::endl; break;
49 case ::pcl::PCLPointField::PointFieldTypes::INT8: s << " INT8" << std::endl; break;
50 case ::pcl::PCLPointField::PointFieldTypes::UINT8: s << " UINT8" << std::endl; break;
51 case ::pcl::PCLPointField::PointFieldTypes::INT16: s << " INT16" << std::endl; break;
52 case ::pcl::PCLPointField::PointFieldTypes::UINT16: s << " UINT16" << std::endl; break;
53 case ::pcl::PCLPointField::PointFieldTypes::INT32: s << " INT32" << std::endl; break;
54 case ::pcl::PCLPointField::PointFieldTypes::UINT32: s << " UINT32" << std::endl; break;
55 case ::pcl::PCLPointField::PointFieldTypes::INT64: s << " INT64" << std::endl; break;
56 case ::pcl::PCLPointField::PointFieldTypes::UINT64: s << " UINT64" << std::endl; break;
57 case ::pcl::PCLPointField::PointFieldTypes::FLOAT32: s << " FLOAT32" << std::endl; break;
58 case ::pcl::PCLPointField::PointFieldTypes::FLOAT64: s << " FLOAT64" << std::endl; break;
59 default: s << " " << static_cast<int>(v.datatype) << std::endl;
60 }
61 s << "count: ";
62 s << " " << v.count << std::endl;
63 return (s);
64 }
65
66 // Return true if the PCLPointField matches the expected name and data type.
67 // Written as a struct to allow partially specializing on Tag.
68 template<typename PointT, typename Tag>
70 {
71 bool operator() (const PCLPointField& field)
72 {
73 return ((field.name == traits::name<PointT, Tag>::value) &&
74 (field.datatype == traits::datatype<PointT, Tag>::value) &&
75 ((field.count == traits::datatype<PointT, Tag>::size) ||
76 (field.count == 0 && traits::datatype<PointT, Tag>::size == 1 /* see bug #821 */)));
77 }
78 };
79
80} // namespace pcl
81
Defines functions, macros and traits for allocating and using memory.
PCLPointField::ConstPtr PCLPointFieldConstPtr
detail::int_type_t< detail::index_type_size, false > uindex_t
Type used for an unsigned index in PCL.
Definition types.h:120
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
PCLPointField::Ptr PCLPointFieldPtr
bool operator()(const PCLPointField &field)
shared_ptr< const ::pcl::PCLPointField > ConstPtr
std::uint8_t datatype
shared_ptr< ::pcl::PCLPointField > Ptr
Defines basic non-point types used by PCL.