pinocchio  3.7.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
 
Loading...
Searching...
No Matches
types.hpp
1//
2// Copyright (c) 2015-2023 CNRS INRIA
3//
4
5#ifndef __pinocchio_parsers_urdf_types_hpp__
6#define __pinocchio_parsers_urdf_types_hpp__
7
8#include <urdf_model/model.h>
9
10#include <string>
11#include <exception>
12#ifdef PINOCCHIO_URDFDOM_USE_STD_SHARED_PTR
13 #include <memory>
14 #define PINOCCHIO_URDF_SHARED_PTR(type) std::shared_ptr<type>
15 #define PINOCCHIO_URDF_WEAK_PTR(type) std::weak_ptr<type>
16#else
17 #include <boost/shared_ptr.hpp>
18 #define PINOCCHIO_URDF_SHARED_PTR(type) std::shared_ptr<type>
19 #define PINOCCHIO_URDF_WEAK_PTR(type) boost::weak_ptr<type>
20#endif
21
22#ifndef PINOCCHIO_URDFDOM_TYPEDEF_SHARED_PTR
23
24 #define PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(Class) \
25 typedef PINOCCHIO_URDF_SHARED_PTR(Class) Class##SharedPtr; \
26 typedef PINOCCHIO_URDF_SHARED_PTR(const Class) Class##ConstSharedPtr; \
27 typedef PINOCCHIO_URDF_WEAK_PTR(Class) Class##WeakPtr
28
29namespace urdf
30{
31 PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(Box);
32 PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(Collision);
33 PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(Cylinder);
34 PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(Geometry);
35 PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(Inertial);
36 PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(Joint);
37 PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(Link);
38 PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(Material);
39 PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(Mesh);
40 PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(ModelInterface);
41 PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(Sphere);
42 PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER(Visual);
43
44 template<class T, class U>
45 PINOCCHIO_URDF_SHARED_PTR(T)
46 const_pointer_cast(PINOCCHIO_URDF_SHARED_PTR(U) const & r)
47 {
48 #ifdef PINOCCHIO_URDFDOM_USE_STD_SHARED_PTR
49 return std::const_pointer_cast<T>(r);
50 #else
51 return boost::const_pointer_cast<T>(r);
52 #endif
53 }
54
55 template<class T, class U>
56 PINOCCHIO_URDF_SHARED_PTR(T)
57 dynamic_pointer_cast(PINOCCHIO_URDF_SHARED_PTR(U) const & r)
58 {
59 #ifdef PINOCCHIO_URDFDOM_USE_STD_SHARED_PTR
60 return std::dynamic_pointer_cast<T>(r);
61 #else
62 return boost::dynamic_pointer_cast<T>(r);
63 #endif
64 }
65
66 template<class T, class U>
67 PINOCCHIO_URDF_SHARED_PTR(T)
68 static_pointer_cast(PINOCCHIO_URDF_SHARED_PTR(U) const & r)
69 {
70 #ifdef PINOCCHIO_URDFDOM_USE_STD_SHARED_PTR
71 return std::static_pointer_cast<T>(r);
72 #else
73 return boost::static_pointer_cast<T>(r);
74 #endif
75 }
76} // namespace urdf
77
78 #undef PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER
79
80#else // PINOCCHIO_URDFDOM_TYPEDEF_SHARED_PTR
81
82 #include <urdf_world/types.h>
83
84#endif // PINOCCHIO_URDFDOM_TYPEDEF_SHARED_PTR
85
86#endif // ifndef __pinocchio_parsers_urdf_types_hpp__