// Generated by gencpp from file robot_protocol_msgs/Action.msg
// DO NOT EDIT!


#ifndef ROBOT_PROTOCOL_MSGS_MESSAGE_ACTION_H
#define ROBOT_PROTOCOL_MSGS_MESSAGE_ACTION_H


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

#include <robot_protocol_msgs/ActionParameter.h>

namespace robot_protocol_msgs
{
template <class ContainerAllocator>
struct Action_
{
  typedef Action_<ContainerAllocator> Type;

  Action_()
    : actionType()
    , actionId()
    , actionDescription()
    , blockingType()
    , actionParameters()  {
    }
  Action_(const ContainerAllocator& _alloc)
    : actionType(_alloc)
    , actionId(_alloc)
    , actionDescription(_alloc)
    , blockingType(_alloc)
    , actionParameters(_alloc)  {
  (void)_alloc;
    }



   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _actionType_type;
  _actionType_type actionType;

   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _actionId_type;
  _actionId_type actionId;

   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _actionDescription_type;
  _actionDescription_type actionDescription;

   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _blockingType_type;
  _blockingType_type blockingType;

   typedef std::vector< ::robot_protocol_msgs::ActionParameter_<ContainerAllocator> , typename std::allocator_traits<ContainerAllocator>::template rebind_alloc< ::robot_protocol_msgs::ActionParameter_<ContainerAllocator> >> _actionParameters_type;
  _actionParameters_type actionParameters;



// reducing the odds to have name collisions with Windows.h 
#if defined(_WIN32) && defined(NONE)
  #undef NONE
#endif
#if defined(_WIN32) && defined(SOFT)
  #undef SOFT
#endif
#if defined(_WIN32) && defined(HARD)
  #undef HARD
#endif


  static const std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> NONE;
  static const std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> SOFT;
  static const std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> HARD;

  typedef boost::shared_ptr< ::robot_protocol_msgs::Action_<ContainerAllocator> > Ptr;
  typedef boost::shared_ptr< ::robot_protocol_msgs::Action_<ContainerAllocator> const> ConstPtr;

}; // struct Action_

typedef ::robot_protocol_msgs::Action_<std::allocator<void> > Action;

typedef boost::shared_ptr< ::robot_protocol_msgs::Action > ActionPtr;
typedef boost::shared_ptr< ::robot_protocol_msgs::Action const> ActionConstPtr;

// constants requiring out of line definition

   
   template<typename ContainerAllocator> const std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>>
      Action_<ContainerAllocator>::NONE =
        
          "NONE"
        
        ;
   

   
   template<typename ContainerAllocator> const std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>>
      Action_<ContainerAllocator>::SOFT =
        
          "SOFT"
        
        ;
   

   
   template<typename ContainerAllocator> const std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>>
      Action_<ContainerAllocator>::HARD =
        
          "HARD"
        
        ;


template<typename ContainerAllocator1, typename ContainerAllocator2>
bool operator==(const ::robot_protocol_msgs::Action_<ContainerAllocator1> & lhs, const ::robot_protocol_msgs::Action_<ContainerAllocator2> & rhs)
{
  return lhs.actionType == rhs.actionType &&
    lhs.actionId == rhs.actionId &&
    lhs.actionDescription == rhs.actionDescription &&
    lhs.blockingType == rhs.blockingType &&
    lhs.actionParameters == rhs.actionParameters;
}

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


} // namespace robot_protocol_msgs

#endif // ROBOT_PROTOCOL_MSGS_MESSAGE_ACTION_H
