Skip to content

Commit 2d3cbf3

Browse files
committed
[python] visualizer-visitor : use lambdas to expose getters for models, data
+ fixes downstream issues
1 parent 5116e9a commit 2d3cbf3

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

include/pinocchio/bindings/python/visualizers/visualizer-visitor.hpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)