18#ifndef GZ_PHYSICS_PRISMATICJOINT_HH_ 
   19#define GZ_PHYSICS_PRISMATICJOINT_HH_ 
   32    class GZ_PHYSICS_VISIBLE GetPrismaticJointProperties
 
   33        : 
public virtual FeatureWithRequirements<PrismaticJointCast>
 
   36      public: 
template <
typename PolicyT, 
typename FeaturesT>
 
   37      class PrismaticJoint : 
public virtual Entity<PolicyT, FeaturesT>
 
   40            typename FromPolicy<PolicyT>::template Use<LinearVector>;
 
   49        public: Axis GetAxis() 
const;
 
   54      public: 
template <
typename PolicyT>
 
   55      class Implementation : 
public virtual Feature::Implementation<PolicyT>
 
   58            typename FromPolicy<PolicyT>::template Use<LinearVector>;
 
   60        public: 
virtual Axis GetPrismaticJointAxis(
 
   61            const Identity &_id) 
const = 0;
 
   72      public: 
template <
typename PolicyT, 
typename FeaturesT>
 
   88      public: 
template <
typename PolicyT>
 
   96            const Identity &_id, 
const Axis &_axis) = 0;
 
 
 
  106      public: 
template <
typename PolicyT, 
typename FeaturesT>
 
  127            const BaseLinkPtr<PolicyT> &_parent,
 
  129            const Axis &_axis = Axis::UnitX());
 
 
  132      public: 
template <
typename PolicyT>
 
  149            const Identity &_childID,
 
  150            const BaseLinkPtr<PolicyT> &_parent,
 
  152            const Axis &_axis) = 0;
 
 
 
  158#include <gz/physics/detail/PrismaticJoint.hh>