15 #ifndef __IPSDKGEOMETRY_GEOMETRYENTITY3DSRCMACROS_H__ 16 #define __IPSDKGEOMETRY_GEOMETRYENTITY3DSRCMACROS_H__ 19 #include <IPSDKGeometry/Transform/3d/SimilarityTransform3d.h> 20 #include <IPSDKGeometry/Transform/3d/HomographyTransform3d.h> 21 #include <IPSDKGeometry/Transform/3d/AnisotropicScaleTransform3d.h> 22 #include <IPSDKGeometry/Transform/3d/RigidTransform3d.h> 23 #include <IPSDKGeometry/Transform/3d/RotationTransform3d.h> 24 #include <IPSDKGeometry/Transform/3d/ScaleTransform3d.h> 25 #include <IPSDKGeometry/Transform/3d/TranslationTransform3d.h> 26 #include <IPSDKGeometry/Transform/3d/CentroidTransform3d.h> 27 #include <IPSDKGeometry/Transform/3d/ConvexHullTransform3d.h> 28 #include <IPSDKGeometry/Transform/3d/EnvelopeTransform3d.h> 29 #include <IPSDKGeometry/Transform/3d/MinEnclosingSphereTransform3d.h> 30 #include <IPSDKGeometry/Measure/3d/AreaMsr3d.h> 31 #include <IPSDKGeometry/Measure/3d/VolumeMsr3d.h> 39 #define IPSDK_IMPLEMENT_GEOMETRY_TRANSFORM_3D_VISITOR_MACRO(s, className, TransformType) \ 40 bool className::visitInSitu(const TransformType& transform) { \ 41 return transform.processInSitu(*this); \ 43 ipsdk::geom::GeometryEntity3dPtr \ 44 className::visitNonInSitu(const TransformType& transform) const { \ 45 return transform.process(*this); \ 52 #define IPSDK_IMPLEMENT_GEOMETRY_TRANSFORM_3D_VISITORS(className) \ 53 BOOST_PP_SEQ_FOR_EACH(IPSDK_IMPLEMENT_GEOMETRY_TRANSFORM_3D_VISITOR_MACRO, \ 55 IPSDK_GEOMETRY_TRANSFORM_3D); 60 #define IPSDK_IMPLEMENT_GEOMETRY_TEMPLATE_TRANSFORM_3D_VISITOR_MACRO(s, className, TransformType) \ 61 template <typename T> \ 62 bool className<T>::visitInSitu(const TransformType& transform) { \ 63 return transform.processInSitu(*this); \ 65 template <typename T> \ 66 ipsdk::geom::GeometryEntity3dPtr \ 67 className<T>::visitNonInSitu(const TransformType& transform) const { \ 68 return transform.process(*this); \ 75 #define IPSDK_IMPLEMENT_GEOMETRY_TEMPLATE_TRANSFORM_3D_VISITORS(className) \ 76 BOOST_PP_SEQ_FOR_EACH(IPSDK_IMPLEMENT_GEOMETRY_TEMPLATE_TRANSFORM_3D_VISITOR_MACRO, \ 78 IPSDK_GEOMETRY_TRANSFORM_3D); 86 #define IPSDK_IMPLEMENT_GEOMETRY_MEASURE_3D_VISITOR_MACRO(s, className, MeasureInfo) \ 87 bool className::visit(const BOOST_PP_SEQ_ELEM(0, MeasureInfo)& measure, \ 88 BOOST_PP_SEQ_ELEM(1, MeasureInfo)& result) const { \ 89 return measure.process(*this, result); \ 96 #define IPSDK_IMPLEMENT_GEOMETRY_MEASURE_3D_VISITORS(className) \ 97 BOOST_PP_SEQ_FOR_EACH(IPSDK_IMPLEMENT_GEOMETRY_MEASURE_3D_VISITOR_MACRO, \ 99 IPSDK_GEOMETRY_MEASURE_3D); 104 #define IPSDK_IMPLEMENT_GEOMETRY_TEMPLATE_MEASURE_3D_VISITOR_MACRO(s, className, MeasureInfo) \ 105 template <typename T> \ 106 bool className<T>::visit(const BOOST_PP_SEQ_ELEM(0, MeasureInfo)& measure, \ 107 BOOST_PP_SEQ_ELEM(1, MeasureInfo)& result) const { \ 108 return measure.process(*this, result); \ 115 #define IPSDK_IMPLEMENT_GEOMETRY_TEMPLATE_MEASURE_3D_VISITORS(className) \ 116 BOOST_PP_SEQ_FOR_EACH(IPSDK_IMPLEMENT_GEOMETRY_TEMPLATE_MEASURE_3D_VISITOR_MACRO, \ 118 IPSDK_GEOMETRY_MEASURE_3D); 125 #define IPSDK_IMPLEMENT_GEOMETRY_ENTITY_3D(libraryName, namespaceSeq, className, version) \ 126 IPSDK_IMPLEMENT_SERIAL_WITH_COPY(libraryName, namespaceSeq, className, version) \ 127 IPSDK_IMPLEMENT_GEOMETRY_TRANSFORM_3D_VISITORS(className) \ 128 IPSDK_IMPLEMENT_GEOMETRY_MEASURE_3D_VISITORS(className) 132 #define IPSDK_IMPLEMENT_GEOMETRY_TEMPLATE_ENTITY_3D(libraryName, className, seqT, version) \ 133 IPSDK_IMPLEMENT_TEMPLATE_SERIAL_WITH_COPY(libraryName, className, seqT, version) \ 134 IPSDK_IMPLEMENT_GEOMETRY_TEMPLATE_TRANSFORM_3D_VISITORS(className) \ 135 IPSDK_IMPLEMENT_GEOMETRY_TEMPLATE_MEASURE_3D_VISITORS(className) 137 #define IPSDK_IMPLEMENT_ABSTRACT_GEOMETRY_TEMPLATE_ENTITY_3D(libraryName, className, seqT, version) \ 138 IPSDK_IMPLEMENT_ABSTRACT_TEMPLATE_SERIAL_WITH_COPY(libraryName, className, seqT, version) \ 139 IPSDK_IMPLEMENT_GEOMETRY_TEMPLATE_TRANSFORM_3D_VISITORS(className) \ 140 IPSDK_IMPLEMENT_GEOMETRY_TEMPLATE_MEASURE_3D_VISITORS(className) 145 #endif // __IPSDKGEOMETRY_GEOMETRYENTITY3DSRCMACROS_H__ Source part of macros set for template class serialization.