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

Add more helpers

This commit is contained in:
Mike Long
2012-04-21 10:50:59 +01:00
parent c505d084ea
commit 9187775817
2 changed files with 413 additions and 385 deletions

View File

@@ -18,6 +18,10 @@ def output_constants
puts "#endif" puts "#endif"
end end
# ------ Helper macros to use internally ------ # # ------ Helper macros to use internally ------ #
def output_internal_helper_macros def output_internal_helper_macros
puts "/* -- INTERNAL HELPER MACROS -- */" puts "/* -- INTERNAL HELPER MACROS -- */"
@@ -25,7 +29,9 @@ def output_internal_helper_macros
define_return_sequence_helper define_return_sequence_helper
define_reset_fake_helper define_reset_fake_helper
define_declare_arg_helper define_declare_arg_helper
define_declare_all_func_common define_declare_all_func_common_helper
define_save_arg_helper
define_room_for_more_history
puts "/* -- END INTERNAL HELPER MACROS -- */" puts "/* -- END INTERNAL HELPER MACROS -- */"
end end
@@ -54,15 +60,31 @@ def define_declare_arg_helper
#puts "type arg##n##_history[FFF_ARG_HISTORY_LEN];" #puts "type arg##n##_history[FFF_ARG_HISTORY_LEN];"
end end
def define_declare_all_func_common def define_declare_all_func_common_helper
puts "" puts ""
puts "#define DECLARE_ALL_FUNC_COMMON(FUNCNAME) \\" puts "#define DECLARE_ALL_FUNC_COMMON(FUNCNAME) \\"
puts " static unsigned int FUNCNAME##_call_count = 0; \\" puts " static unsigned int FUNCNAME##_call_count = 0; \\"
puts " static unsigned int FUNCNAME##_arg_history_len = FFF_ARG_HISTORY_LEN;\\" puts " static unsigned int FUNCNAME##_arg_history_len = FFF_ARG_HISTORY_LEN;\\"
puts " static unsigned int FUNCNAME##_arg_histories_dropped = 0;" puts " static unsigned int FUNCNAME##_arg_histories_dropped = 0;"
end end
def define_save_arg_helper
puts ""
puts "#define SAVE_ARG(FUNCNAME, n) \\"
puts " FUNCNAME##_arg##n##_val = arg##n"
end
def define_room_for_more_history
puts ""
puts "#define ROOM_FOR_MORE_HISTORY(FUNCNAME) \\"
puts " FUNCNAME##_call_count < FFF_ARG_HISTORY_LEN"
end
# ------ End Helper macros ------ # # ------ End Helper macros ------ #
def output_macro(arg_count, is_value_function) def output_macro(arg_count, is_value_function)
macro_name_preamble = is_value_function ? "FAKE_VALUE_FUNC" : "FAKE_VOID_FUNC"; macro_name_preamble = is_value_function ? "FAKE_VALUE_FUNC" : "FAKE_VOID_FUNC";
@@ -158,8 +180,8 @@ end
def output_variables(arg_count, is_value_function) def output_variables(arg_count, is_value_function)
arg_count.times { |i| output_argument_capture_variables(i) } arg_count.times { |i| output_argument_capture_variables(i) }
output_variables_for_value_function unless not is_value_function
puts " DECLARE_ALL_FUNC_COMMON(FUNCNAME) \\" puts " DECLARE_ALL_FUNC_COMMON(FUNCNAME) \\"
output_variables_for_value_function unless not is_value_function
end end
def output_function_signature(args_count, is_value_function) def output_function_signature(args_count, is_value_function)
@@ -189,10 +211,10 @@ end
def output_function_body(arg_count, is_value_function) def output_function_body(arg_count, is_value_function)
# capture arguments # capture arguments
arg_count.times { |i| puts " FUNCNAME##_arg#{i}_val = arg#{i}; \\" } arg_count.times { |i| puts " SAVE_ARG(FUNCNAME, #{i}); \\" }
# store in argument history # store in argument history
arg_count.times { |i| arg_count.times { |i|
puts " if(FUNCNAME##_call_count < FUNCNAME##_arg_history_len){\\" puts " if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){\\"
puts " FUNCNAME##_arg#{i}_history[FUNCNAME##_call_count] = arg#{i}; \\" puts " FUNCNAME##_arg#{i}_history[FUNCNAME##_call_count] = arg#{i}; \\"
puts " }\\" puts " }\\"
} }

766
fff3.h

File diff suppressed because it is too large Load Diff