17 #ifndef RCUTILS__ERROR_HANDLING_H_ 18 #define RCUTILS__ERROR_HANDLING_H_ 50 #define RCUTILS_SAFE_FWRITE_TO_STDERR(msg) fwrite(msg, sizeof(char), strnlen_s(msg, 4096), stderr) 52 #define RCUTILS_SAFE_FWRITE_TO_STDERR(msg) fwrite(msg, sizeof(char), strlen(msg), stderr) 103 const char * error_string,
const char * file,
size_t line_number,
rcutils_allocator_t allocator);
114 #define RCUTILS_CHECK_ARGUMENT_FOR_NULL(argument, error_return_type, allocator) \ 115 RCUTILS_CHECK_FOR_NULL_WITH_MSG(argument, #argument " argument is null", \ 116 return error_return_type, allocator) 128 #define RCUTILS_CHECK_FOR_NULL_WITH_MSG(value, msg, error_statement, allocator) \ 129 if (NULL == value) { \ 130 RCUTILS_SET_ERROR_MSG(msg, allocator); \ 145 #define RCUTILS_SET_ERROR_MSG(msg, allocator) \ 146 rcutils_set_error_state(msg, __FILE__, __LINE__, allocator); 157 #define RCUTILS_SET_ERROR_MSG_WITH_FORMAT_STRING(allocator, format_string, ...) \ 159 char * output_msg = NULL; \ 160 output_msg = rcutils_format_string(allocator, format_string, __VA_ARGS__); \ 162 RCUTILS_SET_ERROR_MSG(output_msg, allocator); \ 163 allocator.deallocate(output_msg, allocator.state); \ 165 RCUTILS_SAFE_FWRITE_TO_STDERR("Failed to allocate memory for error message\n"); \ 220 #endif // RCUTILS__ERROR_HANDLING_H_ const char * file
Definition: error_handling.h:41
void rcutils_set_error_state(const char *error_string, const char *file, size_t line_number, rcutils_allocator_t allocator)
Set the error message, as well as the file and line on which it occurred.
struct rcutils_error_state_t rcutils_error_state_t
Struct which encapsulates the error state set by RCUTILS_SET_ERROR_MSG().
const char * rcutils_get_error_string_safe(void)
Return the error message followed by , at <file>:<line> if set, else "error not set".
void rcutils_reset_error(void)
Reset the error state by clearing any previously set error state.
int rcutils_ret_t
Definition: rcutils_ret.h:23
Encapsulation of an allocator.
Definition: allocator.h:45
rcutils_ret_t rcutils_error_state_copy(const rcutils_error_state_t *src, rcutils_error_state_t *dst)
Copy an error state into a destination error state.
const char * message
Definition: error_handling.h:40
#define RCUTILS_WARN_UNUSED
Definition: macros.h:24
const char * rcutils_get_error_string(void)
Return the error message followed by , at <file>:<line>, or NULL.
void rcutils_error_state_fini(rcutils_error_state_t *error_state)
Finalizes a copied error state.
size_t line_number
Definition: error_handling.h:42
#define RCUTILS_PUBLIC
Definition: visibility_control.h:48
const rcutils_error_state_t * rcutils_get_error_state(void)
Return an rcutils_error_state_t which was set with rcutils_set_error_state().
rcutils_allocator_t allocator
Definition: error_handling.h:43
Struct which encapsulates the error state set by RCUTILS_SET_ERROR_MSG().
Definition: error_handling.h:38
bool rcutils_error_is_set(void)
Return true if the error is set, otherwise false.