Point Cloud Library (PCL)  1.12.1-dev
Namespaces | Macros | Functions
pcl_macros.h File Reference
#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>
+ Include dependency graph for pcl_macros.h:
+ This graph shows which files directly or indirectly include this file:

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)
 
#define PCL_CONDITION_UNLIKELY(x)   (x)
 Tries to inform the compiler to optimize codegen assuming that the condition will probably evaluate to false. More...
 
#define PCL_IF_UNLIKELY(x)   if PCL_CONDITION_UNLIKELY(x)
 
#define PCL_WHILE_UNLIKELY(x)   while PCL_CONDITION_UNLIKELY(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_CONDITION_UNLIKELY

#define PCL_CONDITION_UNLIKELY (   x)    (x)

Tries to inform the compiler to optimize codegen assuming that the condition will probably evaluate to false.

Note
Prefer using PCL_{IF,WHILE}_UNLIKELY
Warning
This can't be used with switch statements

This tries to help the compiler optimize for the unlikely case. Most compilers assume that the condition would evaluate to true in if and while loops (reference needed) As such the opposite of this macro (PCL_CONDITION_LIKELY) will not result in significant performance improvement

Some sample usage:

if PCL_CONDITION_UNLIKELY(x == 0) { return; } else { throw std::runtime_error("some error"); }
//
while PCL_CONDITION_UNLIKELY(wait_for_result) { sleep(1); } // busy wait, with minimal chances of waiting
#define PCL_CONDITION_UNLIKELY(x)
Tries to inform the compiler to optimize codegen assuming that the condition will probably evaluate t...
Definition: pcl_macros.h:477

Definition at line 477 of file pcl_macros.h.

◆ PCL_DEPRECATED

#define PCL_DEPRECATED (   Major,
  Minor,
  Message 
)
Value:
Major, \
Minor, \
unneeded_deprecation), \
major_version_mismatch)
#define _PCL_PREPARE_REMOVAL_MESSAGE(Major, Minor, Msg)
A handy way to inform the user of the removal deadline.
Definition: pcl_macros.h:122
#define _PCL_COMPAT_MINOR_VERSION(Minor, IfPass, IfFail)
Tests for Minor < PCL_MINOR_VERSION.
Definition: pcl_macros.h:130
#define _PCL_DEPRECATED_IMPL(Message)
Definition: pcl_macros.h:97
#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:
Major, \
Minor, \
Major, \
Minor, \
"This header is deprecated. " Message)), \
unneeded_header), \
major_version_mismatch)
#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_IF_UNLIKELY

#define PCL_IF_UNLIKELY (   x)    if PCL_CONDITION_UNLIKELY(x)

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

◆ PCL_WHILE_UNLIKELY

#define PCL_WHILE_UNLIKELY (   x)    while PCL_CONDITION_UNLIKELY(x)

Definition at line 481 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)

◆ pcl_round() [2/2]

__inline float pcl_round ( float  number)

Definition at line 244 of file pcl_macros.h.