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


#ifndef ROBOT_VISUALIZATION_MSGS_MESSAGE_MARKER_H
#define ROBOT_VISUALIZATION_MSGS_MESSAGE_MARKER_H


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


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

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

  Marker_()
    : header()
    , ns()
    , id(0)
    , type(0)
    , action(0)
    , pose()
    , scale()
    , color()
    , lifetime()
    , frame_locked(false)
    , points()
    , colors()
    , text()
    , mesh_resource()
    , mesh_use_embedded_materials(false)  {
    }
  Marker_(const ContainerAllocator& _alloc)
    : header(_alloc)
    , ns(_alloc)
    , id(0)
    , type(0)
    , action(0)
    , pose(_alloc)
    , scale(_alloc)
    , color(_alloc)
    , lifetime()
    , frame_locked(false)
    , points(_alloc)
    , colors(_alloc)
    , text(_alloc)
    , mesh_resource(_alloc)
    , mesh_use_embedded_materials(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>> _ns_type;
  _ns_type ns;

   typedef int32_t _id_type;
  _id_type id;

   typedef int32_t _type_type;
  _type_type type;

   typedef int32_t _action_type;
  _action_type action;

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

   typedef  ::robot_geometry_msgs::Vector3_<ContainerAllocator>  _scale_type;
  _scale_type scale;

   typedef  ::robot_std_msgs::ColorRGBA_<ContainerAllocator>  _color_type;
  _color_type color;

   typedef robot::Duration _lifetime_type;
  _lifetime_type lifetime;

   typedef uint8_t _frame_locked_type;
  _frame_locked_type frame_locked;

   typedef std::vector< ::robot_geometry_msgs::Point_<ContainerAllocator> , typename std::allocator_traits<ContainerAllocator>::template rebind_alloc< ::robot_geometry_msgs::Point_<ContainerAllocator> >> _points_type;
  _points_type points;

   typedef std::vector< ::robot_std_msgs::ColorRGBA_<ContainerAllocator> , typename std::allocator_traits<ContainerAllocator>::template rebind_alloc< ::robot_std_msgs::ColorRGBA_<ContainerAllocator> >> _colors_type;
  _colors_type colors;

   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _text_type;
  _text_type text;

   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _mesh_resource_type;
  _mesh_resource_type mesh_resource;

   typedef uint8_t _mesh_use_embedded_materials_type;
  _mesh_use_embedded_materials_type mesh_use_embedded_materials;



// reducing the odds to have name collisions with Windows.h 
#if defined(_WIN32) && defined(ARROW)
  #undef ARROW
#endif
#if defined(_WIN32) && defined(CUBE)
  #undef CUBE
#endif
#if defined(_WIN32) && defined(SPHERE)
  #undef SPHERE
#endif
#if defined(_WIN32) && defined(CYLINDER)
  #undef CYLINDER
#endif
#if defined(_WIN32) && defined(LINE_STRIP)
  #undef LINE_STRIP
#endif
#if defined(_WIN32) && defined(LINE_LIST)
  #undef LINE_LIST
#endif
#if defined(_WIN32) && defined(CUBE_LIST)
  #undef CUBE_LIST
#endif
#if defined(_WIN32) && defined(SPHERE_LIST)
  #undef SPHERE_LIST
#endif
#if defined(_WIN32) && defined(POINTS)
  #undef POINTS
#endif
#if defined(_WIN32) && defined(TEXT_VIEW_FACING)
  #undef TEXT_VIEW_FACING
#endif
#if defined(_WIN32) && defined(MESH_RESOURCE)
  #undef MESH_RESOURCE
#endif
#if defined(_WIN32) && defined(TRIANGLE_LIST)
  #undef TRIANGLE_LIST
#endif
#if defined(_WIN32) && defined(ADD)
  #undef ADD
#endif
#if defined(_WIN32) && defined(MODIFY)
  #undef MODIFY
#endif
#if defined(_WIN32) && defined(DELETE)
  #undef DELETE
#endif
#if defined(_WIN32) && defined(DELETEALL)
  #undef DELETEALL
#endif

  enum {
    ARROW = 0u,
    CUBE = 1u,
    SPHERE = 2u,
    CYLINDER = 3u,
    LINE_STRIP = 4u,
    LINE_LIST = 5u,
    CUBE_LIST = 6u,
    SPHERE_LIST = 7u,
    POINTS = 8u,
    TEXT_VIEW_FACING = 9u,
    MESH_RESOURCE = 10u,
    TRIANGLE_LIST = 11u,
    ADD = 0u,
    MODIFY = 0u,
    DELETE = 2u,
    DELETEALL = 3u,
  };


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

}; // struct Marker_

typedef ::robot_visualization_msgs::Marker_<std::allocator<void> > Marker;

typedef boost::shared_ptr< ::robot_visualization_msgs::Marker > MarkerPtr;
typedef boost::shared_ptr< ::robot_visualization_msgs::Marker const> MarkerConstPtr;

// constants requiring out of line definition


template<typename ContainerAllocator1, typename ContainerAllocator2>
bool operator==(const ::robot_visualization_msgs::Marker_<ContainerAllocator1> & lhs, const ::robot_visualization_msgs::Marker_<ContainerAllocator2> & rhs)
{
  return lhs.header == rhs.header &&
    lhs.ns == rhs.ns &&
    lhs.id == rhs.id &&
    lhs.type == rhs.type &&
    lhs.action == rhs.action &&
    lhs.pose == rhs.pose &&
    lhs.scale == rhs.scale &&
    lhs.color == rhs.color &&
    lhs.lifetime == rhs.lifetime &&
    lhs.frame_locked == rhs.frame_locked &&
    lhs.points == rhs.points &&
    lhs.colors == rhs.colors &&
    lhs.text == rhs.text &&
    lhs.mesh_resource == rhs.mesh_resource &&
    lhs.mesh_use_embedded_materials == rhs.mesh_use_embedded_materials;
}

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


} // namespace robot_visualization_msgs

#endif // ROBOT_VISUALIZATION_MSGS_MESSAGE_MARKER_H
