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


#ifndef ROBOT_VISUALIZATION_MSGS_MESSAGE_INTERACTIVEMARKERCONTROL_H
#define ROBOT_VISUALIZATION_MSGS_MESSAGE_INTERACTIVEMARKERCONTROL_H


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

#include <robot_geometry_msgs/Quaternion.h>
#include <robot_visualization_msgs/Marker.h>

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

  InteractiveMarkerControl_()
    : name()
    , orientation()
    , orientation_mode(0)
    , interaction_mode(0)
    , always_visible(false)
    , markers()
    , independent_marker_orientation(false)
    , description()  {
    }
  InteractiveMarkerControl_(const ContainerAllocator& _alloc)
    : name(_alloc)
    , orientation(_alloc)
    , orientation_mode(0)
    , interaction_mode(0)
    , always_visible(false)
    , markers(_alloc)
    , independent_marker_orientation(false)
    , description(_alloc)  {
  (void)_alloc;
    }



   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _name_type;
  _name_type name;

   typedef  ::robot_geometry_msgs::Quaternion_<ContainerAllocator>  _orientation_type;
  _orientation_type orientation;

   typedef uint8_t _orientation_mode_type;
  _orientation_mode_type orientation_mode;

   typedef uint8_t _interaction_mode_type;
  _interaction_mode_type interaction_mode;

   typedef uint8_t _always_visible_type;
  _always_visible_type always_visible;

   typedef std::vector< ::robot_visualization_msgs::Marker_<ContainerAllocator> , typename std::allocator_traits<ContainerAllocator>::template rebind_alloc< ::robot_visualization_msgs::Marker_<ContainerAllocator> >> _markers_type;
  _markers_type markers;

   typedef uint8_t _independent_marker_orientation_type;
  _independent_marker_orientation_type independent_marker_orientation;

   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _description_type;
  _description_type description;



// reducing the odds to have name collisions with Windows.h 
#if defined(_WIN32) && defined(INHERIT)
  #undef INHERIT
#endif
#if defined(_WIN32) && defined(FIXED)
  #undef FIXED
#endif
#if defined(_WIN32) && defined(VIEW_FACING)
  #undef VIEW_FACING
#endif
#if defined(_WIN32) && defined(NONE)
  #undef NONE
#endif
#if defined(_WIN32) && defined(MENU)
  #undef MENU
#endif
#if defined(_WIN32) && defined(BUTTON)
  #undef BUTTON
#endif
#if defined(_WIN32) && defined(MOVE_AXIS)
  #undef MOVE_AXIS
#endif
#if defined(_WIN32) && defined(MOVE_PLANE)
  #undef MOVE_PLANE
#endif
#if defined(_WIN32) && defined(ROTATE_AXIS)
  #undef ROTATE_AXIS
#endif
#if defined(_WIN32) && defined(MOVE_ROTATE)
  #undef MOVE_ROTATE
#endif
#if defined(_WIN32) && defined(MOVE_3D)
  #undef MOVE_3D
#endif
#if defined(_WIN32) && defined(ROTATE_3D)
  #undef ROTATE_3D
#endif
#if defined(_WIN32) && defined(MOVE_ROTATE_3D)
  #undef MOVE_ROTATE_3D
#endif

  enum {
    INHERIT = 0u,
    FIXED = 1u,
    VIEW_FACING = 2u,
    NONE = 0u,
    MENU = 1u,
    BUTTON = 2u,
    MOVE_AXIS = 3u,
    MOVE_PLANE = 4u,
    ROTATE_AXIS = 5u,
    MOVE_ROTATE = 6u,
    MOVE_3D = 7u,
    ROTATE_3D = 8u,
    MOVE_ROTATE_3D = 9u,
  };


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

}; // struct InteractiveMarkerControl_

typedef ::robot_visualization_msgs::InteractiveMarkerControl_<std::allocator<void> > InteractiveMarkerControl;

typedef boost::shared_ptr< ::robot_visualization_msgs::InteractiveMarkerControl > InteractiveMarkerControlPtr;
typedef boost::shared_ptr< ::robot_visualization_msgs::InteractiveMarkerControl const> InteractiveMarkerControlConstPtr;

// constants requiring out of line definition

template<typename ContainerAllocator1, typename ContainerAllocator2>
bool operator==(const ::robot_visualization_msgs::InteractiveMarkerControl_<ContainerAllocator1> & lhs, const ::robot_visualization_msgs::InteractiveMarkerControl_<ContainerAllocator2> & rhs)
{
  return lhs.name == rhs.name &&
    lhs.orientation == rhs.orientation &&
    lhs.orientation_mode == rhs.orientation_mode &&
    lhs.interaction_mode == rhs.interaction_mode &&
    lhs.always_visible == rhs.always_visible &&
    lhs.markers == rhs.markers &&
    lhs.independent_marker_orientation == rhs.independent_marker_orientation &&
    lhs.description == rhs.description;
}

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


} // namespace robot_visualization_msgs

#endif // ROBOT_VISUALIZATION_MSGS_MESSAGE_INTERACTIVEMARKERCONTROL_H
