IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
GeometryEntity3dHdrMacros.h
Go to the documentation of this file.
1 // GeometryEntity3dHdrMacros.h:
3 // ----------------------------
4 //
14 
15 #ifndef __IPSDKGEOMETRY_GEOMETRYENTITY3DHDRMACROS_H__
16 #define __IPSDKGEOMETRY_GEOMETRYENTITY3DHDRMACROS_H__
17 
20 #include <boost/preprocessor/seq/for_each.hpp>
21 
24 
27 #define IPSDK_ENUMERATE_GEOMETRY_TRANSFORM_3D_MACRO(s, _, TransformType) \
28  class TransformType;
29 
32 #define IPSDK_ENUMERATE_GEOMETRY_TRANSFORM_3D_VISITORS() \
33  BOOST_PP_SEQ_FOR_EACH(IPSDK_ENUMERATE_GEOMETRY_TRANSFORM_3D_MACRO, _, \
34  IPSDK_GEOMETRY_TRANSFORM_3D);
35 
38 
41 #define IPSDK_ENUMERATE_GEOMETRY_MEASURE_3D_MACRO(s, _, MeasureInfo) \
42  class BOOST_PP_SEQ_ELEM(0, MeasureInfo);
43 
46 #define IPSDK_ENUMERATE_GEOMETRY_MEASURE_3D_VISITORS() \
47  BOOST_PP_SEQ_FOR_EACH(IPSDK_ENUMERATE_GEOMETRY_MEASURE_3D_MACRO, _, \
48  IPSDK_GEOMETRY_MEASURE_3D);
49 
52 
56 #define IPSDK_DECLARE_ABSTRACT_GEOMETRY_TRANSFORM_3D_VISITOR_MACRO(s, _, TransformType) \
57  friend class TransformType; \
58  virtual bool visitInSitu(const TransformType& transform) = 0; \
59  virtual ipsdk::geom::GeometryEntity3dPtr visitNonInSitu(const TransformType& transform) const = 0;
60 
64 #define IPSDK_DECLARE_ABSTRACT_GEOMETRY_TRANSFORM_3D_VISITORS() \
65 protected: \
66  BOOST_PP_SEQ_FOR_EACH(IPSDK_DECLARE_ABSTRACT_GEOMETRY_TRANSFORM_3D_VISITOR_MACRO, _, \
67  IPSDK_GEOMETRY_TRANSFORM_3D);
68 
71 
75 #define IPSDK_DECLARE_ABSTRACT_GEOMETRY_MEASURE_3D_VISITOR_MACRO(s, _, MeasureInfo) \
76  friend BOOST_PP_SEQ_ELEM(0, MeasureInfo); \
77  virtual bool visit(const BOOST_PP_SEQ_ELEM(0, MeasureInfo)& measure, \
78  BOOST_PP_SEQ_ELEM(1, MeasureInfo)& result) const = 0;
79 
83 #define IPSDK_DECLARE_ABSTRACT_GEOMETRY_MEASURE_3D_VISITORS() \
84 protected: \
85  BOOST_PP_SEQ_FOR_EACH(IPSDK_DECLARE_ABSTRACT_GEOMETRY_MEASURE_3D_VISITOR_MACRO, _, \
86  IPSDK_GEOMETRY_MEASURE_3D);
87 
90 
94 #define IPSDK_DECLARE_GEOMETRY_TRANSFORM_3D_VISITOR_MACRO(s, _, TransformType) \
95  friend class TransformType; \
96  bool visitInSitu(const TransformType& transform); \
97  ipsdk::geom::GeometryEntity3dPtr visitNonInSitu(const TransformType& transform) const;
98 
102 #define IPSDK_DECLARE_GEOMETRY_TRANSFORM_3D_VISITORS() \
103 protected: \
104  BOOST_PP_SEQ_FOR_EACH(IPSDK_DECLARE_GEOMETRY_TRANSFORM_3D_VISITOR_MACRO, _, \
105  IPSDK_GEOMETRY_TRANSFORM_3D);
106 
109 
113 #define IPSDK_DECLARE_GEOMETRY_MEASURE_3D_VISITOR_MACRO(s, _, MeasureInfo) \
114  friend BOOST_PP_SEQ_ELEM(0, MeasureInfo); \
115  bool visit(const BOOST_PP_SEQ_ELEM(0, MeasureInfo)& measure, \
116  BOOST_PP_SEQ_ELEM(1, MeasureInfo)& result) const;
117 
121 #define IPSDK_DECLARE_GEOMETRY_MEASURE_3D_VISITORS() \
122 protected: \
123  BOOST_PP_SEQ_FOR_EACH(IPSDK_DECLARE_GEOMETRY_MEASURE_3D_VISITOR_MACRO, _, \
124  IPSDK_GEOMETRY_MEASURE_3D);
125 
128 
131 #define IPSDK_DECLARE_GEOMETRY_ENTITY_3D(libraryName, className) \
132  IPSDK_DECLARE_SERIAL_WITH_COPY(libraryName, className) \
133  IPSDK_DECLARE_GEOMETRY_TRANSFORM_3D_VISITORS() \
134  IPSDK_DECLARE_GEOMETRY_MEASURE_3D_VISITORS()
135 
138 #define IPSDK_DECLARE_ABSTRACT_GEOMETRY_ENTITY_3D(libraryName, className) \
139  IPSDK_DECLARE_ABSTRACT_SERIAL_WITH_COPY(libraryName, className) \
140  IPSDK_DECLARE_GEOMETRY_TRANSFORM_3D_VISITORS() \
141  IPSDK_DECLARE_GEOMETRY_MEASURE_3D_VISITORS()
142 
145 
146 #endif // __IPSDKGEOMETRY_GEOMETRYENTITY3DHDRMACROS_H__
Predefined macros for geometry transform 3d management.
Predefined macros for geometry measurement 3d management.