text: // generated from rosidl_generator_c/resource/idl__functions.h.em
  // with input from turtlebot3_msgs:action/Patrol.idl
  // generated code does not contain a copyright notice
  
  #ifndef TURTLEBOT3_MSGS__ACTION__DETAIL__PATROL__FUNCTIONS_H_
  #define TURTLEBOT3_MSGS__ACTION__DETAIL__PATROL__FUNCTIONS_H_
  
  #ifdef __cplusplus
  extern "C"
  {
  #endif
  
  #include <stdbool.h>
  #include <stdlib.h>
  
  #include "rosidl_runtime_c/visibility_control.h"
  #include "turtlebot3_msgs/msg/rosidl_generator_c__visibility_control.h"
  
  #include "turtlebot3_msgs/action/detail/patrol__struct.h"
  
  /// Initialize action/Patrol message.
  /**
   * If the init function is called twice for the same message without
   * calling fini inbetween previously allocated memory will be leaked.
   * \param[in,out] msg The previously allocated message pointer.
   * Fields without a default value will not be initialized by this function.
   * You might want to call memset(msg, 0, sizeof(
   * turtlebot3_msgs__action__Patrol_Goal
   * )) before or use
   * turtlebot3_msgs__action__Patrol_Goal__create()
   * to allocate and initialize the message.
   * \return true if initialization was successful, otherwise false
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_Goal__init(turtlebot3_msgs__action__Patrol_Goal * msg);
  
  /// Finalize action/Patrol message.
  /**
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_Goal__fini(turtlebot3_msgs__action__Patrol_Goal * msg);
  
  /// Create action/Patrol message.
  /**
   * It allocates the memory for the message, sets the memory to zero, and
   * calls
   * turtlebot3_msgs__action__Patrol_Goal__init().
   * \return The pointer to the initialized message if successful,
   * otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_Goal *
  turtlebot3_msgs__action__Patrol_Goal__create();
  
  /// Destroy action/Patrol message.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_Goal__fini()
   * and frees the memory of the message.
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_Goal__destroy(turtlebot3_msgs__action__Patrol_Goal * msg);
  
  
  /// Initialize array of action/Patrol messages.
  /**
   * It allocates the memory for the number of elements and calls
   * turtlebot3_msgs__action__Patrol_Goal__init()
   * for each element of the array.
   * \param[in,out] array The allocated array pointer.
   * \param[in] size The size / capacity of the array.
   * \return true if initialization was successful, otherwise false
   * If the array pointer is valid and the size is zero it is guaranteed
   # to return true.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_Goal__Sequence__init(turtlebot3_msgs__action__Patrol_Goal__Sequence * array, size_t size);
  
  /// Finalize array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_Goal__fini()
   * for each element of the array and frees the memory for the number of
   * elements.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_Goal__Sequence__fini(turtlebot3_msgs__action__Patrol_Goal__Sequence * array);
  
  /// Create array of action/Patrol messages.
  /**
   * It allocates the memory for the array and calls
   * turtlebot3_msgs__action__Patrol_Goal__Sequence__init().
   * \param[in] size The size / capacity of the array.
   * \return The pointer to the initialized array if successful, otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_Goal__Sequence *
  turtlebot3_msgs__action__Patrol_Goal__Sequence__create(size_t size);
  
  /// Destroy array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_Goal__Sequence__fini()
   * on the array,
   * and frees the memory of the array.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_Goal__Sequence__destroy(turtlebot3_msgs__action__Patrol_Goal__Sequence * array);
  
  /// Initialize action/Patrol message.
  /**
   * If the init function is called twice for the same message without
   * calling fini inbetween previously allocated memory will be leaked.
   * \param[in,out] msg The previously allocated message pointer.
   * Fields without a default value will not be initialized by this function.
   * You might want to call memset(msg, 0, sizeof(
   * turtlebot3_msgs__action__Patrol_Result
   * )) before or use
   * turtlebot3_msgs__action__Patrol_Result__create()
   * to allocate and initialize the message.
   * \return true if initialization was successful, otherwise false
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_Result__init(turtlebot3_msgs__action__Patrol_Result * msg);
  
  /// Finalize action/Patrol message.
  /**
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_Result__fini(turtlebot3_msgs__action__Patrol_Result * msg);
  
  /// Create action/Patrol message.
  /**
   * It allocates the memory for the message, sets the memory to zero, and
   * calls
   * turtlebot3_msgs__action__Patrol_Result__init().
   * \return The pointer to the initialized message if successful,
   * otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_Result *
  turtlebot3_msgs__action__Patrol_Result__create();
  
  /// Destroy action/Patrol message.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_Result__fini()
   * and frees the memory of the message.
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_Result__destroy(turtlebot3_msgs__action__Patrol_Result * msg);
  
  
  /// Initialize array of action/Patrol messages.
  /**
   * It allocates the memory for the number of elements and calls
   * turtlebot3_msgs__action__Patrol_Result__init()
   * for each element of the array.
   * \param[in,out] array The allocated array pointer.
   * \param[in] size The size / capacity of the array.
   * \return true if initialization was successful, otherwise false
   * If the array pointer is valid and the size is zero it is guaranteed
   # to return true.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_Result__Sequence__init(turtlebot3_msgs__action__Patrol_Result__Sequence * array, size_t size);
  
  /// Finalize array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_Result__fini()
   * for each element of the array and frees the memory for the number of
   * elements.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_Result__Sequence__fini(turtlebot3_msgs__action__Patrol_Result__Sequence * array);
  
  /// Create array of action/Patrol messages.
  /**
   * It allocates the memory for the array and calls
   * turtlebot3_msgs__action__Patrol_Result__Sequence__init().
   * \param[in] size The size / capacity of the array.
   * \return The pointer to the initialized array if successful, otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_Result__Sequence *
  turtlebot3_msgs__action__Patrol_Result__Sequence__create(size_t size);
  
  /// Destroy array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_Result__Sequence__fini()
   * on the array,
   * and frees the memory of the array.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_Result__Sequence__destroy(turtlebot3_msgs__action__Patrol_Result__Sequence * array);
  
  /// Initialize action/Patrol message.
  /**
   * If the init function is called twice for the same message without
   * calling fini inbetween previously allocated memory will be leaked.
   * \param[in,out] msg The previously allocated message pointer.
   * Fields without a default value will not be initialized by this function.
   * You might want to call memset(msg, 0, sizeof(
   * turtlebot3_msgs__action__Patrol_Feedback
   * )) before or use
   * turtlebot3_msgs__action__Patrol_Feedback__create()
   * to allocate and initialize the message.
   * \return true if initialization was successful, otherwise false
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_Feedback__init(turtlebot3_msgs__action__Patrol_Feedback * msg);
  
  /// Finalize action/Patrol message.
  /**
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_Feedback__fini(turtlebot3_msgs__action__Patrol_Feedback * msg);
  
  /// Create action/Patrol message.
  /**
   * It allocates the memory for the message, sets the memory to zero, and
   * calls
   * turtlebot3_msgs__action__Patrol_Feedback__init().
   * \return The pointer to the initialized message if successful,
   * otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_Feedback *
  turtlebot3_msgs__action__Patrol_Feedback__create();
  
  /// Destroy action/Patrol message.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_Feedback__fini()
   * and frees the memory of the message.
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_Feedback__destroy(turtlebot3_msgs__action__Patrol_Feedback * msg);
  
  
  /// Initialize array of action/Patrol messages.
  /**
   * It allocates the memory for the number of elements and calls
   * turtlebot3_msgs__action__Patrol_Feedback__init()
   * for each element of the array.
   * \param[in,out] array The allocated array pointer.
   * \param[in] size The size / capacity of the array.
   * \return true if initialization was successful, otherwise false
   * If the array pointer is valid and the size is zero it is guaranteed
   # to return true.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_Feedback__Sequence__init(turtlebot3_msgs__action__Patrol_Feedback__Sequence * array, size_t size);
  
  /// Finalize array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_Feedback__fini()
   * for each element of the array and frees the memory for the number of
   * elements.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_Feedback__Sequence__fini(turtlebot3_msgs__action__Patrol_Feedback__Sequence * array);
  
  /// Create array of action/Patrol messages.
  /**
   * It allocates the memory for the array and calls
   * turtlebot3_msgs__action__Patrol_Feedback__Sequence__init().
   * \param[in] size The size / capacity of the array.
   * \return The pointer to the initialized array if successful, otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_Feedback__Sequence *
  turtlebot3_msgs__action__Patrol_Feedback__Sequence__create(size_t size);
  
  /// Destroy array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_Feedback__Sequence__fini()
   * on the array,
   * and frees the memory of the array.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_Feedback__Sequence__destroy(turtlebot3_msgs__action__Patrol_Feedback__Sequence * array);
  
  /// Initialize action/Patrol message.
  /**
   * If the init function is called twice for the same message without
   * calling fini inbetween previously allocated memory will be leaked.
   * \param[in,out] msg The previously allocated message pointer.
   * Fields without a default value will not be initialized by this function.
   * You might want to call memset(msg, 0, sizeof(
   * turtlebot3_msgs__action__Patrol_SendGoal_Request
   * )) before or use
   * turtlebot3_msgs__action__Patrol_SendGoal_Request__create()
   * to allocate and initialize the message.
   * \return true if initialization was successful, otherwise false
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_SendGoal_Request__init(turtlebot3_msgs__action__Patrol_SendGoal_Request * msg);
  
  /// Finalize action/Patrol message.
  /**
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_SendGoal_Request__fini(turtlebot3_msgs__action__Patrol_SendGoal_Request * msg);
  
  /// Create action/Patrol message.
  /**
   * It allocates the memory for the message, sets the memory to zero, and
   * calls
   * turtlebot3_msgs__action__Patrol_SendGoal_Request__init().
   * \return The pointer to the initialized message if successful,
   * otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_SendGoal_Request *
  turtlebot3_msgs__action__Patrol_SendGoal_Request__create();
  
  /// Destroy action/Patrol message.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_SendGoal_Request__fini()
   * and frees the memory of the message.
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_SendGoal_Request__destroy(turtlebot3_msgs__action__Patrol_SendGoal_Request * msg);
  
  
  /// Initialize array of action/Patrol messages.
  /**
   * It allocates the memory for the number of elements and calls
   * turtlebot3_msgs__action__Patrol_SendGoal_Request__init()
   * for each element of the array.
   * \param[in,out] array The allocated array pointer.
   * \param[in] size The size / capacity of the array.
   * \return true if initialization was successful, otherwise false
   * If the array pointer is valid and the size is zero it is guaranteed
   # to return true.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_SendGoal_Request__Sequence__init(turtlebot3_msgs__action__Patrol_SendGoal_Request__Sequence * array, size_t size);
  
  /// Finalize array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_SendGoal_Request__fini()
   * for each element of the array and frees the memory for the number of
   * elements.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_SendGoal_Request__Sequence__fini(turtlebot3_msgs__action__Patrol_SendGoal_Request__Sequence * array);
  
  /// Create array of action/Patrol messages.
  /**
   * It allocates the memory for the array and calls
   * turtlebot3_msgs__action__Patrol_SendGoal_Request__Sequence__init().
   * \param[in] size The size / capacity of the array.
   * \return The pointer to the initialized array if successful, otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_SendGoal_Request__Sequence *
  turtlebot3_msgs__action__Patrol_SendGoal_Request__Sequence__create(size_t size);
  
  /// Destroy array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_SendGoal_Request__Sequence__fini()
   * on the array,
   * and frees the memory of the array.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_SendGoal_Request__Sequence__destroy(turtlebot3_msgs__action__Patrol_SendGoal_Request__Sequence * array);
  
  /// Initialize action/Patrol message.
  /**
   * If the init function is called twice for the same message without
   * calling fini inbetween previously allocated memory will be leaked.
   * \param[in,out] msg The previously allocated message pointer.
   * Fields without a default value will not be initialized by this function.
   * You might want to call memset(msg, 0, sizeof(
   * turtlebot3_msgs__action__Patrol_SendGoal_Response
   * )) before or use
   * turtlebot3_msgs__action__Patrol_SendGoal_Response__create()
   * to allocate and initialize the message.
   * \return true if initialization was successful, otherwise false
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_SendGoal_Response__init(turtlebot3_msgs__action__Patrol_SendGoal_Response * msg);
  
  /// Finalize action/Patrol message.
  /**
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_SendGoal_Response__fini(turtlebot3_msgs__action__Patrol_SendGoal_Response * msg);
  
  /// Create action/Patrol message.
  /**
   * It allocates the memory for the message, sets the memory to zero, and
   * calls
   * turtlebot3_msgs__action__Patrol_SendGoal_Response__init().
   * \return The pointer to the initialized message if successful,
   * otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_SendGoal_Response *
  turtlebot3_msgs__action__Patrol_SendGoal_Response__create();
  
  /// Destroy action/Patrol message.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_SendGoal_Response__fini()
   * and frees the memory of the message.
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_SendGoal_Response__destroy(turtlebot3_msgs__action__Patrol_SendGoal_Response * msg);
  
  
  /// Initialize array of action/Patrol messages.
  /**
   * It allocates the memory for the number of elements and calls
   * turtlebot3_msgs__action__Patrol_SendGoal_Response__init()
   * for each element of the array.
   * \param[in,out] array The allocated array pointer.
   * \param[in] size The size / capacity of the array.
   * \return true if initialization was successful, otherwise false
   * If the array pointer is valid and the size is zero it is guaranteed
   # to return true.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_SendGoal_Response__Sequence__init(turtlebot3_msgs__action__Patrol_SendGoal_Response__Sequence * array, size_t size);
  
  /// Finalize array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_SendGoal_Response__fini()
   * for each element of the array and frees the memory for the number of
   * elements.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_SendGoal_Response__Sequence__fini(turtlebot3_msgs__action__Patrol_SendGoal_Response__Sequence * array);
  
  /// Create array of action/Patrol messages.
  /**
   * It allocates the memory for the array and calls
   * turtlebot3_msgs__action__Patrol_SendGoal_Response__Sequence__init().
   * \param[in] size The size / capacity of the array.
   * \return The pointer to the initialized array if successful, otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_SendGoal_Response__Sequence *
  turtlebot3_msgs__action__Patrol_SendGoal_Response__Sequence__create(size_t size);
  
  /// Destroy array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_SendGoal_Response__Sequence__fini()
   * on the array,
   * and frees the memory of the array.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_SendGoal_Response__Sequence__destroy(turtlebot3_msgs__action__Patrol_SendGoal_Response__Sequence * array);
  
  /// Initialize action/Patrol message.
  /**
   * If the init function is called twice for the same message without
   * calling fini inbetween previously allocated memory will be leaked.
   * \param[in,out] msg The previously allocated message pointer.
   * Fields without a default value will not be initialized by this function.
   * You might want to call memset(msg, 0, sizeof(
   * turtlebot3_msgs__action__Patrol_GetResult_Request
   * )) before or use
   * turtlebot3_msgs__action__Patrol_GetResult_Request__create()
   * to allocate and initialize the message.
   * \return true if initialization was successful, otherwise false
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_GetResult_Request__init(turtlebot3_msgs__action__Patrol_GetResult_Request * msg);
  
  /// Finalize action/Patrol message.
  /**
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_GetResult_Request__fini(turtlebot3_msgs__action__Patrol_GetResult_Request * msg);
  
  /// Create action/Patrol message.
  /**
   * It allocates the memory for the message, sets the memory to zero, and
   * calls
   * turtlebot3_msgs__action__Patrol_GetResult_Request__init().
   * \return The pointer to the initialized message if successful,
   * otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_GetResult_Request *
  turtlebot3_msgs__action__Patrol_GetResult_Request__create();
  
  /// Destroy action/Patrol message.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_GetResult_Request__fini()
   * and frees the memory of the message.
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_GetResult_Request__destroy(turtlebot3_msgs__action__Patrol_GetResult_Request * msg);
  
  
  /// Initialize array of action/Patrol messages.
  /**
   * It allocates the memory for the number of elements and calls
   * turtlebot3_msgs__action__Patrol_GetResult_Request__init()
   * for each element of the array.
   * \param[in,out] array The allocated array pointer.
   * \param[in] size The size / capacity of the array.
   * \return true if initialization was successful, otherwise false
   * If the array pointer is valid and the size is zero it is guaranteed
   # to return true.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_GetResult_Request__Sequence__init(turtlebot3_msgs__action__Patrol_GetResult_Request__Sequence * array, size_t size);
  
  /// Finalize array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_GetResult_Request__fini()
   * for each element of the array and frees the memory for the number of
   * elements.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_GetResult_Request__Sequence__fini(turtlebot3_msgs__action__Patrol_GetResult_Request__Sequence * array);
  
  /// Create array of action/Patrol messages.
  /**
   * It allocates the memory for the array and calls
   * turtlebot3_msgs__action__Patrol_GetResult_Request__Sequence__init().
   * \param[in] size The size / capacity of the array.
   * \return The pointer to the initialized array if successful, otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_GetResult_Request__Sequence *
  turtlebot3_msgs__action__Patrol_GetResult_Request__Sequence__create(size_t size);
  
  /// Destroy array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_GetResult_Request__Sequence__fini()
   * on the array,
   * and frees the memory of the array.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_GetResult_Request__Sequence__destroy(turtlebot3_msgs__action__Patrol_GetResult_Request__Sequence * array);
  
  /// Initialize action/Patrol message.
  /**
   * If the init function is called twice for the same message without
   * calling fini inbetween previously allocated memory will be leaked.
   * \param[in,out] msg The previously allocated message pointer.
   * Fields without a default value will not be initialized by this function.
   * You might want to call memset(msg, 0, sizeof(
   * turtlebot3_msgs__action__Patrol_GetResult_Response
   * )) before or use
   * turtlebot3_msgs__action__Patrol_GetResult_Response__create()
   * to allocate and initialize the message.
   * \return true if initialization was successful, otherwise false
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_GetResult_Response__init(turtlebot3_msgs__action__Patrol_GetResult_Response * msg);
  
  /// Finalize action/Patrol message.
  /**
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_GetResult_Response__fini(turtlebot3_msgs__action__Patrol_GetResult_Response * msg);
  
  /// Create action/Patrol message.
  /**
   * It allocates the memory for the message, sets the memory to zero, and
   * calls
   * turtlebot3_msgs__action__Patrol_GetResult_Response__init().
   * \return The pointer to the initialized message if successful,
   * otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_GetResult_Response *
  turtlebot3_msgs__action__Patrol_GetResult_Response__create();
  
  /// Destroy action/Patrol message.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_GetResult_Response__fini()
   * and frees the memory of the message.
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_GetResult_Response__destroy(turtlebot3_msgs__action__Patrol_GetResult_Response * msg);
  
  
  /// Initialize array of action/Patrol messages.
  /**
   * It allocates the memory for the number of elements and calls
   * turtlebot3_msgs__action__Patrol_GetResult_Response__init()
   * for each element of the array.
   * \param[in,out] array The allocated array pointer.
   * \param[in] size The size / capacity of the array.
   * \return true if initialization was successful, otherwise false
   * If the array pointer is valid and the size is zero it is guaranteed
   # to return true.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_GetResult_Response__Sequence__init(turtlebot3_msgs__action__Patrol_GetResult_Response__Sequence * array, size_t size);
  
  /// Finalize array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_GetResult_Response__fini()
   * for each element of the array and frees the memory for the number of
   * elements.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_GetResult_Response__Sequence__fini(turtlebot3_msgs__action__Patrol_GetResult_Response__Sequence * array);
  
  /// Create array of action/Patrol messages.
  /**
   * It allocates the memory for the array and calls
   * turtlebot3_msgs__action__Patrol_GetResult_Response__Sequence__init().
   * \param[in] size The size / capacity of the array.
   * \return The pointer to the initialized array if successful, otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_GetResult_Response__Sequence *
  turtlebot3_msgs__action__Patrol_GetResult_Response__Sequence__create(size_t size);
  
  /// Destroy array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_GetResult_Response__Sequence__fini()
   * on the array,
   * and frees the memory of the array.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_GetResult_Response__Sequence__destroy(turtlebot3_msgs__action__Patrol_GetResult_Response__Sequence * array);
  
  /// Initialize action/Patrol message.
  /**
   * If the init function is called twice for the same message without
   * calling fini inbetween previously allocated memory will be leaked.
   * \param[in,out] msg The previously allocated message pointer.
   * Fields without a default value will not be initialized by this function.
   * You might want to call memset(msg, 0, sizeof(
   * turtlebot3_msgs__action__Patrol_FeedbackMessage
   * )) before or use
   * turtlebot3_msgs__action__Patrol_FeedbackMessage__create()
   * to allocate and initialize the message.
   * \return true if initialization was successful, otherwise false
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_FeedbackMessage__init(turtlebot3_msgs__action__Patrol_FeedbackMessage * msg);
  
  /// Finalize action/Patrol message.
  /**
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_FeedbackMessage__fini(turtlebot3_msgs__action__Patrol_FeedbackMessage * msg);
  
  /// Create action/Patrol message.
  /**
   * It allocates the memory for the message, sets the memory to zero, and
   * calls
   * turtlebot3_msgs__action__Patrol_FeedbackMessage__init().
   * \return The pointer to the initialized message if successful,
   * otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_FeedbackMessage *
  turtlebot3_msgs__action__Patrol_FeedbackMessage__create();
  
  /// Destroy action/Patrol message.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_FeedbackMessage__fini()
   * and frees the memory of the message.
   * \param[in,out] msg The allocated message pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_FeedbackMessage__destroy(turtlebot3_msgs__action__Patrol_FeedbackMessage * msg);
  
  
  /// Initialize array of action/Patrol messages.
  /**
   * It allocates the memory for the number of elements and calls
   * turtlebot3_msgs__action__Patrol_FeedbackMessage__init()
   * for each element of the array.
   * \param[in,out] array The allocated array pointer.
   * \param[in] size The size / capacity of the array.
   * \return true if initialization was successful, otherwise false
   * If the array pointer is valid and the size is zero it is guaranteed
   # to return true.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  bool
  turtlebot3_msgs__action__Patrol_FeedbackMessage__Sequence__init(turtlebot3_msgs__action__Patrol_FeedbackMessage__Sequence * array, size_t size);
  
  /// Finalize array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_FeedbackMessage__fini()
   * for each element of the array and frees the memory for the number of
   * elements.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_FeedbackMessage__Sequence__fini(turtlebot3_msgs__action__Patrol_FeedbackMessage__Sequence * array);
  
  /// Create array of action/Patrol messages.
  /**
   * It allocates the memory for the array and calls
   * turtlebot3_msgs__action__Patrol_FeedbackMessage__Sequence__init().
   * \param[in] size The size / capacity of the array.
   * \return The pointer to the initialized array if successful, otherwise NULL
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  turtlebot3_msgs__action__Patrol_FeedbackMessage__Sequence *
  turtlebot3_msgs__action__Patrol_FeedbackMessage__Sequence__create(size_t size);
  
  /// Destroy array of action/Patrol messages.
  /**
   * It calls
   * turtlebot3_msgs__action__Patrol_FeedbackMessage__Sequence__fini()
   * on the array,
   * and frees the memory of the array.
   * \param[in,out] array The initialized array pointer.
   */
  ROSIDL_GENERATOR_C_PUBLIC_turtlebot3_msgs
  void
  turtlebot3_msgs__action__Patrol_FeedbackMessage__Sequence__destroy(turtlebot3_msgs__action__Patrol_FeedbackMessage__Sequence * array);
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif  // TURTLEBOT3_MSGS__ACTION__DETAIL__PATROL__FUNCTIONS_H_
  