// Generated by gencpp from file actionlib_msgs/GoalID.msg
// DO NOT EDIT!

#ifndef ROBOT_ACTIONLIB_MSGS_MESSAGE_GOALID_H
#define ROBOT_ACTIONLIB_MSGS_MESSAGE_GOALID_H

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

#include <robot/time.h>

namespace robot_actionlib_msgs
{
  template <class ContainerAllocator>
  struct GoalID_
  {
    typedef GoalID_<ContainerAllocator> Type;

    GoalID_()
        : stamp(), id()
    {
    }
    GoalID_(const ContainerAllocator &_alloc)
        : stamp(), id(_alloc)
    {
      (void)_alloc;
    }

    typedef robot::Time _stamp_type;
    _stamp_type stamp;

    typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _id_type;
    _id_type id;

    typedef boost::shared_ptr<::robot_actionlib_msgs::GoalID_<ContainerAllocator>> Ptr;
    typedef boost::shared_ptr<::robot_actionlib_msgs::GoalID_<ContainerAllocator> const> ConstPtr;

  }; // struct GoalID_

  typedef ::robot_actionlib_msgs::GoalID_<std::allocator<void>> GoalID;

  typedef boost::shared_ptr<::robot_actionlib_msgs::GoalID> GoalIDPtr;
  typedef boost::shared_ptr<::robot_actionlib_msgs::GoalID const> GoalIDConstPtr;

  // constants requiring out of line definition



  template <typename ContainerAllocator1, typename ContainerAllocator2>
  bool operator==(const ::robot_actionlib_msgs::GoalID_<ContainerAllocator1> &lhs, const ::robot_actionlib_msgs::GoalID_<ContainerAllocator2> &rhs)
  {
    return lhs.stamp == rhs.stamp &&
           lhs.id == rhs.id;
  }

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

} // namespace robot_actionlib_msgs

#endif // ROBOT_ACTIONLIB_MSGS_MESSAGE_GOALID_H
