// Generated by gencpp from file robot_geometry_msgs/TwistWithCovariance.msg
// DO NOT EDIT!

#ifndef ROBOT_GEOMETRY_MSGS_MESSAGE_TWISTWITHCOVARIANCE_H
#define ROBOT_GEOMETRY_MSGS_MESSAGE_TWISTWITHCOVARIANCE_H

#include <string>
#include <vector>
#include <memory>
#include <boost/shared_ptr.hpp>
#include <boost/array.hpp>
#include <robot_geometry_msgs/Twist.h>

namespace robot_geometry_msgs
{
  template <class ContainerAllocator>
  struct TwistWithCovariance_
  {
    typedef TwistWithCovariance_<ContainerAllocator> Type;

    TwistWithCovariance_()
        : twist(), covariance()
    {
      covariance.assign(0.0);
    }
    TwistWithCovariance_(const ContainerAllocator &_alloc)
        : twist(_alloc), covariance()
    {
      (void)_alloc;
      covariance.assign(0.0);
    }

    typedef ::robot_geometry_msgs::Twist_<ContainerAllocator> _twist_type;
    _twist_type twist;

    typedef boost::array<double, 36> _covariance_type;
    _covariance_type covariance;

    typedef boost::shared_ptr<::robot_geometry_msgs::TwistWithCovariance_<ContainerAllocator>> Ptr;
    typedef boost::shared_ptr<::robot_geometry_msgs::TwistWithCovariance_<ContainerAllocator> const> ConstPtr;

  }; // struct TwistWithCovariance_

  typedef ::robot_geometry_msgs::TwistWithCovariance_<std::allocator<void>> TwistWithCovariance;

  typedef boost::shared_ptr<::robot_geometry_msgs::TwistWithCovariance> TwistWithCovariancePtr;
  typedef boost::shared_ptr<::robot_geometry_msgs::TwistWithCovariance const> TwistWithCovarianceConstPtr;

  // constants requiring out of line definition

  template <typename ContainerAllocator1, typename ContainerAllocator2>
  bool operator==(const ::robot_geometry_msgs::TwistWithCovariance_<ContainerAllocator1> &lhs, const ::robot_geometry_msgs::TwistWithCovariance_<ContainerAllocator2> &rhs)
  {
    return lhs.twist == rhs.twist &&
           lhs.covariance == rhs.covariance;
  }

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

} // namespace robot_geometry_msgs

#endif // ROBOT_GEOMETRY_MSGS_MESSAGE_TWISTWITHCOVARIANCE_H
