1
0
mirror of https://github.com/meekrosoft/fff synced 2026-01-23 08:25:59 +01:00

Rename putdml to putd_backslash

This commit is contained in:
usr42
2017-01-26 20:47:06 +01:00
parent 4ccfd2681e
commit 3d0919b6e0

View File

@@ -57,17 +57,17 @@ def output_internal_helper_macros
end end
def define_return_sequence_helper def define_return_sequence_helper
putdml "#define SET_RETURN_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN)" putd_backslash "#define SET_RETURN_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN)"
indent { indent {
putdml "FUNCNAME##_fake.return_val_seq = ARRAY_POINTER;" putd_backslash "FUNCNAME##_fake.return_val_seq = ARRAY_POINTER;"
putd "FUNCNAME##_fake.return_val_seq_len = ARRAY_LEN;" putd "FUNCNAME##_fake.return_val_seq_len = ARRAY_LEN;"
} }
end end
def define_custom_fake_sequence_helper def define_custom_fake_sequence_helper
putdml "#define SET_CUSTOM_FAKE_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN)" putd_backslash "#define SET_CUSTOM_FAKE_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN)"
indent { indent {
putdml "FUNCNAME##_fake.custom_fake_seq = ARRAY_POINTER;" putd_backslash "FUNCNAME##_fake.custom_fake_seq = ARRAY_POINTER;"
putd "FUNCNAME##_fake.custom_fake_seq_len = ARRAY_LEN;" putd "FUNCNAME##_fake.custom_fake_seq_len = ARRAY_LEN;"
} }
end end
@@ -75,36 +75,36 @@ end
def define_reset_fake_macro def define_reset_fake_macro
puts puts
putd "/* Defining a function to reset a fake function */" putd "/* Defining a function to reset a fake function */"
putdml "#define RESET_FAKE(FUNCNAME) {" putd_backslash "#define RESET_FAKE(FUNCNAME) {"
indent { indent {
putdml "FUNCNAME##_reset();" putd_backslash "FUNCNAME##_reset();"
} }
putdml "}" putd_backslash "}"
puts puts
end end
def define_declare_arg_helper def define_declare_arg_helper
puts puts
putdml "#define DECLARE_ARG(type, n, FUNCNAME)" putd_backslash "#define DECLARE_ARG(type, n, FUNCNAME)"
indent { indent {
putdml "type arg##n##_val;" putd_backslash "type arg##n##_val;"
putd "type arg##n##_history[FFF_ARG_HISTORY_LEN];" putd "type arg##n##_history[FFF_ARG_HISTORY_LEN];"
} }
end end
def define_declare_all_func_common_helper def define_declare_all_func_common_helper
puts puts
putdml "#define DECLARE_ALL_FUNC_COMMON" putd_backslash "#define DECLARE_ALL_FUNC_COMMON"
indent { indent {
putdml "unsigned int call_count;" putd_backslash "unsigned int call_count;"
putdml "unsigned int arg_history_len;" putd_backslash "unsigned int arg_history_len;"
putdml "unsigned int arg_histories_dropped;" putd_backslash "unsigned int arg_histories_dropped;"
} }
end end
def define_save_arg_helper def define_save_arg_helper
puts puts
putdml "#define SAVE_ARG(FUNCNAME, n)" putd_backslash "#define SAVE_ARG(FUNCNAME, n)"
indent { indent {
putd "memcpy((void*)&FUNCNAME##_fake.arg##n##_val, (void*)&arg##n, sizeof(arg##n));" putd "memcpy((void*)&FUNCNAME##_fake.arg##n##_val, (void*)&arg##n, sizeof(arg##n));"
} }
@@ -112,7 +112,7 @@ end
def define_room_for_more_history def define_room_for_more_history
puts puts
putdml "#define ROOM_FOR_MORE_HISTORY(FUNCNAME)" putd_backslash "#define ROOM_FOR_MORE_HISTORY(FUNCNAME)"
indent { indent {
putd "FUNCNAME##_fake.call_count < FFF_ARG_HISTORY_LEN" putd "FUNCNAME##_fake.call_count < FFF_ARG_HISTORY_LEN"
} }
@@ -120,7 +120,7 @@ end
def define_save_arg_history_helper def define_save_arg_history_helper
puts puts
putdml "#define SAVE_ARG_HISTORY(FUNCNAME, ARGN)" putd_backslash "#define SAVE_ARG_HISTORY(FUNCNAME, ARGN)"
indent { indent {
putd "memcpy((void*)&FUNCNAME##_fake.arg##ARGN##_history[FUNCNAME##_fake.call_count], (void*)&arg##ARGN, sizeof(arg##ARGN));" putd "memcpy((void*)&FUNCNAME##_fake.arg##ARGN##_history[FUNCNAME##_fake.call_count], (void*)&arg##ARGN, sizeof(arg##ARGN));"
} }
@@ -128,7 +128,7 @@ end
def define_history_dropped_helper def define_history_dropped_helper
puts puts
putdml "#define HISTORY_DROPPED(FUNCNAME)" putd_backslash "#define HISTORY_DROPPED(FUNCNAME)"
indent { indent {
putd "FUNCNAME##_fake.arg_histories_dropped++" putd "FUNCNAME##_fake.arg_histories_dropped++"
} }
@@ -136,27 +136,27 @@ end
def define_value_function_variables_helper def define_value_function_variables_helper
puts puts
putdml "#define DECLARE_VALUE_FUNCTION_VARIABLES(RETURN_TYPE)" putd_backslash "#define DECLARE_VALUE_FUNCTION_VARIABLES(RETURN_TYPE)"
indent { indent {
putdml "RETURN_TYPE return_val;" putd_backslash "RETURN_TYPE return_val;"
putdml "int return_val_seq_len;" putd_backslash "int return_val_seq_len;"
putdml "int return_val_seq_idx;" putd_backslash "int return_val_seq_idx;"
putdml "RETURN_TYPE * return_val_seq;" putd_backslash "RETURN_TYPE * return_val_seq;"
} }
end end
def define_custom_fake_seq_variables_helper def define_custom_fake_seq_variables_helper
puts puts
putdml "#define DECLARE_CUSTOM_FAKE_SEQ_VARIABLES" putd_backslash "#define DECLARE_CUSTOM_FAKE_SEQ_VARIABLES"
indent { indent {
putdml "int custom_fake_seq_len;" putd_backslash "int custom_fake_seq_len;"
putdml "int custom_fake_seq_idx;" putd_backslash "int custom_fake_seq_idx;"
} }
end end
def define_increment_call_count_helper def define_increment_call_count_helper
puts puts
putdml "#define INCREMENT_CALL_COUNT(FUNCNAME)" putd_backslash "#define INCREMENT_CALL_COUNT(FUNCNAME)"
indent { indent {
putd "FUNCNAME##_fake.call_count++" putd "FUNCNAME##_fake.call_count++"
} }
@@ -164,19 +164,19 @@ end
def define_return_fake_result_helper def define_return_fake_result_helper
puts puts
putdml "#define RETURN_FAKE_RESULT(FUNCNAME)" putd_backslash "#define RETURN_FAKE_RESULT(FUNCNAME)"
indent { indent {
putdml "if (FUNCNAME##_fake.return_val_seq_len){ /* then its a sequence */" putd_backslash "if (FUNCNAME##_fake.return_val_seq_len){ /* then its a sequence */"
indent { indent {
putdml "if(FUNCNAME##_fake.return_val_seq_idx < FUNCNAME##_fake.return_val_seq_len) {" putd_backslash "if(FUNCNAME##_fake.return_val_seq_idx < FUNCNAME##_fake.return_val_seq_len) {"
indent { indent {
putdml "return FUNCNAME##_fake.return_val_seq[FUNCNAME##_fake.return_val_seq_idx++];" putd_backslash "return FUNCNAME##_fake.return_val_seq[FUNCNAME##_fake.return_val_seq_idx++];"
} }
putdml "}" putd_backslash "}"
putdml "return FUNCNAME##_fake.return_val_seq[FUNCNAME##_fake.return_val_seq_len-1]; /* return last element */" putd_backslash "return FUNCNAME##_fake.return_val_seq[FUNCNAME##_fake.return_val_seq_len-1]; /* return last element */"
} }
putdml "}" putd_backslash "}"
putdml "return FUNCNAME##_fake.return_val;" putd_backslash "return FUNCNAME##_fake.return_val;"
} }
end end
@@ -197,12 +197,12 @@ end
def define_reset_fake_helper def define_reset_fake_helper
puts puts
putdml "#define DEFINE_RESET_FUNCTION(FUNCNAME)" putd_backslash "#define DEFINE_RESET_FUNCTION(FUNCNAME)"
indent { indent {
putdml "void FUNCNAME##_reset(){" putd_backslash "void FUNCNAME##_reset(){"
indent { indent {
putdml "memset(&FUNCNAME##_fake, 0, sizeof(FUNCNAME##_fake));" putd_backslash "memset(&FUNCNAME##_fake, 0, sizeof(FUNCNAME##_fake));"
putdml "FUNCNAME##_fake.arg_history_len = FFF_ARG_HISTORY_LEN;" putd_backslash "FUNCNAME##_fake.arg_history_len = FFF_ARG_HISTORY_LEN;"
} }
putd "}" putd "}"
} }
@@ -217,7 +217,7 @@ def putd(str)
end end
#multiline putd which adds a \ at the end of the generated macro #multiline putd which adds a \ at the end of the generated macro
def putdml str def putd_backslash str
putd(str + " \\") putd(str + " \\")
end end
@@ -256,13 +256,13 @@ def output_macro(arg_count, has_varargs, is_value_function)
output_macro_header(define_macro_name, saved_arg_count, has_varargs, return_type) output_macro_header(define_macro_name, saved_arg_count, has_varargs, return_type)
indent { indent {
extern_c { extern_c {
putdml "FUNCNAME##_Fake FUNCNAME##_fake;" putd_backslash "FUNCNAME##_Fake FUNCNAME##_fake;"
putdml function_signature(saved_arg_count, has_varargs, is_value_function) + "{" putd_backslash function_signature(saved_arg_count, has_varargs, is_value_function) + "{"
indent { indent {
output_function_body(saved_arg_count, has_varargs, is_value_function) output_function_body(saved_arg_count, has_varargs, is_value_function)
} }
putdml "}" putd_backslash "}"
putdml "DEFINE_RESET_FUNCTION(FUNCNAME)" putd_backslash "DEFINE_RESET_FUNCTION(FUNCNAME)"
} }
} }
@@ -306,16 +306,16 @@ end
def output_variables(arg_count, has_varargs, is_value_function) def output_variables(arg_count, has_varargs, is_value_function)
in_struct{ in_struct{
arg_count.times { |argN| arg_count.times { |argN|
putdml "DECLARE_ARG(ARG#{argN}_TYPE, #{argN}, FUNCNAME)" putd_backslash "DECLARE_ARG(ARG#{argN}_TYPE, #{argN}, FUNCNAME)"
} }
putdml "DECLARE_ALL_FUNC_COMMON" putd_backslash "DECLARE_ALL_FUNC_COMMON"
putdml "DECLARE_VALUE_FUNCTION_VARIABLES(RETURN_TYPE)" unless not is_value_function putd_backslash "DECLARE_VALUE_FUNCTION_VARIABLES(RETURN_TYPE)" unless not is_value_function
putdml "DECLARE_CUSTOM_FAKE_SEQ_VARIABLES" putd_backslash "DECLARE_CUSTOM_FAKE_SEQ_VARIABLES"
output_custom_function_signature(arg_count, has_varargs, is_value_function) output_custom_function_signature(arg_count, has_varargs, is_value_function)
output_custom_function_array(arg_count, has_varargs, is_value_function) output_custom_function_array(arg_count, has_varargs, is_value_function)
} }
putdml "extern FUNCNAME##_Fake FUNCNAME##_fake;" putd_backslash "extern FUNCNAME##_Fake FUNCNAME##_fake;"
putdml "void FUNCNAME##_reset();" putd_backslash "void FUNCNAME##_reset();"
end end
#example: ARG0_TYPE arg0, ARG1_TYPE arg1 #example: ARG0_TYPE arg0, ARG1_TYPE arg1
@@ -338,14 +338,14 @@ def output_custom_function_signature(arg_count, has_varargs, is_value_function)
return_type = is_value_function ? "RETURN_TYPE" : "void" return_type = is_value_function ? "RETURN_TYPE" : "void"
ap_list = has_varargs ? ", va_list ap" : "" ap_list = has_varargs ? ", va_list ap" : ""
signature = "(*custom_fake)(#{arg_val_list(arg_count)}#{ap_list});" signature = "(*custom_fake)(#{arg_val_list(arg_count)}#{ap_list});"
putdml return_type + signature putd_backslash return_type + signature
end end
def output_custom_function_array(arg_count, has_varargs, is_value_function) def output_custom_function_array(arg_count, has_varargs, is_value_function)
return_type = is_value_function ? "RETURN_TYPE" : "void" return_type = is_value_function ? "RETURN_TYPE" : "void"
ap_list = has_varargs ? ", va_list ap" : "" ap_list = has_varargs ? ", va_list ap" : ""
custom_array = "(**custom_fake_seq)(#{arg_val_list(arg_count)}#{ap_list});" custom_array = "(**custom_fake_seq)(#{arg_val_list(arg_count)}#{ap_list});"
putdml return_type + custom_array putd_backslash return_type + custom_array
end end
# example: RETURN_TYPE FUNCNAME(ARG0_TYPE arg0, ARG1_TYPE arg1) # example: RETURN_TYPE FUNCNAME(ARG0_TYPE arg0, ARG1_TYPE arg1)
@@ -356,58 +356,58 @@ def function_signature(arg_count, has_varargs, is_value_function)
end end
def output_function_body(arg_count, has_varargs, is_value_function) def output_function_body(arg_count, has_varargs, is_value_function)
arg_count.times { |i| putdml "SAVE_ARG(FUNCNAME, #{i});" } arg_count.times { |i| putd_backslash "SAVE_ARG(FUNCNAME, #{i});" }
putdml "if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){" putd_backslash "if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){"
indent { indent {
arg_count.times { |i| putdml "SAVE_ARG_HISTORY(FUNCNAME, #{i});" } arg_count.times { |i| putd_backslash "SAVE_ARG_HISTORY(FUNCNAME, #{i});" }
} }
putdml "}" putd_backslash "}"
putdml "else{" putd_backslash "else{"
indent { indent {
putdml "HISTORY_DROPPED(FUNCNAME);" putd_backslash "HISTORY_DROPPED(FUNCNAME);"
} }
putdml "}" putd_backslash "}"
putdml "INCREMENT_CALL_COUNT(FUNCNAME);" putd_backslash "INCREMENT_CALL_COUNT(FUNCNAME);"
putdml "REGISTER_CALL(FUNCNAME);" putd_backslash "REGISTER_CALL(FUNCNAME);"
if has_varargs if has_varargs
putdml "if(FUNCNAME##_fake.custom_fake){" putd_backslash "if(FUNCNAME##_fake.custom_fake){"
indent { indent {
putdml "RETURN_TYPE ret;" if is_value_function putd_backslash "RETURN_TYPE ret;" if is_value_function
putdml "va_list ap;" putd_backslash "va_list ap;"
putdml "va_start(ap, arg#{arg_count-1});" putd_backslash "va_start(ap, arg#{arg_count-1});"
} }
custom_fake_call = "FUNCNAME##_fake.custom_fake(#{arg_list(arg_count)}, ap);" custom_fake_call = "FUNCNAME##_fake.custom_fake(#{arg_list(arg_count)}, ap);"
indent { indent {
if is_value_function if is_value_function
putdml "ret = #{custom_fake_call}" putd_backslash "ret = #{custom_fake_call}"
else else
putdml "#{custom_fake_call}" putd_backslash "#{custom_fake_call}"
end end
putdml "va_end(ap);" putd_backslash "va_end(ap);"
putdml "return ret;" if is_value_function putd_backslash "return ret;" if is_value_function
} }
putdml "}" putd_backslash "}"
else else
return_type = is_value_function ? "return " : "" return_type = is_value_function ? "return " : ""
putdml "if (FUNCNAME##_fake.custom_fake_seq_len){ /* a sequence of custom fakes */" putd_backslash "if (FUNCNAME##_fake.custom_fake_seq_len){ /* a sequence of custom fakes */"
indent { indent {
putdml "if (FUNCNAME##_fake.custom_fake_seq_idx < FUNCNAME##_fake.custom_fake_seq_len){" putd_backslash "if (FUNCNAME##_fake.custom_fake_seq_idx < FUNCNAME##_fake.custom_fake_seq_len){"
indent { indent {
putdml "#{return_type}FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_idx++](#{arg_list(arg_count)});" putd_backslash "#{return_type}FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_idx++](#{arg_list(arg_count)});"
} }
putdml "}" putd_backslash "}"
putdml "else{" putd_backslash "else{"
indent { indent {
putdml "#{return_type}FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](#{arg_list(arg_count)});" putd_backslash "#{return_type}FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](#{arg_list(arg_count)});"
} }
putdml "}" putd_backslash "}"
} }
putdml "}" putd_backslash "}"
putdml "if (FUNCNAME##_fake.custom_fake) #{return_type}FUNCNAME##_fake.custom_fake(#{arg_list(arg_count)});" putd_backslash "if (FUNCNAME##_fake.custom_fake) #{return_type}FUNCNAME##_fake.custom_fake(#{arg_list(arg_count)});"
end end
putdml "RETURN_FAKE_RESULT(FUNCNAME)" if is_value_function putd_backslash "RETURN_FAKE_RESULT(FUNCNAME)" if is_value_function
end end
def define_fff_globals def define_fff_globals
@@ -418,24 +418,24 @@ def define_fff_globals
} }
putd "} fff_globals_t;" putd "} fff_globals_t;"
puts puts
putdml "FFF_EXTERN_C" putd_backslash "FFF_EXTERN_C"
putd "extern fff_globals_t fff;" putd "extern fff_globals_t fff;"
putdml "FFF_END_EXTERN_C" putd_backslash "FFF_END_EXTERN_C"
puts puts
putdml "#define DEFINE_FFF_GLOBALS" putd_backslash "#define DEFINE_FFF_GLOBALS"
indent { indent {
putdml "FFF_EXTERN_C" putd_backslash "FFF_EXTERN_C"
indent { indent {
putdml "fff_globals_t fff;" putd_backslash "fff_globals_t fff;"
} }
putd "FFF_END_EXTERN_C" putd "FFF_END_EXTERN_C"
} }
puts puts
putd "#define FFF_RESET_HISTORY() fff.call_history_idx = 0;" putd "#define FFF_RESET_HISTORY() fff.call_history_idx = 0;"
puts puts
putdml "#define REGISTER_CALL(function)" putd_backslash "#define REGISTER_CALL(function)"
indent { indent {
putdml "if(fff.call_history_idx < FFF_CALL_HISTORY_LEN)" putd_backslash "if(fff.call_history_idx < FFF_CALL_HISTORY_LEN)"
indent { indent {
putd "fff.call_history[fff.call_history_idx++] = (void *)function;" putd "fff.call_history[fff.call_history_idx++] = (void *)function;"
} }
@@ -443,19 +443,19 @@ def define_fff_globals
end end
def extern_c def extern_c
putdml "FFF_EXTERN_C" putd_backslash "FFF_EXTERN_C"
indent { indent {
yield yield
} }
putdml "FFF_END_EXTERN_C" putd_backslash "FFF_END_EXTERN_C"
end end
def in_struct def in_struct
putdml "typedef struct FUNCNAME##_Fake {" putd_backslash "typedef struct FUNCNAME##_Fake {"
indent { indent {
yield yield
} }
putdml "} FUNCNAME##_Fake;" putd_backslash "} FUNCNAME##_Fake;"
end end
def include_guard def include_guard