// generated from rosidl_generator_cpp/resource/idl__traits.hpp.em
// with input from pylon_ros2_camera_interfaces:action/GrabImages.idl
// generated code does not contain a copyright notice

#ifndef PYLON_ROS2_CAMERA_INTERFACES__ACTION__DETAIL__GRAB_IMAGES__TRAITS_HPP_
#define PYLON_ROS2_CAMERA_INTERFACES__ACTION__DETAIL__GRAB_IMAGES__TRAITS_HPP_

#include "pylon_ros2_camera_interfaces/action/detail/grab_images__struct.hpp"
#include <rosidl_runtime_cpp/traits.hpp>
#include <stdint.h>
#include <type_traits>

namespace rosidl_generator_traits
{

template<>
inline const char * data_type<pylon_ros2_camera_interfaces::action::GrabImages_Goal>()
{
  return "pylon_ros2_camera_interfaces::action::GrabImages_Goal";
}

template<>
inline const char * name<pylon_ros2_camera_interfaces::action::GrabImages_Goal>()
{
  return "pylon_ros2_camera_interfaces/action/GrabImages_Goal";
}

template<>
struct has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_Goal>
  : std::integral_constant<bool, false> {};

template<>
struct has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_Goal>
  : std::integral_constant<bool, false> {};

template<>
struct is_message<pylon_ros2_camera_interfaces::action::GrabImages_Goal>
  : std::true_type {};

}  // namespace rosidl_generator_traits

// Include directives for member types
// Member 'cam_info'
#include "sensor_msgs/msg/detail/camera_info__traits.hpp"

namespace rosidl_generator_traits
{

template<>
inline const char * data_type<pylon_ros2_camera_interfaces::action::GrabImages_Result>()
{
  return "pylon_ros2_camera_interfaces::action::GrabImages_Result";
}

template<>
inline const char * name<pylon_ros2_camera_interfaces::action::GrabImages_Result>()
{
  return "pylon_ros2_camera_interfaces/action/GrabImages_Result";
}

template<>
struct has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_Result>
  : std::integral_constant<bool, false> {};

template<>
struct has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_Result>
  : std::integral_constant<bool, false> {};

template<>
struct is_message<pylon_ros2_camera_interfaces::action::GrabImages_Result>
  : std::true_type {};

}  // namespace rosidl_generator_traits

namespace rosidl_generator_traits
{

template<>
inline const char * data_type<pylon_ros2_camera_interfaces::action::GrabImages_Feedback>()
{
  return "pylon_ros2_camera_interfaces::action::GrabImages_Feedback";
}

template<>
inline const char * name<pylon_ros2_camera_interfaces::action::GrabImages_Feedback>()
{
  return "pylon_ros2_camera_interfaces/action/GrabImages_Feedback";
}

template<>
struct has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_Feedback>
  : std::integral_constant<bool, true> {};

template<>
struct has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_Feedback>
  : std::integral_constant<bool, true> {};

template<>
struct is_message<pylon_ros2_camera_interfaces::action::GrabImages_Feedback>
  : std::true_type {};

}  // namespace rosidl_generator_traits

// Include directives for member types
// Member 'goal_id'
#include "unique_identifier_msgs/msg/detail/uuid__traits.hpp"
// Member 'goal'
#include "pylon_ros2_camera_interfaces/action/detail/grab_images__traits.hpp"

namespace rosidl_generator_traits
{

template<>
inline const char * data_type<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Request>()
{
  return "pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Request";
}

template<>
inline const char * name<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Request>()
{
  return "pylon_ros2_camera_interfaces/action/GrabImages_SendGoal_Request";
}

template<>
struct has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Request>
  : std::integral_constant<bool, has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_Goal>::value && has_fixed_size<unique_identifier_msgs::msg::UUID>::value> {};

template<>
struct has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Request>
  : std::integral_constant<bool, has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_Goal>::value && has_bounded_size<unique_identifier_msgs::msg::UUID>::value> {};

template<>
struct is_message<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Request>
  : std::true_type {};

}  // namespace rosidl_generator_traits

// Include directives for member types
// Member 'stamp'
#include "builtin_interfaces/msg/detail/time__traits.hpp"

namespace rosidl_generator_traits
{

template<>
inline const char * data_type<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Response>()
{
  return "pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Response";
}

template<>
inline const char * name<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Response>()
{
  return "pylon_ros2_camera_interfaces/action/GrabImages_SendGoal_Response";
}

template<>
struct has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Response>
  : std::integral_constant<bool, has_fixed_size<builtin_interfaces::msg::Time>::value> {};

template<>
struct has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Response>
  : std::integral_constant<bool, has_bounded_size<builtin_interfaces::msg::Time>::value> {};

template<>
struct is_message<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Response>
  : std::true_type {};

}  // namespace rosidl_generator_traits

namespace rosidl_generator_traits
{

template<>
inline const char * data_type<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal>()
{
  return "pylon_ros2_camera_interfaces::action::GrabImages_SendGoal";
}

template<>
inline const char * name<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal>()
{
  return "pylon_ros2_camera_interfaces/action/GrabImages_SendGoal";
}

template<>
struct has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal>
  : std::integral_constant<
    bool,
    has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Request>::value &&
    has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Response>::value
  >
{
};

template<>
struct has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal>
  : std::integral_constant<
    bool,
    has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Request>::value &&
    has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Response>::value
  >
{
};

template<>
struct is_service<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal>
  : std::true_type
{
};

template<>
struct is_service_request<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Request>
  : std::true_type
{
};

template<>
struct is_service_response<pylon_ros2_camera_interfaces::action::GrabImages_SendGoal_Response>
  : std::true_type
{
};

}  // namespace rosidl_generator_traits

// Include directives for member types
// Member 'goal_id'
// already included above
// #include "unique_identifier_msgs/msg/detail/uuid__traits.hpp"

namespace rosidl_generator_traits
{

template<>
inline const char * data_type<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Request>()
{
  return "pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Request";
}

template<>
inline const char * name<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Request>()
{
  return "pylon_ros2_camera_interfaces/action/GrabImages_GetResult_Request";
}

template<>
struct has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Request>
  : std::integral_constant<bool, has_fixed_size<unique_identifier_msgs::msg::UUID>::value> {};

template<>
struct has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Request>
  : std::integral_constant<bool, has_bounded_size<unique_identifier_msgs::msg::UUID>::value> {};

template<>
struct is_message<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Request>
  : std::true_type {};

}  // namespace rosidl_generator_traits

// Include directives for member types
// Member 'result'
// already included above
// #include "pylon_ros2_camera_interfaces/action/detail/grab_images__traits.hpp"

namespace rosidl_generator_traits
{

template<>
inline const char * data_type<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Response>()
{
  return "pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Response";
}

template<>
inline const char * name<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Response>()
{
  return "pylon_ros2_camera_interfaces/action/GrabImages_GetResult_Response";
}

template<>
struct has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Response>
  : std::integral_constant<bool, has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_Result>::value> {};

template<>
struct has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Response>
  : std::integral_constant<bool, has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_Result>::value> {};

template<>
struct is_message<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Response>
  : std::true_type {};

}  // namespace rosidl_generator_traits

namespace rosidl_generator_traits
{

template<>
inline const char * data_type<pylon_ros2_camera_interfaces::action::GrabImages_GetResult>()
{
  return "pylon_ros2_camera_interfaces::action::GrabImages_GetResult";
}

template<>
inline const char * name<pylon_ros2_camera_interfaces::action::GrabImages_GetResult>()
{
  return "pylon_ros2_camera_interfaces/action/GrabImages_GetResult";
}

template<>
struct has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_GetResult>
  : std::integral_constant<
    bool,
    has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Request>::value &&
    has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Response>::value
  >
{
};

template<>
struct has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_GetResult>
  : std::integral_constant<
    bool,
    has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Request>::value &&
    has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Response>::value
  >
{
};

template<>
struct is_service<pylon_ros2_camera_interfaces::action::GrabImages_GetResult>
  : std::true_type
{
};

template<>
struct is_service_request<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Request>
  : std::true_type
{
};

template<>
struct is_service_response<pylon_ros2_camera_interfaces::action::GrabImages_GetResult_Response>
  : std::true_type
{
};

}  // namespace rosidl_generator_traits

// Include directives for member types
// Member 'goal_id'
// already included above
// #include "unique_identifier_msgs/msg/detail/uuid__traits.hpp"
// Member 'feedback'
// already included above
// #include "pylon_ros2_camera_interfaces/action/detail/grab_images__traits.hpp"

namespace rosidl_generator_traits
{

template<>
inline const char * data_type<pylon_ros2_camera_interfaces::action::GrabImages_FeedbackMessage>()
{
  return "pylon_ros2_camera_interfaces::action::GrabImages_FeedbackMessage";
}

template<>
inline const char * name<pylon_ros2_camera_interfaces::action::GrabImages_FeedbackMessage>()
{
  return "pylon_ros2_camera_interfaces/action/GrabImages_FeedbackMessage";
}

template<>
struct has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_FeedbackMessage>
  : std::integral_constant<bool, has_fixed_size<pylon_ros2_camera_interfaces::action::GrabImages_Feedback>::value && has_fixed_size<unique_identifier_msgs::msg::UUID>::value> {};

template<>
struct has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_FeedbackMessage>
  : std::integral_constant<bool, has_bounded_size<pylon_ros2_camera_interfaces::action::GrabImages_Feedback>::value && has_bounded_size<unique_identifier_msgs::msg::UUID>::value> {};

template<>
struct is_message<pylon_ros2_camera_interfaces::action::GrabImages_FeedbackMessage>
  : std::true_type {};

}  // namespace rosidl_generator_traits


namespace rosidl_generator_traits
{

template<>
struct is_action<pylon_ros2_camera_interfaces::action::GrabImages>
  : std::true_type
{
};

template<>
struct is_action_goal<pylon_ros2_camera_interfaces::action::GrabImages_Goal>
  : std::true_type
{
};

template<>
struct is_action_result<pylon_ros2_camera_interfaces::action::GrabImages_Result>
  : std::true_type
{
};

template<>
struct is_action_feedback<pylon_ros2_camera_interfaces::action::GrabImages_Feedback>
  : std::true_type
{
};

}  // namespace rosidl_generator_traits


#endif  // PYLON_ROS2_CAMERA_INTERFACES__ACTION__DETAIL__GRAB_IMAGES__TRAITS_HPP_
