pcl_macros.h File Reference
Module common
`#include <cmath>`
`#include <cstdlib>`
`#include <iostream>`
`#include <pcl/pcl_config.h>`
`#include <boost/preprocessor/arithmetic/add.hpp>`
`#include <boost/preprocessor/comparison/equal.hpp>`
`#include <boost/preprocessor/comparison/less.hpp>`
`#include <boost/preprocessor/control/if.hpp>`
`#include <boost/preprocessor/stringize.hpp>`

Go to the source code of this file.

## Detailed Description

Defines all the PCL and non-PCL macros used.

Definition in file pcl_macros.h.

## Namespaces

| pcl

## Macros

#define | _USE_MATH_DEFINES
#define | OPENMP_LEGACY_CONST_DATA_SHARING_RULE 0
#define | _PCL_DEPRECATED_IMPL(Message)
#define | PCL_PRAGMA
#define | _PCL_DEPRECATED_HEADER_IMPL(Message)
#define | _PCL_PREPARE_REMOVAL_MESSAGE(Major, Minor, Msg) Msg " (It will be removed in PCL " BOOST_PP_STRINGIZE(Major.Minor) ")"
| A handy way to inform the user of the removal deadline. More...
#define | _PCL_COMPAT_MINOR_VERSION(Minor, IfPass, IfFail)
| Tests for Minor < PCL_MINOR_VERSION. More...
#define | _PCL_COMPAT_MAJOR_VERSION(Major, IfPass, IfFail)
| Tests for Major == PCL_MAJOR_VERSION. More...
#define | PCL_DEPRECATED(Major, Minor, Message)
| macro for compatibility across compilers and help remove old deprecated items for the Major.Minor release More...
#define | PCL_DEPRECATED_HEADER(Major, Minor, Message)
| macro for compatibility across compilers and help remove old deprecated headers for the Major.Minor release More...
#define | _MATH_DEFINES_DEFINED
#define | M_E 2.71828182845904523536
#define | M_LOG2E 1.44269504088896340736
#define | M_LOG10E 0.434294481903251827651
#define | M_LN2 0.693147180559945309417
#define | M_LN10 2.30258509299404568402
#define | M_PI 3.14159265358979323846
#define | M_PI_2 1.57079632679489661923
#define | M_PI_4 0.785398163397448309616
#define | M_1_PI 0.318309886183790671538
#define | M_2_PI 0.636619772367581343076
#define | M_2_SQRTPI 1.12837916709551257390
#define | M_SQRT2 1.41421356237309504880
#define | M_SQRT1_2 0.707106781186547524401
#define | DEG2RAD(x) ((x)*0.017453293)
#define | RAD2DEG(x) ((x)*57.29578)
#define | PCL_LINEAR_VERSION(major, minor, patch) ((major)<<16|(minor)<<8|(patch))
| Macro that maps version information given by major.minor.patch to a linear integer value to enable easy comparison. More...
#define | pcl_lrint(x) (static_cast<long int>(pcl_round(x)))
#define | pcl_lrintf(x) (static_cast<long int>(pcl_round(x)))
#define | pcl_sleep(x) sleep(x)
#define | PVAR(s) #s << " = " << (s) << std::flush
#define | PVARN(s) #s << " = " << (s) << "\n"
#define | PVARC(s) #s << " = " << (s) << ", " << std::flush
#define | PVARS(s) #s << " = " << (s) << " " << std::flush
#define | PVARA(s) #s << " = " << RAD2DEG(s) << "deg" << std::flush
#define | PVARAN(s) #s << " = " << RAD2DEG(s) << "deg\n"
#define | PVARAC(s) #s << " = " << RAD2DEG(s) << "deg, " << std::flush
#define | PVARAS(s) #s << " = " << RAD2DEG(s) << "deg " << std::flush
#define | FIXED(s) std::fixed << s << std::resetiosflags(std::ios_base::fixed)
#define | ERASE_STRUCT(var) memset(&var, 0, sizeof(var))
#define | ERASE_ARRAY(var, size) memset(var, 0, size*sizeof(*var))
#define | SET_ARRAY(var, value, size) { for (decltype(size) i = 0; i < size; ++i) var[i]=value; }
#define | PCL_EXTERN_C
#define | PCL_EXPORTS
#define | PCL_CDECL __cdecl
#define | PCL_STDCALL __stdcall
#define | PCLAPI(rettype) PCL_EXTERN_C PCL_EXPORTS rettype PCL_CDECL
#define | __has_extension(x) 0
#define | GLIBC_MALLOC_ALIGNED 0
#define | FREEBSD_MALLOC_ALIGNED 0
#define | PCL_FALLTHROUGH
| Macro to add a no-op or a fallthrough attribute based on compiler feature. More...
#define | PCL_NODISCARD
#define | PCL_IF_CONSTEXPR(x) if (x)

## Functions

__inline double | pcl_round (double number)
| Win32 doesn't seem to have rounding functions. More...
__inline float | pcl_round (float number)
void * | pcl::aligned_malloc (std::size_t size)
void | pcl::aligned_free (void *ptr)

## Macro Definition Documentation

## __has_extension

#define __has_extension | ( |  | x | ) | 0

Definition at line 343 of file pcl_macros.h.

## _MATH_DEFINES_DEFINED

#define _MATH_DEFINES_DEFINED

Definition at line 194 of file pcl_macros.h.

## _PCL_COMPAT_MAJOR_VERSION

#define _PCL_COMPAT_MAJOR_VERSION | ( |  | Major,
|  |  | IfPass,
|  |  | IfFail
| ) |  |

Value:
BOOST_PP_IF(BOOST_PP_EQUAL(PCL_MINOR_VERSION, 99), \
BOOST_PP_IF(BOOST_PP_EQUAL(BOOST_PP_ADD(PCL_MAJOR_VERSION, 1), Major), IfPass, IfFail), \
BOOST_PP_IF(BOOST_PP_EQUAL(PCL_MAJOR_VERSION, Major), IfPass, IfFail))

Tests for Major == PCL_MAJOR_VERSION.

When PCL VERSION is of format `34.99.12`, this macro behaves as if it is already `35.0.0`, and allows for smoother transition for maintainers

Definition at line 140 of file pcl_macros.h.

## _PCL_COMPAT_MINOR_VERSION

#define _PCL_COMPAT_MINOR_VERSION | ( |  | Minor,
|  |  | IfPass,
|  |  | IfFail
| ) |  |

Value:
BOOST_PP_IF(BOOST_PP_EQUAL(PCL_REVISION_VERSION, 99), \
BOOST_PP_IF(BOOST_PP_LESS(BOOST_PP_ADD(PCL_MINOR_VERSION, 1), Minor), IfPass, IfFail), \
BOOST_PP_IF(BOOST_PP_LESS(PCL_MINOR_VERSION, Minor), IfPass, IfFail))

Tests for Minor < PCL_MINOR_VERSION.

When PCL VERSION is of format `34.12.99`, this macro behaves as if it is already `34.13.0`, and allows for smoother transition for maintainers

Definition at line 130 of file pcl_macros.h.

## _PCL_DEPRECATED_HEADER_IMPL

#define _PCL_DEPRECATED_HEADER_IMPL | ( |  | Message | ) |

Definition at line 116 of file pcl_macros.h.

## _PCL_DEPRECATED_IMPL

#define _PCL_DEPRECATED_IMPL | ( |  | Message | ) |

Definition at line 97 of file pcl_macros.h.

## _PCL_PREPARE_REMOVAL_MESSAGE

#define _PCL_PREPARE_REMOVAL_MESSAGE | ( |  | Major,
|  |  | Minor,
|  |  | Msg
| ) |  | Msg " (It will be removed in PCL " BOOST_PP_STRINGIZE(Major.Minor) ")"

A handy way to inform the user of the removal deadline.

Definition at line 122 of file pcl_macros.h.

## _USE_MATH_DEFINES

#define _USE_MATH_DEFINES

Definition at line 59 of file pcl_macros.h.

## DEG2RAD

#define DEG2RAD | ( |  | x | ) | ((x)*0.017453293)

Definition at line 223 of file pcl_macros.h.

## ERASE_ARRAY

#define ERASE_ARRAY | ( |  | var,
|  |  | size
| ) |  | memset(var, 0, size*sizeof(*var))

Definition at line 304 of file pcl_macros.h.

## ERASE_STRUCT

#define ERASE_STRUCT | ( |  | var | ) | memset(&var, 0, sizeof(var))

Definition at line 300 of file pcl_macros.h.

## FIXED

#define FIXED | ( |  | s | ) | std::fixed << s << std::resetiosflags(std::ios_base::fixed)

Definition at line 296 of file pcl_macros.h.

## FREEBSD_MALLOC_ALIGNED

#define FREEBSD_MALLOC_ALIGNED 0

Definition at line 363 of file pcl_macros.h.

## GLIBC_MALLOC_ALIGNED

#define GLIBC_MALLOC_ALIGNED 0

Definition at line 357 of file pcl_macros.h.

## M_1_PI

#define M_1_PI 0.318309886183790671538

Definition at line 204 of file pcl_macros.h.

## M_2_PI

#define M_2_PI 0.636619772367581343076

Definition at line 205 of file pcl_macros.h.

## M_2_SQRTPI

#define M_2_SQRTPI 1.12837916709551257390

Definition at line 206 of file pcl_macros.h.

## M_E

#define M_E 2.71828182845904523536

Definition at line 196 of file pcl_macros.h.

## M_LN10

#define M_LN10 2.30258509299404568402

Definition at line 200 of file pcl_macros.h.

## M_LN2

#define M_LN2 0.693147180559945309417

Definition at line 199 of file pcl_macros.h.

## M_LOG10E

#define M_LOG10E 0.434294481903251827651

Definition at line 198 of file pcl_macros.h.

## M_LOG2E

#define M_LOG2E 1.44269504088896340736

Definition at line 197 of file pcl_macros.h.

## M_PI

#define M_PI 3.14159265358979323846

Definition at line 201 of file pcl_macros.h.

## M_PI_2

#define M_PI_2 1.57079632679489661923

Definition at line 202 of file pcl_macros.h.

## M_PI_4

#define M_PI_4 0.785398163397448309616

Definition at line 203 of file pcl_macros.h.

## M_SQRT1_2

#define M_SQRT1_2 0.707106781186547524401

Definition at line 208 of file pcl_macros.h.

## M_SQRT2

#define M_SQRT2 1.41421356237309504880

Definition at line 207 of file pcl_macros.h.

## OPENMP_LEGACY_CONST_DATA_SHARING_RULE

#define OPENMP_LEGACY_CONST_DATA_SHARING_RULE 0

Definition at line 71 of file pcl_macros.h.

## PCL_CDECL

#define PCL_CDECL __cdecl

Definition at line 330 of file pcl_macros.h.

## PCL_DEPRECATED

#define PCL_DEPRECATED | ( |  | Major,
|  |  | Minor,
|  |  | Message
| ) |  |

Value:
_PCL_COMPAT_MAJOR_VERSION( \
Major, \
_PCL_COMPAT_MINOR_VERSION( \
Minor, \
_PCL_DEPRECATED_IMPL(_PCL_PREPARE_REMOVAL_MESSAGE(Major, Minor, Message)), \
unneeded_deprecation), \
major_version_mismatch)
_PCL_PREPARE_REMOVAL_MESSAGE
#define _PCL_PREPARE_REMOVAL_MESSAGE(Major, Minor, Msg)
A handy way to inform the user of the removal deadline.
Definition: pcl_macros.h:122
_PCL_COMPAT_MINOR_VERSION
#define _PCL_COMPAT_MINOR_VERSION(Minor, IfPass, IfFail)
Tests for Minor < PCL_MINOR_VERSION.
Definition: pcl_macros.h:130
_PCL_DEPRECATED_IMPL
#define _PCL_DEPRECATED_IMPL(Message)
Definition: pcl_macros.h:97
_PCL_COMPAT_MAJOR_VERSION
#define _PCL_COMPAT_MAJOR_VERSION(Major, IfPass, IfFail)
Tests for Major == PCL_MAJOR_VERSION.
Definition: pcl_macros.h:140

macro for compatibility across compilers and help remove old deprecated items for the Major.Minor release

compiler errors of `unneeded_deprecation` and `major_version_mismatch` are hints to the developer that those items can be safely removed. Behavior of PCL_DEPRECATED(1, 99, "Not needed anymore")

- till PCL 1.98: "Not needed anymore (It will be removed in PCL 1.99)"
- PCL 1.99 onwards: compiler error with "unneeded_deprecation"
- PCL 2.0 onwards: compiler error with "major_version_mismatch"

Definition at line 156 of file pcl_macros.h.

## PCL_DEPRECATED_HEADER

#define PCL_DEPRECATED_HEADER | ( |  | Major,
|  |  | Minor,
|  |  | Message
| ) |  |

Value:
_PCL_COMPAT_MAJOR_VERSION( \
Major, \
_PCL_COMPAT_MINOR_VERSION( \
Minor, \
_PCL_DEPRECATED_HEADER_IMPL(_PCL_PREPARE_REMOVAL_MESSAGE( \
Major, \
Minor, \
"This header is deprecated. " Message)), \
unneeded_header), \
major_version_mismatch)
_PCL_DEPRECATED_HEADER_IMPL
#define _PCL_DEPRECATED_HEADER_IMPL(Message)
Definition: pcl_macros.h:116

macro for compatibility across compilers and help remove old deprecated headers for the Major.Minor release

compiler errors of `unneeded_header` and `major_version_mismatch` are hints to the developer that those items can be safely removed. Behavior of PCL_DEPRECATED_HEADER(1, 99, "Use file <newfile.h> instead.")

- till PCL 1.98: "This header is deprecated. Use file <newfile.h> instead. (It will be removed in PCL 1.99)"
- PCL 1.99 onwards: compiler error with "unneeded_header"
- PCL 2.0 onwards: compiler error with "major_version_mismatch"

Definition at line 176 of file pcl_macros.h.

## PCL_EXPORTS

#define PCL_EXPORTS

Definition at line 323 of file pcl_macros.h.

## PCL_EXTERN_C

#define PCL_EXTERN_C

Definition at line 315 of file pcl_macros.h.

## PCL_IF_CONSTEXPR

#define PCL_IF_CONSTEXPR | ( |  | x | ) | if (x)

Definition at line 449 of file pcl_macros.h.

## PCL_LINEAR_VERSION

#define PCL_LINEAR_VERSION | ( |  | major,
|  |  | minor,
|  |  | patch
| ) |  | ((major)<<16|(minor)<<8|(patch))

Macro that maps version information given by major.minor.patch to a linear integer value to enable easy comparison.

Definition at line 232 of file pcl_macros.h.

## pcl_lrint

#define pcl_lrint | ( |  | x | ) | (static_cast<long int>(pcl_round(x)))

Definition at line 253 of file pcl_macros.h.

## pcl_lrintf

#define pcl_lrintf | ( |  | x | ) | (static_cast<long int>(pcl_round(x)))

Definition at line 254 of file pcl_macros.h.

## PCL_NODISCARD

#define PCL_NODISCARD

Definition at line 443 of file pcl_macros.h.

## PCL_PRAGMA

#define PCL_PRAGMA

Definition at line 106 of file pcl_macros.h.

## pcl_sleep

#define pcl_sleep | ( |  | x | ) | sleep(x)

Definition at line 260 of file pcl_macros.h.

## PCL_STDCALL

#define PCL_STDCALL __stdcall

Definition at line 331 of file pcl_macros.h.

## PCLAPI

#define PCLAPI | ( |  | rettype | ) | PCL_EXTERN_C PCL_EXPORTS rettype PCL_CDECL

Definition at line 338 of file pcl_macros.h.

## PVAR

#define PVAR | ( |  | s | ) | #s << " = " << (s) << std::flush

Definition at line 264 of file pcl_macros.h.

## PVARA

#define PVARA | ( |  | s | ) | #s << " = " << RAD2DEG(s) << "deg" << std::flush

Definition at line 280 of file pcl_macros.h.

## PVARAC

#define PVARAC | ( |  | s | ) | #s << " = " << RAD2DEG(s) << "deg, " << std::flush

Definition at line 288 of file pcl_macros.h.

## PVARAN

#define PVARAN | ( |  | s | ) | #s << " = " << RAD2DEG(s) << "deg\n"

Definition at line 284 of file pcl_macros.h.

## PVARAS

#define PVARAS | ( |  | s | ) | #s << " = " << RAD2DEG(s) << "deg " << std::flush

Definition at line 292 of file pcl_macros.h.

## PVARC

#define PVARC | ( |  | s | ) | #s << " = " << (s) << ", " << std::flush

Definition at line 272 of file pcl_macros.h.

## PVARN

#define PVARN | ( |  | s | ) | #s << " = " << (s) << "\n"

Definition at line 268 of file pcl_macros.h.

## PVARS

#define PVARS | ( |  | s | ) | #s << " = " << (s) << " " << std::flush

Definition at line 276 of file pcl_macros.h.

## RAD2DEG

#define RAD2DEG | ( |  | x | ) | ((x)*57.29578)

Definition at line 227 of file pcl_macros.h.

## SET_ARRAY

#define SET_ARRAY | ( |  | var,
|  |  | value,
|  |  | size
| ) |  | { for (decltype(size) i = 0; i < size; ++i) var[i]=value; }

Definition at line 308 of file pcl_macros.h.

## Function Documentation

## pcl_round() [1/2]

__inline double pcl_round | ( | double | number | ) |

Win32 doesn't seem to have rounding functions.

Therefore implement our own versions of these functions here.

Definition at line 239 of file pcl_macros.h.

Referenced by pcl::ESFEstimation< PointInT, PointOutT >::computeESF(), pcl::VFHEstimation< PointInT, PointNT, PointOutT >::computePointSPFHSignature(), pcl::face_detection::FeatureHandlerDepthAverage< FT, DataSet, ExampleIndex >::evaluateFeature(), and pcl::OrganizedNeighborSearch< PointT >::pointPlaneProjection().

## pcl_round() [2/2]

__inline float pcl_round | ( | float | number | ) |

Definition at line 244 of file pcl_macros.h.