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


#ifndef ROBOT_VISUALIZATION_MSGS_MESSAGE_INTERACTIVEMARKER_H
#define ROBOT_VISUALIZATION_MSGS_MESSAGE_INTERACTIVEMARKER_H


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

#include <robot_std_msgs/Header.h>
#include <robot_geometry_msgs/Pose.h>
#include <robot_visualization_msgs/MenuEntry.h>
#include <robot_visualization_msgs/InteractiveMarkerControl.h>

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

  InteractiveMarker_()
    : header()
    , pose()
    , name()
    , description()
    , scale(0.0)
    , menu_entries()
    , controls()  {
    }
  InteractiveMarker_(const ContainerAllocator& _alloc)
    : header(_alloc)
    , pose(_alloc)
    , name(_alloc)
    , description(_alloc)
    , scale(0.0)
    , menu_entries(_alloc)
    , controls(_alloc)  {
  (void)_alloc;
    }



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

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

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

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

   typedef float _scale_type;
  _scale_type scale;

   typedef std::vector< ::robot_visualization_msgs::MenuEntry_<ContainerAllocator> , typename std::allocator_traits<ContainerAllocator>::template rebind_alloc< ::robot_visualization_msgs::MenuEntry_<ContainerAllocator> >> _menu_entries_type;
  _menu_entries_type menu_entries;

   typedef std::vector< ::robot_visualization_msgs::InteractiveMarkerControl_<ContainerAllocator> , typename std::allocator_traits<ContainerAllocator>::template rebind_alloc< ::robot_visualization_msgs::InteractiveMarkerControl_<ContainerAllocator> >> _controls_type;
  _controls_type controls;





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

}; // struct InteractiveMarker_

typedef ::robot_visualization_msgs::InteractiveMarker_<std::allocator<void> > InteractiveMarker;

typedef boost::shared_ptr< ::robot_visualization_msgs::InteractiveMarker > InteractiveMarkerPtr;
typedef boost::shared_ptr< ::robot_visualization_msgs::InteractiveMarker const> InteractiveMarkerConstPtr;

// constants requiring out of line definition


template<typename ContainerAllocator1, typename ContainerAllocator2>
bool operator==(const ::robot_visualization_msgs::InteractiveMarker_<ContainerAllocator1> & lhs, const ::robot_visualization_msgs::InteractiveMarker_<ContainerAllocator2> & rhs)
{
  return lhs.header == rhs.header &&
    lhs.pose == rhs.pose &&
    lhs.name == rhs.name &&
    lhs.description == rhs.description &&
    lhs.scale == rhs.scale &&
    lhs.menu_entries == rhs.menu_entries &&
    lhs.controls == rhs.controls;
}

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


} // namespace robot_visualization_msgs

#endif // ROBOT_VISUALIZATION_MSGS_MESSAGE_INTERACTIVEMARKER_H
