5#ifndef __pinocchio_python_collision_tree_broadphase_manager_hpp__
6#define __pinocchio_python_collision_tree_broadphase_manager_hpp__
8#include "pinocchio/collision/tree-broadphase-manager.hpp"
9#include "pinocchio/bindings/python/collision/broadphase-manager-base.hpp"
11#include <eigenpy/eigen-to-python.hpp>
12#include <boost/algorithm/string/replace.hpp>
18 namespace bp = boost::python;
20 template<
typename Derived>
21 struct TreeBroadPhaseManagerPythonVisitor
22 :
public bp::def_visitor<TreeBroadPhaseManagerPythonVisitor<Derived>>
25 typedef TreeBroadPhaseManagerTpl<Derived> Self;
26 typedef typename Self::BroadPhaseManagerVector BroadPhaseManagerVector;
29 template<
class PyClass>
30 void visit(PyClass & cl)
const
33 .def(bp::init<const Model *, const GeometryModel *, GeometryData *>(
34 bp::args(
"self",
"model",
"geometry_model",
"geometry_data"),
"Default constructor")
35 [bp::with_custodian_and_ward<1, 2>(), bp::with_custodian_and_ward<1, 3>(),
36 bp::with_custodian_and_ward<1, 4>()])
37 .def(bp::init<const Self &>(
38 bp::args(
"self",
"other"),
"Copy constructor")[bp::with_custodian_and_ward<1, 2>()])
41 "getBroadPhaseManagers",
42 (BroadPhaseManagerVector & (Self::*)()) & Self::getBroadPhaseManagers, bp::arg(
"self"),
43 "Returns the internal broad phase managers", bp::return_internal_reference<>())
45 .def(BroadPhaseManagerBasePythonVisitor<Self>());
51 std::string derived_name = boost::typeindex::type_id<Derived>().pretty_name();
52 boost::algorithm::replace_all(derived_name,
"coal::",
"");
53 const std::string class_name =
"TreeBroadPhaseManager_" + derived_name;
55 const std::string class_doc =
56 "Tree-based broad phase manager associated to coal::" + derived_name;
57 bp::class_<Self> registered_class(class_name.c_str(), class_doc.c_str(), bp::no_init);
58 registered_class.def(TreeBroadPhaseManagerPythonVisitor());
60 typedef BroadPhaseManagerBase<Self> Base;
61 bp::objects::register_dynamic_id<Base>();
62 bp::objects::register_conversion<Self, Base>(
false);
Main pinocchio namespace.