20#ifndef WG14_RESULT_STATUS_CODE_GENERIC_H
21#define WG14_RESULT_STATUS_CODE_GENERIC_H
131 typedef struct WG14_RESULT_PREFIX(status_code_generic_s)
147 struct WG14_RESULT_PREFIX(status_code_domain_vtable_generic_code_args)
179 struct WG14_RESULT_PREFIX(status_code_domain_vtable_generic_code_args)
181 memset(&args, 0,
sizeof(args));
182 args.code = secondary;
190 memset(&args, 0,
sizeof(args));
217 WG14_RESULT_PREFIX(status_code_generic_make)(errc);
226#define status_code_equivalent(primary, secondary) \
227 WG14_RESULT_PREFIX(status_code_equivalent)(&(primary).base, &(secondary).base)
230#define status_code_equivalent_errc(primary, errc) \
231 WG14_RESULT_PREFIX(status_code_equivalent_errc)(&(primary).base, (errc))
238#if WG14_RESULT_ENABLE_HEADER_ONLY
239#include "../../src/wg14_result/status_code_generic.c"
#define WG14_RESULT_NULLPTR
#define WG14_RESULT_INLINE
#define WG14_RESULT_EXTERN
#define WG14_RESULT_SINGLETON
#define WG14_RESULT_VTABLE_INVOKE_API(domain, name,...)
#define status_code_equivalent(primary, secondary)
True if the status codes are semantically equivalent in any way (convenience macro)....
#define status_code_equivalent_errc(primary, errc)
True if the status code is semantically equivalent in any way to the generic enum value (convenience ...
status_code_domain * status_code_generic_domain(void)
Retrieve the domain for status_code_generic
status_code_errc
The generic error coding (POSIX)
@ status_code_errc_invalid_argument
@ status_code_errc_no_buffer_space
@ status_code_errc_not_a_socket
@ status_code_errc_value_too_large
@ status_code_errc_too_many_links
@ status_code_errc_operation_not_permitted
@ status_code_errc_success
@ status_code_errc_read_only_file_system
@ status_code_errc_no_stream_resources
@ status_code_errc_unknown
@ status_code_errc_operation_not_supported
@ status_code_errc_resource_unavailable_try_again
@ status_code_errc_not_a_directory
@ status_code_errc_owner_dead
@ status_code_errc_not_connected
@ status_code_errc_too_many_files_open_in_system
@ status_code_errc_network_reset
@ status_code_errc_host_unreachable
@ status_code_errc_too_many_files_open
@ status_code_errc_io_error
@ status_code_errc_address_not_available
@ status_code_errc_protocol_error
@ status_code_errc_state_not_recoverable
@ status_code_errc_directory_not_empty
@ status_code_errc_cross_device_link
@ status_code_errc_wrong_protocol_type
@ status_code_errc_not_supported
@ status_code_errc_executable_format_error
@ status_code_errc_no_child_process
@ status_code_errc_illegal_byte_sequence
@ status_code_errc_not_enough_memory
@ status_code_errc_file_too_large
@ status_code_errc_identifier_removed
@ status_code_errc_connection_reset
@ status_code_errc_interrupted
@ status_code_errc_is_a_directory
@ status_code_errc_inappropriate_io_control_operation
@ status_code_errc_too_many_symbolic_link_levels
@ status_code_errc_no_lock_available
@ status_code_errc_permission_denied
@ status_code_errc_bad_message
@ status_code_errc_no_such_process
@ status_code_errc_bad_file_descriptor
@ status_code_errc_operation_would_block
@ status_code_errc_file_exists
@ status_code_errc_address_family_not_supported
@ status_code_errc_bad_address
@ status_code_errc_connection_aborted
@ status_code_errc_text_file_busy
@ status_code_errc_timed_out
@ status_code_errc_network_down
@ status_code_errc_no_message
@ status_code_errc_already_connected
@ status_code_errc_argument_out_of_domain
@ status_code_errc_connection_refused
@ status_code_errc_function_not_supported
@ status_code_errc_no_link
@ status_code_errc_operation_canceled
@ status_code_errc_no_such_file_or_directory
@ status_code_errc_no_protocol_option
@ status_code_errc_resource_deadlock_would_occur
@ status_code_errc_no_space_on_device
@ status_code_errc_network_unreachable
@ status_code_errc_no_such_device
@ status_code_errc_result_out_of_range
@ status_code_errc_argument_list_too_long
@ status_code_errc_operation_in_progress
@ status_code_errc_message_size
@ status_code_errc_protocol_not_supported
@ status_code_errc_not_a_stream
@ status_code_errc_connection_already_in_progress
@ status_code_errc_stream_timeout
@ status_code_errc_device_or_resource_busy
@ status_code_errc_destination_address_required
@ status_code_errc_invalid_seek
@ status_code_errc_broken_pipe
@ status_code_errc_filename_too_long
@ status_code_errc_address_in_use
@ status_code_errc_no_such_device_or_address
The functions defined by a status code domain, kept ABI compatible with a C++ vtable.
const status_code_untyped * code
enum status_code_errc value
Type of an untyped status code.
status_code_domain * domain