5#ifndef __pinocchio_parsers_urdf_types_hpp__ 
    6#define __pinocchio_parsers_urdf_types_hpp__ 
    8#include <urdf_model/model.h> 
   12#ifdef PINOCCHIO_URDFDOM_USE_STD_SHARED_PTR 
   14  #define PINOCCHIO_URDF_SHARED_PTR(type) std::shared_ptr<type> 
   15  #define PINOCCHIO_URDF_WEAK_PTR(type) std::weak_ptr<type> 
   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> 
   22#ifndef PINOCCHIO_URDFDOM_TYPEDEF_SHARED_PTR 
   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 
   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);
 
   44  template<
class T, 
class U>
 
   45  PINOCCHIO_URDF_SHARED_PTR(T)
 
   46  const_pointer_cast(PINOCCHIO_URDF_SHARED_PTR(U) 
const & r)
 
   48  #ifdef PINOCCHIO_URDFDOM_USE_STD_SHARED_PTR 
   49    return std::const_pointer_cast<T>(r);
 
   51    return boost::const_pointer_cast<T>(r);
 
   55  template<
class T, 
class U>
 
   56  PINOCCHIO_URDF_SHARED_PTR(T)
 
   57  dynamic_pointer_cast(PINOCCHIO_URDF_SHARED_PTR(U) 
const & r)
 
   59  #ifdef PINOCCHIO_URDFDOM_USE_STD_SHARED_PTR 
   60    return std::dynamic_pointer_cast<T>(r);
 
   62    return boost::dynamic_pointer_cast<T>(r);
 
   66  template<
class T, 
class U>
 
   67  PINOCCHIO_URDF_SHARED_PTR(T)
 
   68  static_pointer_cast(PINOCCHIO_URDF_SHARED_PTR(U) 
const & r)
 
   70  #ifdef PINOCCHIO_URDFDOM_USE_STD_SHARED_PTR 
   71    return std::static_pointer_cast<T>(r);
 
   73    return boost::static_pointer_cast<T>(r);
 
   78  #undef PINOCCHIO_URDF_TYPEDEF_CLASS_POINTER 
   82  #include <urdf_world/types.h>