MeVisLab Toolbox Reference
mlPCLObjectPtrsContainer.h File Reference

A container with pointers from the PCL (Point Cloud Library) passed in BaseObjects between PCL modules. More...

#include "MLPCLSupportSystem.h"
#include <mlPCLTypes.h>
#include <mlPCLTypesPrivate.h>

Go to the source code of this file.

Classes

struct  ml::MLPCLObjectPtrsContainer
 A container with pointers from the PCL (Point Cloud Library) passed in BaseObjects between PCL modules. More...
 

Namespaces

 ml
 Main documentation file for ML users and developers.
 

Macros

#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES(CODE, PTR_CONTAINER, FUNC, MULTI_PURPOSE_ARG)
 Macro instantiating code on all point cloud pointers in MLPCLObjectPtrsContainer. More...
 
#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0(FUNC, POINT_CLOUD_POINTERS)   { ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES(_CODE_FOR_0_ARGS, POINT_CLOUD_POINTERS, FUNC, ML_EMPTY_PARAM) }
 Implements the function FUNC for all supported PCL point types in the MeVisLab binding and calls FUNC for pointers in POINT_CLOUD_POINTERS which are non nullptr. More...
 
#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0_CONST_REF(FUNC, POINT_CLOUD_POINTERS)   { ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES(_CODE_FOR_0_ARGS_CONST_REF, POINT_CLOUD_POINTERS, FUNC, ML_EMPTY_PARAM) }
 Same as ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0 with the difference that FUNC should receive pcl objects as const &. More...
 
#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0_AND_CALL_FOR_SELECTED_TYPE(FUNC, POINT_CLOUD_POINTERS, ENUM_SELECTOR)   { ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES(_CODE_FOR_0_ARGS_AND_CALL_FOR_SELECTED_TYPE, POINT_CLOUD_POINTERS, FUNC, ENUM_SELECTOR) }
 Implements the function for all supported PCL point types in the MeVisLab binding and calls FUNC for the pointer defined by ENUM_SELECTOR, even if the pointer is nullptr. More...
 
#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS(FUNC, POINT_CLOUD_POINTERS1, POINT_CLOUD_POINTERS2)
 Implements the function typed over for all supported PCL point types in the MeVisLab binding. More...
 
#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS_CONST_REF(FUNC, POINT_CLOUD_POINTERS1, POINT_CLOUD_POINTERS2)
 Same as ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS with the difference that FUNC should receive pcl objects as const &. More...
 
#define ML_PCL_TEST_INTERFACE_NO_OVERRIDE(BASE_OBJECT_NAME)
 Implements a dedicated interface for PCL related modules which is required in automatic tests. More...
 
#define ML_PCL_TEST_INTERFACE(BASE_OBJECT_NAME)
 Implements a dedicated interface for PCL related modules which is required in automatic tests. More...
 

Functions

template<class MODULE_TYPE >
std::string ml::callSameTyped_filterT (MODULE_TYPE &mod, const std::string &successfullCalledFilterMessage="", const std::string &noValidPointCloudMessage="No input point clouds", const std::string &noInput1PointCloudMessage="No input 1 point cloud", const std::string &noInput2PointCloudMessage="No input 2 point cloud", const std::string &differentPointCloudMessage="Input point clouds do not have same point type")
 Helper function to call. More...
 
template<typename POINT_CLOUD_TYPE >
std::shared_ptr< const POINT_CLOUD_TYPE > ml::PCLMakeLocalNonDeletingSharedConstPtr (const POINT_CLOUD_TYPE &pntCloud)
 Many pcl filters and classes require a boost shared pointer to the point cloud to be processed, which however, sometimes is not available, but only a constant reference. More...
 

Detailed Description

A container with pointers from the PCL (Point Cloud Library) passed in BaseObjects between PCL modules.

Author
"Wolf Spindler"
Date
2015-12-17

A container with pointers from the PCL (Point Cloud Library) passed in BaseObjects between PCL modules.

Definition in file mlPCLObjectPtrsContainer.h.

Macro Definition Documentation

◆ ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS

#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS (   FUNC,
  POINT_CLOUD_POINTERS1,
  POINT_CLOUD_POINTERS2 
)
Value:
{ \
ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES(_ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS, POINT_CLOUD_POINTERS1, FUNC, POINT_CLOUD_POINTERS2) \
}
#define _ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS(PC_PTR_CONTAINER1, ML_PCL_TYPE_ARG, FUNC, POINT_CLOUD_POINTERS2)
Internal helper macro for instantiating code on all point cloud pointers in MLPCLObjectPtrsContainer.

Implements the function typed over for all supported PCL point types in the MeVisLab binding.

For example

MLPCLObjectPtrsContainer inputPointCloudPtrs1 = getInputPCLObjectPtrsContainer(0);
MLPCLObjectPtrsContainer inputPointCloudPtrs2 = getInputPCLObjectPtrsContainer(1);
if (inputPointCloudPtrs1.hasValidPointCloudPointer() && inputPointCloudPtrs2.hasValidPointCloudPointer()){
ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS(_filterT, inputPointCloudPtrs1, inputPointCloudPtrs2);
}
#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS(FUNC, POINT_CLOUD_POINTERS1, POINT_CLOUD_POINTERS2)
Implements the function typed over for all supported PCL point types in the MeVisLab binding.

calls

template <typename POINT_CLOUD_TYPE1_PTR, typename POINT_CLOUD_TYPE2_PTR>
void PCLCopy::_filterT(POINT_CLOUD_TYPE1_PTR &inputPointCloud1, POINT_CLOUD_TYPE2_PTR &inputPointCloud2);

Definition at line 196 of file mlPCLObjectPtrsContainer.h.

◆ ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS_CONST_REF

#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS_CONST_REF (   FUNC,
  POINT_CLOUD_POINTERS1,
  POINT_CLOUD_POINTERS2 
)
Value:
{ \
ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES(_ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS_CONST_REF, POINT_CLOUD_POINTERS1, FUNC, POINT_CLOUD_POINTERS2) \
}
#define _ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS_CONST_REF(PC_PTR_CONTAINER1, ML_PCL_TYPE_ARG, FUNC, POINT_CLOUD_POINTERS2)
Same as _ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS with the difference that FUNC should rece...

Same as ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS with the difference that FUNC should receive pcl objects as const &.

For example

MLPCLObjectPtrsContainer inputPointCloudPtrs1 = getInputPCLObjectPtrsContainer(0);
MLPCLObjectPtrsContainer inputPointCloudPtrs2 = getInputPCLObjectPtrsContainer(1);
if (inputPointCloudPtrs1.hasValidPointCloudPointer() && inputPointCloudPtrs2.hasValidPointCloudPointer()){
ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS_CONST_REF(_filterT, inputPointCloudPtrs1, inputPointCloudPtrs2);
}
#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS_CONST_REF(FUNC, POINT_CLOUD_POINTERS1, POINT_CLOUD_POINTERS2)
Same as ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPE_COMBINATIONS with the difference that FUNC should recei...

calls

template <typename POINT_CLOUD_TYPE1, typename POINT_CLOUD_TYPE2>
void PCLCopy::_filterT(const POINT_CLOUD_TYPE1 &inputPointCloud1, const POINT_CLOUD_TYPE2 &inputPointCloud2);

Definition at line 218 of file mlPCLObjectPtrsContainer.h.

◆ ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES

#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES (   CODE,
  PTR_CONTAINER,
  FUNC,
  MULTI_PURPOSE_ARG 
)
Value:
CODE(PTR_CONTAINER, pointCloudXYZ , FUNC, MULTI_PURPOSE_ARG) \
CODE(PTR_CONTAINER, pointCloudXYZLNormal , FUNC, MULTI_PURPOSE_ARG) \
CODE(PTR_CONTAINER, pointCloudXYZRGBNormal, FUNC, MULTI_PURPOSE_ARG) \
CODE(PTR_CONTAINER, pointCloudXYZINormal , FUNC, MULTI_PURPOSE_ARG)

Macro instantiating code on all point cloud pointers in MLPCLObjectPtrsContainer.

Definition at line 119 of file mlPCLObjectPtrsContainer.h.

◆ ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0

#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0 (   FUNC,
  POINT_CLOUD_POINTERS 
)    { ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES(_CODE_FOR_0_ARGS, POINT_CLOUD_POINTERS, FUNC, ML_EMPTY_PARAM) }

Implements the function FUNC for all supported PCL point types in the MeVisLab binding and calls FUNC for pointers in POINT_CLOUD_POINTERS which are non nullptr.

For example

ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0(_filterT, getInputPCLObjectPtrsContainer(0));
#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0(FUNC, POINT_CLOUD_POINTERS)
Implements the function FUNC for all supported PCL point types in the MeVisLab binding and calls FUNC...

calls

template <typename POINT_CLOUD_TYPE_PTR> void PCLModuleName::_filterT(POINT_CLOUD_TYPE_PTR inputPointCloudPtr);

Definition at line 141 of file mlPCLObjectPtrsContainer.h.

◆ ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0_AND_CALL_FOR_SELECTED_TYPE

#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0_AND_CALL_FOR_SELECTED_TYPE (   FUNC,
  POINT_CLOUD_POINTERS,
  ENUM_SELECTOR 
)    { ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES(_CODE_FOR_0_ARGS_AND_CALL_FOR_SELECTED_TYPE, POINT_CLOUD_POINTERS, FUNC, ENUM_SELECTOR) }

Implements the function for all supported PCL point types in the MeVisLab binding and calls FUNC for the pointer defined by ENUM_SELECTOR, even if the pointer is nullptr.

For example

MLPCLObjectPtrsContainer outputPointCloudPtrs = getOutputPCLObjectPtrsContainer(0);
MLPCLPointTypeEnumerators selectedEnum = static_cast<MLPCLPointTypeEnumerators>(_outputPointCloudTypeFld->getEnumValue());
ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0_AND_CALL_FOR_SELECTED_TYPE(_updateT, outputPointCloudPtrs, selectedEnum);
#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0_AND_CALL_FOR_SELECTED_TYPE(FUNC, POINT_CLOUD_POINTERS, ENUM_SELECTOR)
Implements the function for all supported PCL point types in the MeVisLab binding and calls FUNC for ...
MLPCLPointTypeEnumerators
Enumerator for the precompiled point types of the Point Cloud Library.
Definition: mlPCLTypes.h:35

calls

template <typename POINT_CLOUD_PTR_TYPE> void PCLModuleName::_updateT(const POINT_CLOUD_PTR_TYPE inputPointCloudPtr);

Definition at line 175 of file mlPCLObjectPtrsContainer.h.

◆ ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0_CONST_REF

#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0_CONST_REF (   FUNC,
  POINT_CLOUD_POINTERS 
)    { ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES(_CODE_FOR_0_ARGS_CONST_REF, POINT_CLOUD_POINTERS, FUNC, ML_EMPTY_PARAM) }

Same as ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0 with the difference that FUNC should receive pcl objects as const &.

For example

ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0_CONST_REF(_filterT, getInputPCLObjectPtrsContainer(0));
#define ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0_CONST_REF(FUNC, POINT_CLOUD_POINTERS)
Same as ML_IMPLEMENT_FOR_SUPPORTED_POINT_TYPES_0 with the difference that FUNC should receive pcl obj...

calls

template <typename POINT_CLOUD_TYPE> void PCLModuleName::_filterT(const POINT_CLOUD_TYPE &inputPointCloud);

Definition at line 157 of file mlPCLObjectPtrsContainer.h.

◆ ML_PCL_TEST_INTERFACE

#define ML_PCL_TEST_INTERFACE (   BASE_OBJECT_NAME)
Value:
public:\
inline void selfTestPCLBaseClass(bool alsoCallDestroyClass=false) override \
{ \
PCLBaseObject::_checkRuntimeInterfaceResults(getClassTypeId(), \
getTypeId(), \
getTypeIdName(), \
alsoCallDestroyClass); \
}

Implements a dedicated interface for PCL related modules which is required in automatic tests.

Definition at line 326 of file mlPCLObjectPtrsContainer.h.

◆ ML_PCL_TEST_INTERFACE_NO_OVERRIDE

#define ML_PCL_TEST_INTERFACE_NO_OVERRIDE (   BASE_OBJECT_NAME)
Value:
public:\
virtual inline void selfTestPCLBaseClass(bool alsoCallDestroyClass=false) \
{ \
PCLBaseObject::_checkRuntimeInterfaceResults(getClassTypeId(), \
getTypeId(), \
getTypeIdName(), \
alsoCallDestroyClass); \
}

Implements a dedicated interface for PCL related modules which is required in automatic tests.

Definition at line 313 of file mlPCLObjectPtrsContainer.h.