15 #ifndef __PYIPSDKBASE_PYTHONPLANINDEXEDCOLLMACROS_H__ 16 #define __PYIPSDKBASE_PYTHONPLANINDEXEDCOLLMACROS_H__ 20 #include <boost/noncopyable.hpp> 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>); 32 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_WRAPPER_WORKAROUND(planIndexedNodesName) 39 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_TOPYDICT_TEMPLATED(planIndexedNodesName) \ 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"); 50 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_TOPYDICT_SPECIALIZED(planIndexedNodesName) \ 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"); 60 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_EQUAL_TEMPLATED(planIndexedNodesName) \ 62 ipsdk::python::equal<planIndexedNodesName>, \ 63 "function allowing to compare two plan indexed data item collections"); \ 65 ipsdk::python::equalWithoutTol<planIndexedNodesName>, \ 66 "function allowing to compare two plan indexed data item collections"); 73 #define IPSDK_PYTHON_PLAN_INDEXED_NODES_EQUAL_SPECIALIZED(planIndexedNodesName) \ 75 BOOST_PP_CAT(planIndexedNodesName, Equality), \ 76 "function allowing to compare two plan indexed data item collections"); \ 78 BOOST_PP_CAT(planIndexedNodesName, EqualityWithoutTol), \ 79 "function allowing to compare two plan indexed data item collections"); 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>(); \ 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), \ 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") \ 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") \ 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") \ 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") \ 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") \ 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") \ 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") \ 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") \ 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") 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) 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) 179 #endif // __PYIPSDKBASE_PYTHONPLANINDEXEDCOLLMACROS_H__ Macros allowing to handle ipsdk to python wrapping.
IPSDK plan indexed collection python wrapping.