18#ifndef GZ_PHYSICS_REVOLUTEJOINT_HH_ 
   19#define GZ_PHYSICS_REVOLUTEJOINT_HH_ 
   32    class GZ_PHYSICS_VISIBLE GetRevoluteJointProperties
 
   33        : 
public virtual FeatureWithRequirements<RevoluteJointCast>
 
   36      public: 
template <
typename PolicyT, 
typename FeaturesT>
 
   37      class RevoluteJoint : 
public virtual Entity<PolicyT, FeaturesT>
 
   40            typename FromPolicy<PolicyT>::template Use<AngularVector>;
 
   51        public: Axis GetAxis() 
const;
 
   56      public: 
template <
typename PolicyT>
 
   57      class Implementation : 
public virtual Feature::Implementation<PolicyT>
 
   60            typename FromPolicy<PolicyT>::template Use<AngularVector>;
 
   65        public: 
virtual Axis GetRevoluteJointAxis(
 
   66            const Identity &_id) 
const = 0;
 
   77      public: 
template <
typename PolicyT, 
typename FeaturesT>
 
   96      public: 
template <
typename PolicyT>
 
  104            const Identity &_id, 
const Axis &_axis) = 0;
 
 
 
  114      public: 
template <
typename PolicyT, 
typename FeaturesT>
 
  136            const BaseLinkPtr<PolicyT> &_parent,
 
  138            const Axis &_axis = Axis::UnitX());
 
 
  141      public: 
template <
typename PolicyT>
 
  158            const Identity &_childID,
 
  159            const BaseLinkPtr<PolicyT> &_parent,
 
  161            const Axis &_axis) = 0;
 
 
 
  167#include <gz/physics/detail/RevoluteJoint.hh>