IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
PythonPlanIndexedCollMacros.h
Go to the documentation of this file.
1 // PythonPlanIndexedCollMacros.h:
3 // ------------------------------
4 //
14 
15 #ifndef __PYIPSDKBASE_PYTHONPLANINDEXEDCOLLMACROS_H__
16 #define __PYIPSDKBASE_PYTHONPLANINDEXEDCOLLMACROS_H__
17 
20 #include <boost/noncopyable.hpp>
21 
24 
28 #if (defined(_MSC_VER) && _MSC_VER == 1900)
29 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER_WORKAROUND(planIndexedNodesName) \
30  static_cast<planIndexedNodesName const volatile* (*)(class planIndexedNodesName const volatile*)>(boost::get_pointer<planIndexedNodesName const volatile>);
31 #else
32 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER_WORKAROUND(planIndexedNodesName)
33 #endif
34 
35 
39 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_TOPYDICT_TEMPLATED(planIndexedNodesName) \
40  def("toPyDict", \
41  ipsdk::python::toPyDict<planIndexedNodesName>, \
42  "function allowing to convert an IPSDK plan indexed data item collection " \
43  "to a python dictionnary containing its data");
44 
50 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_TOPYDICT_SPECIALIZED(planIndexedNodesName) \
51  def("toPyDict", \
52  BOOST_PP_CAT(planIndexedNodesName, ToPyDict), \
53  "function allowing to convert an IPSDK plan indexed data item collection " \
54  "to a python dictionnary containing its data");
55 
60 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_EQUAL_TEMPLATED(planIndexedNodesName) \
61  def("equal", \
62  ipsdk::python::equal<planIndexedNodesName>, \
63  "function allowing to compare two plan indexed data item collections"); \
64  def("equal", \
65  ipsdk::python::equalWithoutTol<planIndexedNodesName>, \
66  "function allowing to compare two plan indexed data item collections");
67 
73 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_EQUAL_SPECIALIZED(planIndexedNodesName) \
74  def("equal", \
75  BOOST_PP_CAT(planIndexedNodesName, Equality), \
76  "function allowing to compare two plan indexed data item collections"); \
77  def("equal", \
78  BOOST_PP_CAT(planIndexedNodesName, EqualityWithoutTol), \
79  "function allowing to compare two plan indexed data item collections");
80 
83 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER_CONVERTIBLE(planIndexedNodesName) \
84  boost::python::implicitly_convertible<boost::shared_ptr<planIndexedNodesName>, \
85  boost::shared_ptr<const planIndexedNodesName> >(); \
86  boost::python::implicitly_convertible<boost::shared_ptr<planIndexedNodesName>, \
87  ipsdk::PlanIndexedCollPtr>(); \
88  boost::python::implicitly_convertible<boost::shared_ptr<planIndexedNodesName>, \
89  ipsdk::PlanIndexedCollConstPtr>(); \
90  boost::python::implicitly_convertible<boost::shared_ptr<const planIndexedNodesName>, \
91  ipsdk::PlanIndexedCollConstPtr>(); \
92 
93 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER_CLASS_EXPORT(planIndexedNodesName, tooltipStr) \
96  boost::python::class_<planIndexedNodesName, \
97  bases<ipsdk::BasePlanIndexedColl>, \
98  boost::shared_ptr<planIndexedNodesName>, \
99  boost::noncopyable>( \
100  BOOST_PP_STRINGIZE(planIndexedNodesName), \
101  tooltipStr, \
102  boost::python::no_init) \
103  .def("getElementsClassName", \
104  &planIndexedNodesName::getElementsClassName, \
105  return_value_policy<copy_const_reference>(), \
106  "retrieve class name associated to concrete elements into collection") \
107  .def("getValue", \
108  static_cast<const planIndexedNodesName::ValueType& (planIndexedNodesName::*) \
109  (const ipsdk::PlanIndex&) const>(&planIndexedNodesName::getValue), \
110  return_internal_reference<>(), \
111  "retrieve an element associated to a given plan index") \
112  .def("getValue", \
113  static_cast<const planIndexedNodesName::ValueType& (planIndexedNodesName::*) \
114  (const ipsdk::ipUInt64, const ipsdk::ipUInt64, const ipsdk::ipUInt64) const> \
115  (&planIndexedNodesName::getValue), \
116  return_internal_reference<>(), \
117  "retrieve an element associated to a given plan index") \
118  .def("getValue", \
119  static_cast<const planIndexedNodesName::ValueType& (planIndexedNodesName::*) \
120  (const ipsdk::ipUInt64) const>(&planIndexedNodesName::getValue), \
121  return_internal_reference<>(), \
122  "retrieve an element associated to a given plan offset") \
123  .def("getValue", \
124  static_cast<planIndexedNodesName::ValueType& (planIndexedNodesName::*) \
125  (const ipsdk::PlanIndex&)>(&planIndexedNodesName::getValue), \
126  return_internal_reference<>(), \
127  "retrieve an element associated to a given plan index") \
128  .def("getValue", \
129  static_cast<planIndexedNodesName::ValueType& (planIndexedNodesName::*) \
130  (const ipsdk::ipUInt64, const ipsdk::ipUInt64, const ipsdk::ipUInt64)> \
131  (&planIndexedNodesName::getValue), \
132  return_internal_reference<>(), \
133  "retrieve an element associated to a given plan index") \
134  .def("getValue", \
135  static_cast<planIndexedNodesName::ValueType& (planIndexedNodesName::*) \
136  (const ipsdk::ipUInt64)> \
137  (&planIndexedNodesName::getValue), \
138  return_internal_reference<>(), \
139  "retrieve an element associated to a given plan offset") \
140  .def("insert", \
141  static_cast<void (planIndexedNodesName::*) \
142  (const ipsdk::ipUInt64, const ipsdk::ipUInt64, const ipsdk::ipUInt64, \
143  const planIndexedNodesName::StorageType&)> \
144  (&planIndexedNodesName::insert), \
145  "insert a new element for a given plan index") \
146  .def("insert", \
147  static_cast<void (planIndexedNodesName::*) \
148  (const ipsdk::PlanIndex&, \
149  const planIndexedNodesName::StorageType&)> \
150  (&planIndexedNodesName::insert), \
151  "insert a new element for a given plan index") \
152  .def("assign", &planIndexedNodesName::assign, \
153  "assign a given value to all data of collection")
154 
155 
159 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER(planIndexedNodesName, tooltipStr) \
160  IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER_CONVERTIBLE(planIndexedNodesName) \
161  IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER_WORKAROUND(planIndexedNodesName); \
162  IPSDK_PYTHON_PLAN_INDEXED_NODES_TOPYDICT_TEMPLATED(planIndexedNodesName) \
163  IPSDK_PYTHON_PLAN_INDEXED_NODES_EQUAL_TEMPLATED(planIndexedNodesName) \
164  IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER_CLASS_EXPORT(planIndexedNodesName, tooltipStr)
165 
169 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER_SPECIALIZED(planIndexedNodesName, tooltipStr) \
170  IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER_CONVERTIBLE(planIndexedNodesName) \
171  IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER_WORKAROUND(planIndexedNodesName); \
172  IPSDK_PYTHON_PLAN_INDEXED_NODES_TOPYDICT_SPECIALIZED(planIndexedNodesName) \
173  IPSDK_PYTHON_PLAN_INDEXED_NODES_EQUAL_SPECIALIZED(planIndexedNodesName) \
174  IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER_CLASS_EXPORT(planIndexedNodesName, tooltipStr)
175 
178 
179 #endif // __PYIPSDKBASE_PYTHONPLANINDEXEDCOLLMACROS_H__
Macros allowing to handle ipsdk to python wrapping.
IPSDK plan indexed collection python wrapping.