@@ -43,6 +43,13 @@ namespace pinocchio
4343 using ::pinocchio::visualizers::ConstVectorRef;
4444 eigenpy::OptionalConverter<ConstVectorRef, boost::optional>::registration ();
4545
46+ // convenience macro to use a lambda -- passing &Visualizer::<getter-fun> doesn't work
47+ #define DEF_PROP_PROXY (name ) \
48+ add_property ( \
49+ #name, \
50+ bp::make_function ( \
51+ +[](Visualizer & v) -> auto & { return v.name (); }, bp::return_internal_reference<>()))
52+
4653 cl.def (" initViewer" , &Visualizer::initViewer)
4754 .def (" loadViewerModel" , &Visualizer::loadViewerModel)
4855 .def (" rebuildData" , &Visualizer::rebuildData)
@@ -56,21 +63,14 @@ namespace pinocchio
5663 .def (" setCameraPose" , setCameraPose_proxy2, (bp::arg (" self" ), " pose" ))
5764 .def (" setCameraZoom" , &Visualizer::setCameraZoom, (bp::arg (" self" ), " value" ))
5865 .def (" clean" , &Visualizer::clean, bp::arg (" self" ))
59- .add_property (
60- " model" , bp::make_function (&Visualizer::model, bp::return_internal_reference<>()))
61- .add_property (
62- " visualModel" ,
63- bp::make_function (&Visualizer::visualModel, bp::return_internal_reference<>()))
64- .add_property (
65- " collisionModel" ,
66- bp::make_function (&Visualizer::collisionModel, bp::return_internal_reference<>()))
6766 .def (" hasExternalData" , &Visualizer::hasExternalData)
68- .add_property (
69- " data" , +[](Visualizer & v) { return std::ref (v.data ()); })
70- .add_property (
71- " visualData" , +[](Visualizer & v) { return std::ref (v.visualData ()); })
72- .add_property (
73- " collisionData" , +[](Visualizer & v) { return std::ref (v.collisionData ()); });
67+ .DEF_PROP_PROXY (model)
68+ .DEF_PROP_PROXY (visualModel)
69+ .DEF_PROP_PROXY (collisionModel)
70+ .DEF_PROP_PROXY (data)
71+ .DEF_PROP_PROXY (visualData)
72+ .DEF_PROP_PROXY (collisionData);
73+ #undef DEF_PROP_PROXY
7474 }
7575 };
7676
0 commit comments