Point Cloud Library (PCL)  1.11.1-dev
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>

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.

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
 

Functions

__inline double pcl_round (double number)
 Win32 doesn't seem to have rounding functions. More...
 
__inline float pcl_round (float number)
 
void * aligned_malloc (std::size_t size)
 
void 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:
Major, \
Minor, \
unneeded_deprecation), \
major_version_mismatch)

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)

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_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 439 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

◆ aligned_free()

void aligned_free ( void *  ptr)
inline

Definition at line 402 of file pcl_macros.h.

Referenced by pcl::EnergyMaps::releaseAll(), and pcl::LinearizedMaps::releaseAll().

◆ aligned_malloc()

void* aligned_malloc ( std::size_t  size)
inline

Definition at line 380 of file pcl_macros.h.

Referenced by pcl::EnergyMaps::initialize(), and pcl::LinearizedMaps::initialize().

◆ 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.

_PCL_DEPRECATED_HEADER_IMPL
#define _PCL_DEPRECATED_HEADER_IMPL(Message)
Definition: pcl_macros.h:116
_PCL_DEPRECATED_IMPL
#define _PCL_DEPRECATED_IMPL(Message)
Definition: pcl_macros.h:97
_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_MAJOR_VERSION
#define _PCL_COMPAT_MAJOR_VERSION(Major, IfPass, IfFail)
Tests for Major == PCL_MAJOR_VERSION.
Definition: pcl_macros.h:140
_PCL_COMPAT_MINOR_VERSION
#define _PCL_COMPAT_MINOR_VERSION(Minor, IfPass, IfFail)
Tests for Minor < PCL_MINOR_VERSION.
Definition: pcl_macros.h:130