// Generated by gencpp from file geometry_msgs/Twist.msg
// DO NOT EDIT!

#ifndef GEOMETRY_MSGS_MESSAGE_TWIST_H
#define GEOMETRY_MSGS_MESSAGE_TWIST_H

#include <string>
#include <vector>
#include <memory>
#include <boost/shared_ptr.hpp>

#include <geometry_msgs/Vector3.h>
#include <geometry_msgs/Vector3.h>

namespace geometry_msgs
{
  template <class ContainerAllocator>
  struct Twist_
  {
    typedef Twist_<ContainerAllocator> Type;

    Twist_()
        : linear(), angular()
    {
    }
    Twist_(const ContainerAllocator &_alloc)
        : linear(_alloc), angular(_alloc)
    {
      (void)_alloc;
    }

    typedef ::geometry_msgs::Vector3_<ContainerAllocator> _linear_type;
    _linear_type linear;

    typedef ::geometry_msgs::Vector3_<ContainerAllocator> _angular_type;
    _angular_type angular;

    typedef boost::shared_ptr<::geometry_msgs::Twist_<ContainerAllocator>> Ptr;
    typedef boost::shared_ptr<::geometry_msgs::Twist_<ContainerAllocator> const> ConstPtr;

  }; // struct Twist_

  typedef ::geometry_msgs::Twist_<std::allocator<void>> Twist;

  typedef boost::shared_ptr<::geometry_msgs::Twist> TwistPtr;
  typedef boost::shared_ptr<::geometry_msgs::Twist const> TwistConstPtr;

  // constants requiring out of line definition

  template <typename ContainerAllocator1, typename ContainerAllocator2>
  bool operator==(const ::geometry_msgs::Twist_<ContainerAllocator1> &lhs, const ::geometry_msgs::Twist_<ContainerAllocator2> &rhs)
  {
    return lhs.linear == rhs.linear &&
           lhs.angular == rhs.angular;
  }

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

} // namespace geometry_msgs

#endif // GEOMETRY_MSGS_MESSAGE_TWIST_H
