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


#ifndef ROBOT_VISUALIZATION_MSGS_MESSAGE_INTERACTIVEMARKERUPDATE_H
#define ROBOT_VISUALIZATION_MSGS_MESSAGE_INTERACTIVEMARKERUPDATE_H


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

#include <robot_visualization_msgs/InteractiveMarker.h>
#include <robot_visualization_msgs/InteractiveMarkerPose.h>

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

  InteractiveMarkerUpdate_()
    : server_id()
    , seq_num(0)
    , type(0)
    , markers()
    , poses()
    , erases()  {
    }
  InteractiveMarkerUpdate_(const ContainerAllocator& _alloc)
    : server_id(_alloc)
    , seq_num(0)
    , type(0)
    , markers(_alloc)
    , poses(_alloc)
    , erases(_alloc)  {
  (void)_alloc;
    }



   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _server_id_type;
  _server_id_type server_id;

   typedef uint64_t _seq_num_type;
  _seq_num_type seq_num;

   typedef uint8_t _type_type;
  _type_type type;

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

   typedef std::vector< ::robot_visualization_msgs::InteractiveMarkerPose_<ContainerAllocator> , typename std::allocator_traits<ContainerAllocator>::template rebind_alloc< ::robot_visualization_msgs::InteractiveMarkerPose_<ContainerAllocator> >> _poses_type;
  _poses_type poses;

   typedef std::vector<std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>>>> _erases_type;
  _erases_type erases;



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

  enum {
    KEEP_ALIVE = 0u,
    UPDATE = 1u,
  };


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

}; // struct InteractiveMarkerUpdate_

typedef ::robot_visualization_msgs::InteractiveMarkerUpdate_<std::allocator<void> > InteractiveMarkerUpdate;

typedef boost::shared_ptr< ::robot_visualization_msgs::InteractiveMarkerUpdate > InteractiveMarkerUpdatePtr;
typedef boost::shared_ptr< ::robot_visualization_msgs::InteractiveMarkerUpdate const> InteractiveMarkerUpdateConstPtr;

// constants requiring out of line definition


template<typename ContainerAllocator1, typename ContainerAllocator2>
bool operator==(const ::robot_visualization_msgs::InteractiveMarkerUpdate_<ContainerAllocator1> & lhs, const ::robot_visualization_msgs::InteractiveMarkerUpdate_<ContainerAllocator2> & rhs)
{
  return lhs.server_id == rhs.server_id &&
    lhs.seq_num == rhs.seq_num &&
    lhs.type == rhs.type &&
    lhs.markers == rhs.markers &&
    lhs.poses == rhs.poses &&
    lhs.erases == rhs.erases;
}

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


} // namespace robot_visualization_msgs

#endif // ROBOT_VISUALIZATION_MSGS_MESSAGE_INTERACTIVEMARKERUPDATE_H
