46 #if defined __INTEL_COMPILER 47 #pragma warning disable 2196 2536 279 55 #pragma warning (disable: 4018 4244 4267 4521 4251 4661 4305 4503 4146) 58 #ifndef _USE_MATH_DEFINES 59 #define _USE_MATH_DEFINES 68 #if (defined _OPENMP && (_OPENMP <= 201307)) || (defined __GNUC__ && (__GNUC__ >= 6 && __GNUC__ < 9)) 69 #define OPENMP_LEGACY_CONST_DATA_SHARING_RULE 1 71 #define OPENMP_LEGACY_CONST_DATA_SHARING_RULE 0 74 #include <pcl/pcl_config.h> 76 #include <boost/preprocessor/comparison/equal.hpp> 77 #include <boost/preprocessor/comparison/less.hpp> 78 #include <boost/preprocessor/control/if.hpp> 79 #include <boost/preprocessor/stringize.hpp> 87 #if !defined(__CUDACC__) 88 #define _PCL_DEPRECATED_IMPL(Message) [[deprecated(Message)]] 90 #define _PCL_DEPRECATED_IMPL(Message) 92 #elif __has_cpp_attribute(deprecated) 93 #define _PCL_DEPRECATED_IMPL(Message) [[deprecated(Message)]] 95 #warning "You need to implement _PCL_DEPRECATED_IMPL for this compiler" 96 #define _PCL_DEPRECATED_IMPL(Message) 100 #if (defined (__GNUC__) || defined(__clang__)) 101 #define PCL_PRAGMA(x) _Pragma (#x) 103 #define PCL_PRAGMA(x) __pragma (#x) 109 #if (defined (__GNUC__) || defined(__clang__)) 110 #define _PCL_DEPRECATED_HEADER_IMPL(Message) PCL_PRAGMA (GCC warning Message) 112 #define _PCL_DEPRECATED_HEADER_IMPL(Message) PCL_PRAGMA (warning (Message)) 114 #warning "You need to implement _PCL_DEPRECATED_HEADER_IMPL for this compiler" 115 #define _PCL_DEPRECATED_HEADER_IMPL(Message) 121 #define _PCL_PREPARE_REMOVAL_MESSAGE(Major, Minor, Msg) \ 122 Msg " (It will be removed in PCL " BOOST_PP_STRINGIZE(Major.Minor) ")" 127 #define _PCL_COMPAT_MINOR_VERSION(Minor, IfPass, IfFail) \ 128 BOOST_PP_IF(BOOST_PP_LESS(PCL_MINOR_VERSION, Minor), IfPass, IfFail) 133 #define _PCL_COMPAT_MAJOR_VERSION(Major, IfPass, IfFail) \ 134 BOOST_PP_IF(BOOST_PP_EQUAL(PCL_MAJOR_VERSION, Major), IfPass, IfFail) 147 #define PCL_DEPRECATED(Major, Minor, Message) \ 148 _PCL_COMPAT_MAJOR_VERSION( \ 150 _PCL_COMPAT_MINOR_VERSION( \ 152 _PCL_DEPRECATED_IMPL(_PCL_PREPARE_REMOVAL_MESSAGE(Major, Minor, Message)), \ 153 unneeded_deprecation), \ 154 major_version_mismatch) 167 #define PCL_DEPRECATED_HEADER(Major, Minor, Message) \ 168 _PCL_COMPAT_MAJOR_VERSION( \ 170 _PCL_COMPAT_MINOR_VERSION( \ 172 _PCL_DEPRECATED_HEADER_IMPL(_PCL_PREPARE_REMOVAL_MESSAGE( \ 175 "This header is deprecated. " Message)), \ 177 major_version_mismatch) 184 #if !defined _MATH_DEFINES_DEFINED && !defined M_2_SQRTPI 185 #define _MATH_DEFINES_DEFINED 187 #define M_E 2.71828182845904523536 // e 188 #define M_LOG2E 1.44269504088896340736 // log2(e) 189 #define M_LOG10E 0.434294481903251827651 // log10(e) 190 #define M_LN2 0.693147180559945309417 // ln(2) 191 #define M_LN10 2.30258509299404568402 // ln(10) 192 #define M_PI 3.14159265358979323846 // pi 193 #define M_PI_2 1.57079632679489661923 // pi/2 194 #define M_PI_4 0.785398163397448309616 // pi/4 195 #define M_1_PI 0.318309886183790671538 // 1/pi 196 #define M_2_PI 0.636619772367581343076 // 2/pi 197 #define M_2_SQRTPI 1.12837916709551257390 // 2/sqrt(pi) 198 #define M_SQRT2 1.41421356237309504880 // sqrt(2) 199 #define M_SQRT1_2 0.707106781186547524401 // 1/sqrt(2) 208 #define __PRETTY_FUNCTION__ __FUNCTION__ 209 #define __func__ __FUNCTION__ 211 #endif // defined _WIN32 216 bool
pcl_isnan (T&& x) {
return std::isnan (std::forward<T> (x)); }
219 PCL_DEPRECATED(1, 12,
"use std::isfinite instead of pcl_isfinite")
220 bool
pcl_isfinite (T&& x) {
return std::isfinite (std::forward<T> (x)); }
224 bool
pcl_isinf (T&& x) {
return std::isinf (std::forward<T> (x)); }
228 #define DEG2RAD(x) ((x)*0.017453293) 232 #define RAD2DEG(x) ((x)*57.29578) 237 #define PCL_LINEAR_VERSION(major,minor,patch) ((major)<<16|(minor)<<8|(patch)) 246 return (number < 0.0 ? std::ceil (number - 0.5) : std::floor (number + 0.5));
251 return (number < 0.0f ? std::ceil (number - 0.5f) : std::floor (number + 0.5f));
255 #define pcl_lrint(x) (lrint(static_cast<double> (x))) 256 #define pcl_lrintf(x) (lrintf(static_cast<float> (x))) 258 #define pcl_lrint(x) (static_cast<long int>(pcl_round(x))) 259 #define pcl_lrintf(x) (static_cast<long int>(pcl_round(x))) 263 #define pcl_sleep(x) Sleep(1000*(x)) 265 #define pcl_sleep(x) sleep(x) 270 #s << " = " << (s) << std::flush 274 #s << " = " << (s) << "\n" 278 #s << " = " << (s) << ", " << std::flush 282 #s << " = " << (s) << " " << std::flush 286 #s << " = " << RAD2DEG(s) << "deg" << std::flush 290 #s << " = " << RAD2DEG(s) << "deg\n" 294 #s << " = " << RAD2DEG(s) << "deg, " << std::flush 298 #s << " = " << RAD2DEG(s) << "deg " << std::flush 302 std::fixed << s << std::resetiosflags(std::ios_base::fixed) 305 #define ERASE_STRUCT(var) memset(&var, 0, sizeof(var)) 309 #define ERASE_ARRAY(var, size) memset(var, 0, size*sizeof(*var)) 313 #define SET_ARRAY(var, value, size) { for (decltype(size) i = 0; i < size; ++i) var[i]=value; } 318 #define PCL_EXTERN_C extern "C" 324 #if defined WIN32 || defined _WIN32 || defined WINCE || defined __MINGW32__ 325 #ifdef PCLAPI_EXPORTS 326 #define PCL_EXPORTS __declspec(dllexport) 334 #if defined WIN32 || defined _WIN32 335 #define PCL_CDECL __cdecl 336 #define PCL_STDCALL __stdcall 343 #define PCLAPI(rettype) PCL_EXTERN_C PCL_EXPORTS rettype PCL_CDECL 347 #ifndef __has_extension 348 #define __has_extension(x) 0 // Compatibility with pre-3.0 compilers. 351 #if defined (__GNUC__) || defined (__PGI) || defined (__IBMCPP__) || defined (__SUNPRO_CC) 352 #define PCL_ALIGN(alignment) __attribute__((aligned(alignment))) 353 #elif defined (_MSC_VER) 354 #define PCL_ALIGN(alignment) __declspec(align(alignment)) 356 #error Alignment not supported on your platform 359 #if defined(__GLIBC__) && PCL_LINEAR_VERSION(__GLIBC__,__GLIBC_MINOR__,0)>PCL_LINEAR_VERSION(2,8,0) 360 #define GLIBC_MALLOC_ALIGNED 1 362 #define GLIBC_MALLOC_ALIGNED 0 365 #if defined(__FreeBSD__) && !defined(__arm__) && !defined(__mips__) 366 #define FREEBSD_MALLOC_ALIGNED 1 368 #define FREEBSD_MALLOC_ALIGNED 0 371 #if defined(__APPLE__) || defined(_WIN64) || GLIBC_MALLOC_ALIGNED || FREEBSD_MALLOC_ALIGNED 372 #define MALLOC_ALIGNED 1 375 #if defined (HAVE_MM_MALLOC) 377 #if defined(__INTEL_COMPILER) 380 #include <mm_malloc.h> 388 #if defined (MALLOC_ALIGNED) 389 ptr = std::malloc (size);
390 #elif defined (HAVE_POSIX_MEMALIGN) 391 if (posix_memalign (&ptr, 16, size))
393 #elif defined (HAVE_MM_MALLOC) 394 ptr = _mm_malloc (size, 16);
395 #elif defined (_MSC_VER) 396 ptr = _aligned_malloc (size, 16);
397 #elif defined (ANDROID) 398 ptr = memalign (16, size);
400 #error aligned_malloc not supported on your platform 409 #if defined (MALLOC_ALIGNED) || defined (HAVE_POSIX_MEMALIGN) 411 #elif defined (HAVE_MM_MALLOC) 413 #elif defined (_MSC_VER) 415 #elif defined (ANDROID) 418 #error aligned_free not supported on your platform 427 #if (__cplusplus >= 201703L) || (defined(_MSC_VER) && (_MSC_VER >= 1910) && (_MSVC_LANG >= 201703L)) 428 #define PCL_FALLTHROUGH [[fallthrough]]; 429 #elif defined(__clang__) 430 #define PCL_FALLTHROUGH [[clang::fallthrough]]; 431 #elif defined(__GNUC__) && (__GNUC__ >= 7) 432 #define PCL_FALLTHROUGH [[gnu::fallthrough]]; 434 #define PCL_FALLTHROUGH 437 #if (__cplusplus >= 201703L) || (defined(_MSC_VER) && (_MSC_VER >= 1911) && (_MSVC_LANG >= 201703L)) 438 #define PCL_NODISCARD [[nodiscard]] 439 #elif defined(__clang__) && (PCL_LINEAR_VERSION(__clang_major__, __clang_minor__, 0) >= PCL_LINEAR_VERSION(3, 9, 0)) 440 #define PCL_NODISCARD [[clang::warn_unused_result]] 441 #elif defined(__GNUC__) 442 #define PCL_NODISCARD [[gnu::warn_unused_result]] 444 #define PCL_NODISCARD
__inline double pcl_round(double number)
Win32 doesn't seem to have rounding functions.
void aligned_free(void *ptr)
#define PCL_DEPRECATED(Major, Minor, Message)
macro for compatibility across compilers and help remove old deprecated items for the Major...
void * aligned_malloc(std::size_t size)