MeVisLab Toolbox Reference
mlPCLTypesPrivate.h
Go to the documentation of this file.
1 // Copyright (c) Fraunhofer MEVIS, Germany. All rights reserved.
2 // **InsertLicense** code author="Wolf Spindler"
3 //----------------------------------------------------------------------------------
5 
12 //----------------------------------------------------------------------------------
13 #pragma once
14 
15  // 0: ------------------------------------------
17 #define _CODE_FOR_0_ARGS(PC_PTR_CONTAINER, ML_PCL_TYPE_ARG, FUNC, MULTI_PURPOSE_ARG) \
18  if (PC_PTR_CONTAINER.ML_PCL_TYPE_ARG){ FUNC(PC_PTR_CONTAINER.ML_PCL_TYPE_ARG); }
19 
21 #define _CODE_FOR_0_ARGS_CONST_REF(PC_PTR_CONTAINER, ML_PCL_TYPE_ARG, FUNC, MULTI_PURPOSE_ARG) \
22  if (PC_PTR_CONTAINER.ML_PCL_TYPE_ARG){ FUNC(*PC_PTR_CONTAINER.ML_PCL_TYPE_ARG); }
23 
25 #define _CODE_FOR_0_ARGS_AND_CALL_FOR_SELECTED_TYPE(PC_PTR_CONTAINER, ML_PCL_TYPE_ARG, FUNC, MULTI_PURPOSE_ARG) \
26  { \
27  const MLPCLPointTypeEnumerators enumOfType = getEnumeratorOfPCLPointType(PC_PTR_CONTAINER.ML_PCL_TYPE_ARG); \
28  if (enumOfType == MULTI_PURPOSE_ARG) { FUNC(PC_PTR_CONTAINER.ML_PCL_TYPE_ARG); } \
29  }
30 
31  // Cross implementation: ------------------------------------------
33 #define _CODE_FOR_CROSS_IMPLEMENTATION(PC_PTR1, PC_PTR2, FUNC, PC_PTR_CONTAINER2) \
34  if (PC_PTR1 && PC_PTR2){ FUNC(PC_PTR1, PC_PTR2); }
35 
37 #define _CODE_FOR_CROSS_IMPLEMENTATION_CONST_REF(PC_PTR1, PC_PTR2, FUNC, PC_PTR_CONTAINER2) \
38  if (PC_PTR1 && PC_PTR2){ FUNC(*PC_PTR1, *PC_PTR2); }
39 
41  // Adapt this if a new PCL point type is integrated in the MeVisLab binding.
42 #define _ML_CROSS_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES(PC_PTR1, FUNC, POINT_CLOUD_POINTERS2) \
43  _CODE_FOR_CROSS_IMPLEMENTATION(PC_PTR1, POINT_CLOUD_POINTERS2.pointCloudXYZ , FUNC, POINT_CLOUD_POINTERS2.ML_PCL_TYPE_ARG) \
44  _CODE_FOR_CROSS_IMPLEMENTATION(PC_PTR1, POINT_CLOUD_POINTERS2.pointCloudXYZLNormal , FUNC, POINT_CLOUD_POINTERS2.ML_PCL_TYPE_ARG) \
45  _CODE_FOR_CROSS_IMPLEMENTATION(PC_PTR1, POINT_CLOUD_POINTERS2.pointCloudXYZRGBNormal, FUNC, POINT_CLOUD_POINTERS2.ML_PCL_TYPE_ARG) \
46  _CODE_FOR_CROSS_IMPLEMENTATION(PC_PTR1, POINT_CLOUD_POINTERS2.pointCloudXYZINormal , FUNC, POINT_CLOUD_POINTERS2.ML_PCL_TYPE_ARG)
47 
49 #define _ML_CROSS_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_CONST_REF(PC_PTR1, FUNC, POINT_CLOUD_POINTERS2) \
50  _CODE_FOR_CROSS_IMPLEMENTATION_CONST_REF(PC_PTR1, POINT_CLOUD_POINTERS2.pointCloudXYZ , FUNC, POINT_CLOUD_POINTERS2.ML_PCL_TYPE_ARG) \
51  _CODE_FOR_CROSS_IMPLEMENTATION_CONST_REF(PC_PTR1, POINT_CLOUD_POINTERS2.pointCloudXYZLNormal , FUNC, POINT_CLOUD_POINTERS2.ML_PCL_TYPE_ARG) \
52  _CODE_FOR_CROSS_IMPLEMENTATION_CONST_REF(PC_PTR1, POINT_CLOUD_POINTERS2.pointCloudXYZRGBNormal, FUNC, POINT_CLOUD_POINTERS2.ML_PCL_TYPE_ARG) \
53  _CODE_FOR_CROSS_IMPLEMENTATION_CONST_REF(PC_PTR1, POINT_CLOUD_POINTERS2.pointCloudXYZINormal , FUNC, POINT_CLOUD_POINTERS2.ML_PCL_TYPE_ARG)
54 
56 #define _ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS(PC_PTR_CONTAINER1, ML_PCL_TYPE_ARG, FUNC, POINT_CLOUD_POINTERS2) \
57  _ML_CROSS_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES(PC_PTR_CONTAINER1.ML_PCL_TYPE_ARG, FUNC, POINT_CLOUD_POINTERS2)
58 
60 #define _ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS_CONST_REF(PC_PTR_CONTAINER1, ML_PCL_TYPE_ARG, FUNC, POINT_CLOUD_POINTERS2) \
61  _ML_CROSS_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_CONST_REF(PC_PTR_CONTAINER1.ML_PCL_TYPE_ARG, FUNC, POINT_CLOUD_POINTERS2)
62 
63 
64 //----------------------------------------------------------------------------------
68 //----------------------------------------------------------------------------------
69 template <typename T>
70 void _MLPCLNoObjectDeleter(const T *){}
71 
@ T
Definition: SoKeyGrabber.h:71
void _MLPCLNoObjectDeleter(const T *)
A dummy function passed to the creation of shared pointers which shall not delete the object passed t...