// Generated by gencpp from file robot_nav_2d_msgs/Twist2D.msg
// DO NOT EDIT!


#ifndef ROBOT_NAV_2D_MSGS_MESSAGE_TWIST2D_H
#define ROBOT_NAV_2D_MSGS_MESSAGE_TWIST2D_H


#include <string>
#include <vector>
#include <memory>


namespace robot_nav_2d_msgs
{
template <class ContainerAllocator>
struct Twist2D_
{
  typedef Twist2D_<ContainerAllocator> Type;

  Twist2D_()
    : x(0.0)
    , y(0.0)
    , theta(0.0)  {
    }
  Twist2D_(const ContainerAllocator& _alloc)
    : x(0.0)
    , y(0.0)
    , theta(0.0)  {
  (void)_alloc;
    }



   typedef double _x_type;
  _x_type x;

   typedef double _y_type;
  _y_type y;

   typedef double _theta_type;
  _theta_type theta;




  typedef std::shared_ptr< ::robot_nav_2d_msgs::Twist2D_<ContainerAllocator> > Ptr;
  typedef std::shared_ptr< ::robot_nav_2d_msgs::Twist2D_<ContainerAllocator> const> ConstPtr;

}; // struct Twist2D_

typedef ::robot_nav_2d_msgs::Twist2D_<std::allocator<void> > Twist2D;

typedef std::shared_ptr< ::robot_nav_2d_msgs::Twist2D > Twist2DPtr;
typedef std::shared_ptr< ::robot_nav_2d_msgs::Twist2D const> Twist2DConstPtr;

// constants requiring out of line definition



template<typename ContainerAllocator1, typename ContainerAllocator2>
bool operator==(const ::robot_nav_2d_msgs::Twist2D_<ContainerAllocator1> & lhs, const ::robot_nav_2d_msgs::Twist2D_<ContainerAllocator2> & rhs)
{
  return lhs.x == rhs.x &&
    lhs.y == rhs.y &&
    lhs.theta == rhs.theta;
}

template<typename ContainerAllocator1, typename ContainerAllocator2>
bool operator!=(const ::robot_nav_2d_msgs::Twist2D_<ContainerAllocator1> & lhs, const ::robot_nav_2d_msgs::Twist2D_<ContainerAllocator2> & rhs)
{
  return !(lhs == rhs);
}


} // namespace robot_nav_2d_msgs

#endif // ROBOT_NAV_2D_MSGS_MESSAGE_TWIST2D_H
