src/lib/error.h
branchnew-lib-errors
changeset 219 cefec18b8268
parent 218 5229a5d098b2
equal deleted inserted replaced
218:5229a5d098b2 219:cefec18b8268
    87     { (code), (name), &error_extra_errno, NULL }
    87     { (code), (name), &error_extra_errno, NULL }
    88 
    88 
    89 #define ERROR_TYPE_STRING(code, name) \
    89 #define ERROR_TYPE_STRING(code, name) \
    90     { (code), (name), &error_extra_string, NULL }
    90     { (code), (name), &error_extra_string, NULL }
    91 
    91 
    92 #define ERROR_TYPE_CUSTOM(code, name, type) \
    92 #define ERROR_TYPE_EXTRA(code, name, type) \
    93     { (code), (name), (type), NULL }
    93     { (code), (name), (type), NULL }
    94 
    94 
    95 #define ERROR_TYPE_SUB(code, name, sub) \
    95 #define ERROR_TYPE_SUB(code, name, sub) \
    96     { (code), (name), NULL, (sub) }
    96     { (code), (name), NULL, (sub) }
    97 
    97 
   237 #define _ERROR_SET_EXTRA(err_state, err_list, err_code, err_extra_type, _err_extra_field_, err_extra_value) \
   237 #define _ERROR_SET_EXTRA(err_state, err_list, err_code, err_extra_type, _err_extra_field_, err_extra_value) \
   238         error_set_extra(err_state, err_list, err_code, err_extra_type, ((union error_extra) { ._err_extra_field_ = (err_extra_value)}))
   238         error_set_extra(err_state, err_list, err_code, err_extra_type, ((union error_extra) { ._err_extra_field_ = (err_extra_value)}))
   239 
   239 
   240 /** Set the error with extra info as integer */
   240 /** Set the error with extra info as integer */
   241 #define SET_ERROR_EXTRA(err_state, err_list, err_code, err_extra_type, err_extra_int) ({ \
   241 #define SET_ERROR_EXTRA(err_state, err_list, err_code, err_extra_type, err_extra_int) ({ \
   242         _ERROR_SET_EXTRA(err_state, err_list, err_code, err_extra_type, int_, err_extra);  \
   242         _ERROR_SET_EXTRA(err_state, err_list, err_code, err_extra_type, int_, err_extra_int);  \
   243         err_code; })
   243         err_code; })
   244 
   244 
   245 /** Set the error with extra info as the libc errno */
   245 /** Set the error with extra info as the libc errno */
   246 #define SET_ERROR_ERRNO(err_state, err_list, err_code) ({ \
   246 #define SET_ERROR_ERRNO(err_state, err_list, err_code) ({ \
   247         _ERROR_SET_EXTRA(err_state, err_list, err_code, &error_extra_errno, int_, errno); \
   247         _ERROR_SET_EXTRA(err_state, err_list, err_code, &error_extra_errno, int_, errno); \