in inc/umock_c/umock_c_internal.h [1380:1528]
return_type modifiers name(MU_IF(MU_COUNT_ARG(__VA_ARGS__),,void) MU_FOR_EACH_2_COUNTED(ARG_IN_SIGNATURE, __VA_ARGS__)) \
{ \
UMOCKCALL_HANDLE mock_call; \
UMOCKCALL_HANDLE matched_call; \
MU_IF(IS_NOT_VOID(return_type), \
MU_C2(COPY_RETURN_VALUE_FUNC_TYPE, name) copy_return_value_func = MU_C2(copy_return_value_, name); \
(void)copy_return_value_func; \
unsigned int result_value_set_C8417226_7442_49B4_BBB9_9CA816A21EB7 = 0; \
unsigned int fail_result_value_set_C8417226_7442_49B4_BBB9_9CA816A21EB7 = 0; \
void* captured_return_value_C8417226_7442_49B4_BBB9_9CA816A21EB7 = NULL;,) \
MU_IF(IS_NOT_VOID(return_type),TRACK_CREATE_FUNC_TYPE track_create_destroy_pair_malloc_local_C8417226_7442_49B4_BBB9_9CA816A21EB7 = MU_C2(track_create_destroy_pair_malloc_,name); \
PAIRED_HANDLES* used_paired_handles_local_C8417226_7442_49B4_BBB9_9CA816A21EB7 = MU_C2(used_paired_handles_,name); \
const char* return_type_string_C8417226_7442_49B4_BBB9_9CA816A21EB7 = MU_TOSTRING(return_type); \
(void)return_type_string_C8417226_7442_49B4_BBB9_9CA816A21EB7; \
(void)track_create_destroy_pair_malloc_local_C8417226_7442_49B4_BBB9_9CA816A21EB7; \
(void)used_paired_handles_local_C8417226_7442_49B4_BBB9_9CA816A21EB7;,) \
MU_IF(IS_NOT_VOID(return_type),return_type result_C8417226_7442_49B4_BBB9_9CA816A21EB7 = MU_C2(get_mock_call_return_values_,name)()->success_value;,) \
MU_C2(mock_call_,name)* matched_call_data; \
MU_C2(mock_call_,name)* mock_call_data = (MU_C2(mock_call_,name)*)umockalloc_malloc(sizeof(MU_C2(mock_call_,name))); \
MU_FOR_EACH_2(COPY_ARG_TO_MOCK_STRUCT, __VA_ARGS__) \
MU_FOR_EACH_2(MARK_ARG_AS_NOT_IGNORED, __VA_ARGS__) \
MU_FOR_EACH_2_COUNTED(CLEAR_OUT_ARG_BUFFERS, __VA_ARGS__) \
MU_FOR_EACH_2_COUNTED(CLEAR_VALIDATE_ARG_BUFFERS, __VA_ARGS__) \
MU_FOR_EACH_2(CLEAR_VALIDATE_ARG_VALUE, __VA_ARGS__) \
MU_FOR_EACH_2(CLEAR_CAPTURE_ARG_VALUE, __VA_ARGS__) \
MU_FOR_EACH_2(CLEAR_OVERRIDE_ARGUMENT_TYPE, __VA_ARGS__) \
MU_IF(IS_NOT_VOID(return_type),mock_call_data->return_value_set = RETURN_VALUE_NOT_SET; \
mock_call_data->captured_return_value = NULL; \
mock_call_data->fail_return_value_set = FAIL_RETURN_VALUE_NOT_SET;,) \
mock_call = umockcall_create(#name, mock_call_data, MU_C2(mock_call_data_copy_func_,name), MU_C2(mock_call_data_free_func_,name), MU_C2(mock_call_data_stringify_,name), MU_C2(mock_call_data_are_equal_,name)); \
if (mock_call == NULL) \
{ \
MU_IF(IS_NOT_VOID(return_type),COPY_RETURN_VALUE(return_type, name),) \
UMOCK_LOG("Could not create a mock call in the actual call for %s.", MU_TOSTRING(name)); \
umock_c_indicate_error(UMOCK_C_ERROR); \
} \
else \
{ \
if (umock_c_add_actual_call(mock_call, &matched_call) != 0) \
{ \
umockcall_destroy(mock_call); \
UMOCK_LOG("Could not add an actual call for %s.", MU_TOSTRING(name)); \
umock_c_indicate_error(UMOCK_C_COMPARE_CALL_ERROR); \
} \
if (matched_call != NULL) \
{ \
matched_call_data = (MU_C2(mock_call_,name)*)umockcall_get_call_data(matched_call); \
if (matched_call_data != NULL) \
{ \
MU_FOR_EACH_2(COPY_CAPTURED_ARGUMENT_VALUE, __VA_ARGS__) \
} \
MU_IF(IS_NOT_VOID(return_type),if (matched_call_data != NULL) \
{ \
captured_return_value_C8417226_7442_49B4_BBB9_9CA816A21EB7 = (void*)matched_call_data->captured_return_value; \
if (umockcall_get_fail_call(matched_call)) \
{ \
if (matched_call_data->fail_return_value_set == FAIL_RETURN_VALUE_SET) \
{ \
UMOCK_COPY_INTERNAL(result_C8417226_7442_49B4_BBB9_9CA816A21EB7, matched_call_data->fail_return_value); \
} \
else \
{ \
UMOCK_COPY_INTERNAL(result_C8417226_7442_49B4_BBB9_9CA816A21EB7, MU_C2(get_mock_call_return_values_, name)()->failure_value); \
} \
result_value_set_C8417226_7442_49B4_BBB9_9CA816A21EB7 = 1; \
fail_result_value_set_C8417226_7442_49B4_BBB9_9CA816A21EB7 = 1; \
} \
else if (matched_call_data->return_value_set == RETURN_VALUE_SET) \
{ \
UMOCK_COPY_INTERNAL(result_C8417226_7442_49B4_BBB9_9CA816A21EB7, matched_call_data->return_value); \
result_value_set_C8417226_7442_49B4_BBB9_9CA816A21EB7 = 1; \
} \
else \
{ \
if (MU_C2(mock_hook_, name) != NULL) \
{ \
MU_IF(IS_NOT_VOID(return_type),return_type temp_result_C8417226_7442_49B4_BBB9_9CA816A21EB7 =,) MU_C2(mock_hook_, name)(MU_FOR_EACH_2_COUNTED(ARG_NAME_ONLY_IN_CALL, __VA_ARGS__)); \
MU_IF(IS_NOT_VOID(return_type),UMOCK_COPY_INTERNAL(result_C8417226_7442_49B4_BBB9_9CA816A21EB7, temp_result_C8417226_7442_49B4_BBB9_9CA816A21EB7);,) \
MU_IF(IS_NOT_VOID(return_type),result_value_set_C8417226_7442_49B4_BBB9_9CA816A21EB7 = 1;,) \
} \
} \
}, \
if (MU_C2(mock_hook_, name) != NULL) \
{ \
MU_C2(mock_hook_, name)(MU_FOR_EACH_2_COUNTED(ARG_NAME_ONLY_IN_CALL, __VA_ARGS__)); \
} \
) \
MU_IF(MU_COUNT_ARG(__VA_ARGS__), MU_FOR_EACH_2_COUNTED(COPY_OUT_ARG_VALUE_FROM_MATCHED_CALL, __VA_ARGS__),) \
} \
else \
{ \
if (MU_C2(mock_hook_, name) != NULL) \
{ \
MU_IF(IS_NOT_VOID(return_type),return_type temp_result_C8417226_7442_49B4_BBB9_9CA816A21EB7 =,) MU_C2(mock_hook_, name)(MU_FOR_EACH_2_COUNTED(ARG_NAME_ONLY_IN_CALL, __VA_ARGS__)); \
MU_IF(IS_NOT_VOID(return_type),UMOCK_COPY_INTERNAL(result_C8417226_7442_49B4_BBB9_9CA816A21EB7, temp_result_C8417226_7442_49B4_BBB9_9CA816A21EB7);,) \
MU_IF(IS_NOT_VOID(return_type),result_value_set_C8417226_7442_49B4_BBB9_9CA816A21EB7 = 1;,) \
} \
} \
} \
MU_IF(MU_COUNT_ARG(__VA_ARGS__), if (MU_C2(track_create_destroy_pair_free_, name) != NULL) \
{ \
if (MU_C2(track_create_destroy_pair_free_, name)(MU_C2(used_paired_handles_, name), (void*)&ONLY_FIRST_ARG(__VA_ARGS__, 1)) != 0) \
{ \
UMOCK_LOG("Could not track the destroy call for %s.", MU_TOSTRING(name)); \
umock_c_indicate_error(UMOCK_C_ERROR); \
} \
},) \
{ \
#define UMOCK_GENERATE_DEFAULT_RETURNS(success_return_value, failure_return_value) \
= { success_return_value, failure_return_value }; \
if (!result->initialized) \
{ \
result->success_value = temp.success_value; \
result->failure_value = temp.failure_value; \
} \
return result; \
} \
/* Codes_SRS_UMOCK_C_LIB_01_188: [ The create call shall have a non-void return type. ]*/
/* Codes_SRS_UMOCK_C_LIB_01_191: [ At each create_call a memory block shall be allocated so that it can be reported as a leak by any memory checker. ]*/
/* Codes_SRS_UMOCK_C_LIB_01_192: [ If any error occurs during the create_call related then umock_c shall raise an error with the code UMOCK_C_ERROR. ]*/
/* Codes_SRS_UMOCK_C_LIB_01_204: [ Tracking of paired calls shall not be done if the actual call to the create_call is using the SetFailReturn call modifier. ]*/
#define MOCKABLE_FUNCTION_UMOCK_INTERNAL_WITH_MOCK_DECL(has_returns, eat_returns, modifiers, return_type, name, ...) \
MOCKABLE_FUNCTION_UMOCK_INTERNAL_WITH_MOCK_NO_CODE_DECL(has_returns, eat_returns, return_type, name, __VA_ARGS__) \
#define MOCKABLE_FUNCTION_UMOCK_INTERNAL_WITH_MOCK_IMPL(has_returns, modifiers, return_type, name, ...) \
MOCKABLE_FUNCTION_UMOCK_INTERNAL_WITH_MOCK_NO_CODE_IMPL(has_returns, return_type, name, __VA_ARGS__) \
MOCKABLE_FUNCTION_BODY_WITHOUT_RETURN_IMPL(modifiers, return_type, name, __VA_ARGS__) \
MU_IF(IS_NOT_VOID(return_type), \
if (result_value_set_C8417226_7442_49B4_BBB9_9CA816A21EB7 == 0) \
{ \
COPY_RETURN_VALUE(return_type, name) \
}; \
if (captured_return_value_C8417226_7442_49B4_BBB9_9CA816A21EB7 != NULL) \
{ \
(void)memcpy((void*)captured_return_value_C8417226_7442_49B4_BBB9_9CA816A21EB7, (void*)&result_C8417226_7442_49B4_BBB9_9CA816A21EB7, sizeof(result_C8417226_7442_49B4_BBB9_9CA816A21EB7)); \
} \
if ((track_create_destroy_pair_malloc_local_C8417226_7442_49B4_BBB9_9CA816A21EB7 != NULL) && (fail_result_value_set_C8417226_7442_49B4_BBB9_9CA816A21EB7 == 0)) \
{ \
if (track_create_destroy_pair_malloc_local_C8417226_7442_49B4_BBB9_9CA816A21EB7(used_paired_handles_local_C8417226_7442_49B4_BBB9_9CA816A21EB7, (const void*)&result_C8417226_7442_49B4_BBB9_9CA816A21EB7, return_type_string_C8417226_7442_49B4_BBB9_9CA816A21EB7, sizeof(result_C8417226_7442_49B4_BBB9_9CA816A21EB7)) != 0) \
{ \
UMOCK_LOG("Could not track the create call for %s.", MU_TOSTRING(name)); \
umock_c_indicate_error(UMOCK_C_ERROR); \
} \
} \
return result_C8417226_7442_49B4_BBB9_9CA816A21EB7;,) \
} \