// Generated by gencpp from file robot_visualization_msgs/InteractiveMarkerFeedback.msg
// DO NOT EDIT!


#ifndef ROBOT_VISUALIZATION_MSGS_MESSAGE_INTERACTIVEMARKERFEEDBACK_H
#define ROBOT_VISUALIZATION_MSGS_MESSAGE_INTERACTIVEMARKERFEEDBACK_H


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

#include <robot_std_msgs/Header.h>
#include <robot_geometry_msgs/Pose.h>
#include <robot_geometry_msgs/Point.h>

namespace robot_visualization_msgs
{
template <class ContainerAllocator>
struct InteractiveMarkerFeedback_
{
  typedef InteractiveMarkerFeedback_<ContainerAllocator> Type;

  InteractiveMarkerFeedback_()
    : header()
    , client_id()
    , marker_name()
    , control_name()
    , event_type(0)
    , pose()
    , menu_entry_id(0)
    , mouse_point()
    , mouse_point_valid(false)  {
    }
  InteractiveMarkerFeedback_(const ContainerAllocator& _alloc)
    : header(_alloc)
    , client_id(_alloc)
    , marker_name(_alloc)
    , control_name(_alloc)
    , event_type(0)
    , pose(_alloc)
    , menu_entry_id(0)
    , mouse_point(_alloc)
    , mouse_point_valid(false)  {
  (void)_alloc;
    }



   typedef  ::robot_std_msgs::Header_<ContainerAllocator>  _header_type;
  _header_type header;

   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _client_id_type;
  _client_id_type client_id;

   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _marker_name_type;
  _marker_name_type marker_name;

   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _control_name_type;
  _control_name_type control_name;

   typedef uint8_t _event_type_type;
  _event_type_type event_type;

   typedef  ::robot_geometry_msgs::Pose_<ContainerAllocator>  _pose_type;
  _pose_type pose;

   typedef uint32_t _menu_entry_id_type;
  _menu_entry_id_type menu_entry_id;

   typedef  ::robot_geometry_msgs::Point_<ContainerAllocator>  _mouse_point_type;
  _mouse_point_type mouse_point;

   typedef uint8_t _mouse_point_valid_type;
  _mouse_point_valid_type mouse_point_valid;



// reducing the odds to have name collisions with Windows.h 
#if defined(_WIN32) && defined(KEEP_ALIVE)
  #undef KEEP_ALIVE
#endif
#if defined(_WIN32) && defined(POSE_UPDATE)
  #undef POSE_UPDATE
#endif
#if defined(_WIN32) && defined(MENU_SELECT)
  #undef MENU_SELECT
#endif
#if defined(_WIN32) && defined(BUTTON_CLICK)
  #undef BUTTON_CLICK
#endif
#if defined(_WIN32) && defined(MOUSE_DOWN)
  #undef MOUSE_DOWN
#endif
#if defined(_WIN32) && defined(MOUSE_UP)
  #undef MOUSE_UP
#endif

  enum {
    KEEP_ALIVE = 0u,
    POSE_UPDATE = 1u,
    MENU_SELECT = 2u,
    BUTTON_CLICK = 3u,
    MOUSE_DOWN = 4u,
    MOUSE_UP = 5u,
  };


  typedef boost::shared_ptr< ::robot_visualization_msgs::InteractiveMarkerFeedback_<ContainerAllocator> > Ptr;
  typedef boost::shared_ptr< ::robot_visualization_msgs::InteractiveMarkerFeedback_<ContainerAllocator> const> ConstPtr;

}; // struct InteractiveMarkerFeedback_

typedef ::robot_visualization_msgs::InteractiveMarkerFeedback_<std::allocator<void> > InteractiveMarkerFeedback;

typedef boost::shared_ptr< ::robot_visualization_msgs::InteractiveMarkerFeedback > InteractiveMarkerFeedbackPtr;
typedef boost::shared_ptr< ::robot_visualization_msgs::InteractiveMarkerFeedback const> InteractiveMarkerFeedbackConstPtr;

// constants requiring out of line definition


template<typename ContainerAllocator1, typename ContainerAllocator2>
bool operator==(const ::robot_visualization_msgs::InteractiveMarkerFeedback_<ContainerAllocator1> & lhs, const ::robot_visualization_msgs::InteractiveMarkerFeedback_<ContainerAllocator2> & rhs)
{
  return lhs.header == rhs.header &&
    lhs.client_id == rhs.client_id &&
    lhs.marker_name == rhs.marker_name &&
    lhs.control_name == rhs.control_name &&
    lhs.event_type == rhs.event_type &&
    lhs.pose == rhs.pose &&
    lhs.menu_entry_id == rhs.menu_entry_id &&
    lhs.mouse_point == rhs.mouse_point &&
    lhs.mouse_point_valid == rhs.mouse_point_valid;
}

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


} // namespace robot_visualization_msgs

#endif // ROBOT_VISUALIZATION_MSGS_MESSAGE_INTERACTIVEMARKERFEEDBACK_H
