Point Cloud Library (PCL)  1.15.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 346 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 114 of file pcl_macros.h.

◆ _PCL_DEPRECATED_IMPL

#define _PCL_DEPRECATED_IMPL (   Message)

Definition at line 95 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 121 of file pcl_macros.h.

◆ _USE_MATH_DEFINES

#define _USE_MATH_DEFINES

Definition at line 57 of file pcl_macros.h.

◆ DEG2RAD

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

Definition at line 222 of file pcl_macros.h.

◆ ERASE_ARRAY

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

Definition at line 303 of file pcl_macros.h.

◆ ERASE_STRUCT

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

Definition at line 299 of file pcl_macros.h.

◆ FIXED

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

Definition at line 295 of file pcl_macros.h.

◆ FREEBSD_MALLOC_ALIGNED

#define FREEBSD_MALLOC_ALIGNED   0

Definition at line 366 of file pcl_macros.h.

◆ GLIBC_MALLOC_ALIGNED

#define GLIBC_MALLOC_ALIGNED   0

Definition at line 360 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 69 of file pcl_macros.h.

◆ PCL_CDECL

#define PCL_CDECL   __cdecl

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

Definition at line 480 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:121
#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:95
#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:114

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 322 of file pcl_macros.h.

◆ PCL_EXTERN_C

#define PCL_EXTERN_C

Definition at line 314 of file pcl_macros.h.

◆ PCL_IF_CONSTEXPR

#define PCL_IF_CONSTEXPR (   x)    if (x)

Definition at line 452 of file pcl_macros.h.

◆ PCL_IF_UNLIKELY

#define PCL_IF_UNLIKELY (   x)    if PCL_CONDITION_UNLIKELY(x)

Definition at line 483 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 231 of file pcl_macros.h.

◆ pcl_lrint

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

Definition at line 252 of file pcl_macros.h.

◆ pcl_lrintf

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

Definition at line 253 of file pcl_macros.h.

◆ PCL_NODISCARD

#define PCL_NODISCARD

Definition at line 446 of file pcl_macros.h.

◆ PCL_PRAGMA

#define PCL_PRAGMA

Definition at line 104 of file pcl_macros.h.

◆ pcl_sleep

#define pcl_sleep (   x)    sleep(x)

Definition at line 259 of file pcl_macros.h.

◆ PCL_STDCALL

#define PCL_STDCALL   __stdcall

Definition at line 334 of file pcl_macros.h.

◆ PCL_WHILE_UNLIKELY

#define PCL_WHILE_UNLIKELY (   x)    while PCL_CONDITION_UNLIKELY(x)

Definition at line 484 of file pcl_macros.h.

◆ PCLAPI

#define PCLAPI (   rettype)    PCL_EXTERN_C PCL_EXPORTS rettype PCL_CDECL

Definition at line 341 of file pcl_macros.h.

◆ PVAR

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

Definition at line 263 of file pcl_macros.h.

◆ PVARA

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

Definition at line 279 of file pcl_macros.h.

◆ PVARAC

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

Definition at line 287 of file pcl_macros.h.

◆ PVARAN

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

Definition at line 283 of file pcl_macros.h.

◆ PVARAS

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

Definition at line 291 of file pcl_macros.h.

◆ PVARC

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

Definition at line 271 of file pcl_macros.h.

◆ PVARN

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

Definition at line 267 of file pcl_macros.h.

◆ PVARS

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

Definition at line 275 of file pcl_macros.h.

◆ RAD2DEG

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

Definition at line 226 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 307 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 243 of file pcl_macros.h.