indent funct with block instead of pushd and popd

This commit is contained in:
usr42
2017-01-26 15:47:16 +01:00
parent 4e7451acd1
commit f6fd3cf5dc
2 changed files with 179 additions and 109 deletions

View File

@@ -17,10 +17,14 @@ end
def output_constants def output_constants
putd "#define FFF_MAX_ARGS (#{$MAX_ARGS}u)" putd "#define FFF_MAX_ARGS (#{$MAX_ARGS}u)"
putd "#ifndef FFF_ARG_HISTORY_LEN" putd "#ifndef FFF_ARG_HISTORY_LEN"
putd " #define FFF_ARG_HISTORY_LEN (#{$DEFAULT_ARG_HISTORY}u)" indent {
putd "#define FFF_ARG_HISTORY_LEN (#{$DEFAULT_ARG_HISTORY}u)"
}
putd "#endif" putd "#endif"
putd "#ifndef FFF_CALL_HISTORY_LEN" putd "#ifndef FFF_CALL_HISTORY_LEN"
putd " #define FFF_CALL_HISTORY_LEN (#{$MAX_CALL_HISTORY}u)" indent {
putd "#define FFF_CALL_HISTORY_LEN (#{$MAX_CALL_HISTORY}u)"
}
putd "#endif" putd "#endif"
end end
@@ -54,21 +58,27 @@ end
def define_return_sequence_helper def define_return_sequence_helper
putd "#define SET_RETURN_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN) \\" putd "#define SET_RETURN_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN) \\"
putd " FUNCNAME##_fake.return_val_seq = ARRAY_POINTER; \\" indent {
putd " FUNCNAME##_fake.return_val_seq_len = ARRAY_LEN;" putd "FUNCNAME##_fake.return_val_seq = ARRAY_POINTER; \\"
putd "FUNCNAME##_fake.return_val_seq_len = ARRAY_LEN;"
}
end end
def define_custom_fake_sequence_helper def define_custom_fake_sequence_helper
putd "#define SET_CUSTOM_FAKE_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN) \\" putd "#define SET_CUSTOM_FAKE_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN) \\"
putd " FUNCNAME##_fake.custom_fake_seq = ARRAY_POINTER; \\" indent {
putd " FUNCNAME##_fake.custom_fake_seq_len = ARRAY_LEN;" putd "FUNCNAME##_fake.custom_fake_seq = ARRAY_POINTER; \\"
putd "FUNCNAME##_fake.custom_fake_seq_len = ARRAY_LEN;"
}
end end
def define_reset_fake_macro def define_reset_fake_macro
putd "" putd ""
putd "/* Defining a function to reset a fake function */" putd "/* Defining a function to reset a fake function */"
putd "#define RESET_FAKE(FUNCNAME) { \\" putd "#define RESET_FAKE(FUNCNAME) { \\"
putd " FUNCNAME##_reset(); \\" indent {
putd "FUNCNAME##_reset(); \\"
}
putd "} \\" putd "} \\"
putd "" putd ""
end end
@@ -76,94 +86,126 @@ end
def define_declare_arg_helper def define_declare_arg_helper
putd "" putd ""
putd "#define DECLARE_ARG(type, n, FUNCNAME) \\" putd "#define DECLARE_ARG(type, n, FUNCNAME) \\"
putd " type arg##n##_val; \\" indent {
putd " type arg##n##_history[FFF_ARG_HISTORY_LEN];" putd "type arg##n##_val; \\"
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
putd "" putd ""
putd "#define DECLARE_ALL_FUNC_COMMON \\" putd "#define DECLARE_ALL_FUNC_COMMON \\"
putd " unsigned int call_count; \\" indent {
putd " unsigned int arg_history_len;\\" putd "unsigned int call_count; \\"
putd " unsigned int arg_histories_dropped; \\" putd "unsigned int arg_history_len;\\"
putd "unsigned int arg_histories_dropped; \\"
}
end end
def define_save_arg_helper def define_save_arg_helper
putd "" putd ""
putd "#define SAVE_ARG(FUNCNAME, n) \\" putd "#define SAVE_ARG(FUNCNAME, n) \\"
putd " memcpy((void*)&FUNCNAME##_fake.arg##n##_val, (void*)&arg##n, sizeof(arg##n));" indent {
putd "memcpy((void*)&FUNCNAME##_fake.arg##n##_val, (void*)&arg##n, sizeof(arg##n));"
}
end end
def define_room_for_more_history def define_room_for_more_history
putd "" putd ""
putd "#define ROOM_FOR_MORE_HISTORY(FUNCNAME) \\" putd "#define ROOM_FOR_MORE_HISTORY(FUNCNAME) \\"
putd " FUNCNAME##_fake.call_count < FFF_ARG_HISTORY_LEN" indent {
putd "FUNCNAME##_fake.call_count < FFF_ARG_HISTORY_LEN"
}
end end
def define_save_arg_history_helper def define_save_arg_history_helper
putd "" putd ""
putd "#define SAVE_ARG_HISTORY(FUNCNAME, ARGN) \\" putd "#define SAVE_ARG_HISTORY(FUNCNAME, ARGN) \\"
putd " memcpy((void*)&FUNCNAME##_fake.arg##ARGN##_history[FUNCNAME##_fake.call_count], (void*)&arg##ARGN, sizeof(arg##ARGN));" indent {
putd "memcpy((void*)&FUNCNAME##_fake.arg##ARGN##_history[FUNCNAME##_fake.call_count], (void*)&arg##ARGN, sizeof(arg##ARGN));"
}
end end
def define_history_dropped_helper def define_history_dropped_helper
putd "" putd ""
putd "#define HISTORY_DROPPED(FUNCNAME) \\" putd "#define HISTORY_DROPPED(FUNCNAME) \\"
putd " FUNCNAME##_fake.arg_histories_dropped++" indent {
putd "FUNCNAME##_fake.arg_histories_dropped++"
}
end end
def define_value_function_variables_helper def define_value_function_variables_helper
putd "" putd ""
putd "#define DECLARE_VALUE_FUNCTION_VARIABLES(RETURN_TYPE) \\" putd "#define DECLARE_VALUE_FUNCTION_VARIABLES(RETURN_TYPE) \\"
putd " RETURN_TYPE return_val; \\" indent {
putd " int return_val_seq_len; \\" putd "RETURN_TYPE return_val; \\"
putd " int return_val_seq_idx; \\" putd "int return_val_seq_len; \\"
putd " RETURN_TYPE * return_val_seq; \\" putd "int return_val_seq_idx; \\"
putd "RETURN_TYPE * return_val_seq; \\"
}
end end
def define_custom_fake_seq_variables_helper def define_custom_fake_seq_variables_helper
putd "" putd ""
putd "#define DECLARE_CUSTOM_FAKE_SEQ_VARIABLES \\" putd "#define DECLARE_CUSTOM_FAKE_SEQ_VARIABLES \\"
putd " int custom_fake_seq_len; \\" indent {
putd " int custom_fake_seq_idx; \\" putd "int custom_fake_seq_len; \\"
putd "int custom_fake_seq_idx; \\"
}
end end
def define_increment_call_count_helper def define_increment_call_count_helper
putd "" putd ""
putd "#define INCREMENT_CALL_COUNT(FUNCNAME) \\" putd "#define INCREMENT_CALL_COUNT(FUNCNAME) \\"
putd " FUNCNAME##_fake.call_count++" indent {
putd "FUNCNAME##_fake.call_count++"
}
end end
def define_return_fake_result_helper def define_return_fake_result_helper
putd "" putd ""
putd "#define RETURN_FAKE_RESULT(FUNCNAME) \\" putd "#define RETURN_FAKE_RESULT(FUNCNAME) \\"
putd " if (FUNCNAME##_fake.return_val_seq_len){ /* then its a sequence */ \\" indent {
putd " if(FUNCNAME##_fake.return_val_seq_idx < FUNCNAME##_fake.return_val_seq_len) { \\" putd "if (FUNCNAME##_fake.return_val_seq_len){ /* then its a sequence */ \\"
putd " return FUNCNAME##_fake.return_val_seq[FUNCNAME##_fake.return_val_seq_idx++]; \\" indent {
putd " } \\" putd "if(FUNCNAME##_fake.return_val_seq_idx < FUNCNAME##_fake.return_val_seq_len) { \\"
putd " return FUNCNAME##_fake.return_val_seq[FUNCNAME##_fake.return_val_seq_len-1]; /* return last element */ \\" indent {
putd " } \\" putd "return FUNCNAME##_fake.return_val_seq[FUNCNAME##_fake.return_val_seq_idx++]; \\"
putd " return FUNCNAME##_fake.return_val; \\" }
putd "} \\"
putd "return FUNCNAME##_fake.return_val_seq[FUNCNAME##_fake.return_val_seq_len-1]; /* return last element */ \\"
}
putd "} \\"
putd "return FUNCNAME##_fake.return_val; \\"
}
end end
def define_extern_c_helper def define_extern_c_helper
putd "" putd ""
putd "#ifdef __cplusplus" putd "#ifdef __cplusplus"
putd " #define FFF_EXTERN_C extern \"C\"{" indent {
putd " #define FFF_END_EXTERN_C } " putd "#define FFF_EXTERN_C extern \"C\"{"
putd "#define FFF_END_EXTERN_C } "
}
putd "#else /* ansi c */" putd "#else /* ansi c */"
putd " #define FFF_EXTERN_C " indent {
putd " #define FFF_END_EXTERN_C " putd "#define FFF_EXTERN_C "
putd "#define FFF_END_EXTERN_C "
}
putd "#endif /* cpp/ansi c */" putd "#endif /* cpp/ansi c */"
end end
def define_reset_fake_helper def define_reset_fake_helper
putd "" putd ""
putd "#define DEFINE_RESET_FUNCTION(FUNCNAME) \\" putd "#define DEFINE_RESET_FUNCTION(FUNCNAME) \\"
putd " void FUNCNAME##_reset(){ \\" indent {
putd " memset(&FUNCNAME##_fake, 0, sizeof(FUNCNAME##_fake)); \\" putd "void FUNCNAME##_reset(){ \\"
putd " FUNCNAME##_fake.arg_history_len = FFF_ARG_HISTORY_LEN;\\" indent {
putd " }" putd "memset(&FUNCNAME##_fake, 0, sizeof(FUNCNAME##_fake)); \\"
putd "FUNCNAME##_fake.arg_history_len = FFF_ARG_HISTORY_LEN;\\"
}
putd "}"
}
end end
# ------ End Helper macros ------ # # ------ End Helper macros ------ #
@@ -182,6 +224,12 @@ def popd
$current_depth = $current_depth - 4 $current_depth = $current_depth - 4
end end
def indent
pushd
yield
popd
end
def output_macro(arg_count, has_varargs, is_value_function) def output_macro(arg_count, has_varargs, is_value_function)
vararg_name = has_varargs ? "_VARARG" : "" vararg_name = has_varargs ? "_VARARG" : ""
@@ -193,34 +241,34 @@ def output_macro(arg_count, has_varargs, is_value_function)
putd "" putd ""
output_macro_header(declare_macro_name, saved_arg_count, has_varargs, return_type) output_macro_header(declare_macro_name, saved_arg_count, has_varargs, return_type)
pushd indent {
extern_c { # define argument capture variables extern_c { # define argument capture variables
output_variables(saved_arg_count, has_varargs, is_value_function) output_variables(saved_arg_count, has_varargs, is_value_function)
} }
popd }
putd "" putd ""
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)
pushd indent {
extern_c { extern_c {
putd "FUNCNAME##_Fake FUNCNAME##_fake;\\" putd "FUNCNAME##_Fake FUNCNAME##_fake;\\"
putd function_signature(saved_arg_count, has_varargs, is_value_function) + "{ \\" putd function_signature(saved_arg_count, has_varargs, is_value_function) + "{ \\"
pushd indent {
output_function_body(saved_arg_count, has_varargs, is_value_function) output_function_body(saved_arg_count, has_varargs, is_value_function)
popd }
putd "} \\" putd "} \\"
putd "DEFINE_RESET_FUNCTION(FUNCNAME) \\" putd "DEFINE_RESET_FUNCTION(FUNCNAME) \\"
} }
popd }
putd "" putd ""
output_macro_header(fake_macro_name, saved_arg_count, has_varargs, return_type) output_macro_header(fake_macro_name, saved_arg_count, has_varargs, return_type)
pushd indent {
putd macro_signature_for(declare_macro_name, saved_arg_count, has_varargs, return_type) putd macro_signature_for(declare_macro_name, saved_arg_count, has_varargs, return_type)
putd macro_signature_for(define_macro_name, saved_arg_count, has_varargs, return_type) putd macro_signature_for(define_macro_name, saved_arg_count, has_varargs, return_type)
putd "" putd ""
popd }
end end
def output_macro_header(macro_name, arg_count, has_varargs, return_type) def output_macro_header(macro_name, arg_count, has_varargs, return_type)
@@ -250,10 +298,6 @@ def macro_signature_for(macro_name, arg_count, has_varargs, return_type)
parameter_list parameter_list
end end
def output_argument_capture_variables(argN)
putd " DECLARE_ARG(ARG#{argN}_TYPE, #{argN}, FUNCNAME) \\"
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|
@@ -309,37 +353,51 @@ 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| putd "SAVE_ARG(FUNCNAME, #{i}); \\" } arg_count.times { |i| putd "SAVE_ARG(FUNCNAME, #{i}); \\" }
putd "if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){\\" putd "if(ROOM_FOR_MORE_HISTORY(FUNCNAME)){\\"
arg_count.times { |i| putd " SAVE_ARG_HISTORY(FUNCNAME, #{i}); \\" } indent {
arg_count.times { |i| putd "SAVE_ARG_HISTORY(FUNCNAME, #{i}); \\" }
}
putd "}\\" putd "}\\"
putd "else{\\" putd "else{\\"
putd " HISTORY_DROPPED(FUNCNAME);\\" indent {
putd "HISTORY_DROPPED(FUNCNAME);\\"
}
putd "}\\" putd "}\\"
putd "INCREMENT_CALL_COUNT(FUNCNAME); \\" putd "INCREMENT_CALL_COUNT(FUNCNAME); \\"
putd "REGISTER_CALL(FUNCNAME); \\" putd "REGISTER_CALL(FUNCNAME); \\"
if has_varargs if has_varargs
putd "if(FUNCNAME##_fake.custom_fake){\\" putd "if(FUNCNAME##_fake.custom_fake){\\"
putd " RETURN_TYPE ret;\\" if is_value_function indent {
putd " va_list ap;\\" putd "RETURN_TYPE ret;\\" if is_value_function
putd " va_start(ap, arg#{arg_count-1});\\" putd "va_list ap;\\"
putd "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);"
if is_value_function indent {
putd " ret = #{custom_fake_call}\\" if is_value_function
else putd "ret = #{custom_fake_call}\\"
putd " #{custom_fake_call}\\" else
end putd "#{custom_fake_call}\\"
putd " va_end(ap);\\" end
putd " return ret;\\" if is_value_function putd "va_end(ap);\\"
putd "return ret;\\" if is_value_function
}
putd "}\\" putd "}\\"
else else
return_type = is_value_function ? "return " : "" return_type = is_value_function ? "return " : ""
putd "if (FUNCNAME##_fake.custom_fake_seq_len){ /* a sequence of custom fakes */ \\" putd "if (FUNCNAME##_fake.custom_fake_seq_len){ /* a sequence of custom fakes */ \\"
putd " if (FUNCNAME##_fake.custom_fake_seq_idx < FUNCNAME##_fake.custom_fake_seq_len){ \\" indent {
putd " #{return_type}FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_idx++](#{arg_list(arg_count)}); \\" putd "if (FUNCNAME##_fake.custom_fake_seq_idx < FUNCNAME##_fake.custom_fake_seq_len){ \\"
putd " } \\" indent {
putd " else{ \\" putd "#{return_type}FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_idx++](#{arg_list(arg_count)}); \\"
putd " #{return_type}FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](#{arg_list(arg_count)}); \\" }
putd " } \\" putd "} \\"
putd "else{ \\"
indent {
putd "#{return_type}FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](#{arg_list(arg_count)}); \\"
}
putd "} \\"
}
putd "} \\" putd "} \\"
putd "if (FUNCNAME##_fake.custom_fake) #{return_type}FUNCNAME##_fake.custom_fake(#{arg_list(arg_count)}); \\" putd "if (FUNCNAME##_fake.custom_fake) #{return_type}FUNCNAME##_fake.custom_fake(#{arg_list(arg_count)}); \\"
end end
@@ -349,15 +407,19 @@ end
def output_reset_function(arg_count, is_value_function) def output_reset_function(arg_count, is_value_function)
putd "void FUNCNAME##_reset(){ \\" putd "void FUNCNAME##_reset(){ \\"
putd " memset(&FUNCNAME##_fake, 0, sizeof(FUNCNAME##_fake)); \\" indent {
putd " FUNCNAME##_fake.arg_history_len = FFF_ARG_HISTORY_LEN;\\" putd "memset(&FUNCNAME##_fake, 0, sizeof(FUNCNAME##_fake)); \\"
putd "FUNCNAME##_fake.arg_history_len = FFF_ARG_HISTORY_LEN;\\"
}
putd "} \\" putd "} \\"
end end
def define_fff_globals def define_fff_globals
putd "typedef struct { " putd "typedef struct { "
putd " void * call_history[FFF_CALL_HISTORY_LEN];" indent {
putd " unsigned int call_history_idx;" putd "void * call_history[FFF_CALL_HISTORY_LEN];"
putd "unsigned int call_history_idx;"
}
putd "} fff_globals_t;" putd "} fff_globals_t;"
putd "" putd ""
putd "FFF_EXTERN_C \\" putd "FFF_EXTERN_C \\"
@@ -365,30 +427,38 @@ def define_fff_globals
putd "FFF_END_EXTERN_C \\" putd "FFF_END_EXTERN_C \\"
putd "" putd ""
putd "#define DEFINE_FFF_GLOBALS \\" putd "#define DEFINE_FFF_GLOBALS \\"
putd " FFF_EXTERN_C \\" indent {
putd " fff_globals_t fff; \\" putd "FFF_EXTERN_C \\"
putd " FFF_END_EXTERN_C" indent {
putd "fff_globals_t fff; \\"
}
putd "FFF_END_EXTERN_C"
}
putd "" putd ""
putd "#define FFF_RESET_HISTORY() fff.call_history_idx = 0;" putd "#define FFF_RESET_HISTORY() fff.call_history_idx = 0;"
putd "" putd ""
putd "#define REGISTER_CALL(function) \\" putd "#define REGISTER_CALL(function) \\"
putd " if(fff.call_history_idx < FFF_CALL_HISTORY_LEN) \\" indent {
putd " fff.call_history[fff.call_history_idx++] = (void *)function;" putd "if(fff.call_history_idx < FFF_CALL_HISTORY_LEN) \\"
indent {
putd "fff.call_history[fff.call_history_idx++] = (void *)function;"
}
}
end end
def extern_c def extern_c
putd "FFF_EXTERN_C \\" putd "FFF_EXTERN_C \\"
pushd indent {
yield yield
popd }
putd "FFF_END_EXTERN_C \\" putd "FFF_END_EXTERN_C \\"
end end
def in_struct def in_struct
putd "typedef struct FUNCNAME##_Fake { \\" putd "typedef struct FUNCNAME##_Fake { \\"
pushd indent {
yield yield
popd }
putd "} FUNCNAME##_Fake;\\" putd "} FUNCNAME##_Fake;\\"
end end

54
fff.h
View File

@@ -34,15 +34,15 @@ SOFTWARE.
#define FFF_ARG_HISTORY_LEN (50u) #define FFF_ARG_HISTORY_LEN (50u)
#endif #endif
#ifndef FFF_CALL_HISTORY_LEN #ifndef FFF_CALL_HISTORY_LEN
#define FFF_CALL_HISTORY_LEN (50u) #define FFF_CALL_HISTORY_LEN (50u)
#endif #endif
/* -- INTERNAL HELPER MACROS -- */ /* -- INTERNAL HELPER MACROS -- */
#define SET_RETURN_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN) \ #define SET_RETURN_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN) \
FUNCNAME##_fake.return_val_seq = ARRAY_POINTER; \ FUNCNAME##_fake.return_val_seq = ARRAY_POINTER; \
FUNCNAME##_fake.return_val_seq_len = ARRAY_LEN; FUNCNAME##_fake.return_val_seq_len = ARRAY_LEN;
#define SET_CUSTOM_FAKE_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN) \ #define SET_CUSTOM_FAKE_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN) \
FUNCNAME##_fake.custom_fake_seq = ARRAY_POINTER; \ FUNCNAME##_fake.custom_fake_seq = ARRAY_POINTER; \
FUNCNAME##_fake.custom_fake_seq_len = ARRAY_LEN; FUNCNAME##_fake.custom_fake_seq_len = ARRAY_LEN;
/* Defining a function to reset a fake function */ /* Defining a function to reset a fake function */
#define RESET_FAKE(FUNCNAME) { \ #define RESET_FAKE(FUNCNAME) { \
@@ -63,7 +63,7 @@ SOFTWARE.
memcpy((void*)&FUNCNAME##_fake.arg##n##_val, (void*)&arg##n, sizeof(arg##n)); memcpy((void*)&FUNCNAME##_fake.arg##n##_val, (void*)&arg##n, sizeof(arg##n));
#define ROOM_FOR_MORE_HISTORY(FUNCNAME) \ #define ROOM_FOR_MORE_HISTORY(FUNCNAME) \
FUNCNAME##_fake.call_count < FFF_ARG_HISTORY_LEN FUNCNAME##_fake.call_count < FFF_ARG_HISTORY_LEN
#define SAVE_ARG_HISTORY(FUNCNAME, ARGN) \ #define SAVE_ARG_HISTORY(FUNCNAME, ARGN) \
memcpy((void*)&FUNCNAME##_fake.arg##ARGN##_history[FUNCNAME##_fake.call_count], (void*)&arg##ARGN, sizeof(arg##ARGN)); memcpy((void*)&FUNCNAME##_fake.arg##ARGN##_history[FUNCNAME##_fake.call_count], (void*)&arg##ARGN, sizeof(arg##ARGN));
@@ -125,8 +125,8 @@ FFF_END_EXTERN_C \
#define FFF_RESET_HISTORY() fff.call_history_idx = 0; #define FFF_RESET_HISTORY() fff.call_history_idx = 0;
#define REGISTER_CALL(function) \ #define REGISTER_CALL(function) \
if(fff.call_history_idx < FFF_CALL_HISTORY_LEN) \ if(fff.call_history_idx < FFF_CALL_HISTORY_LEN) \
fff.call_history[fff.call_history_idx++] = (void *)function; fff.call_history[fff.call_history_idx++] = (void *)function;
#define DECLARE_FAKE_VOID_FUNC0(FUNCNAME) \ #define DECLARE_FAKE_VOID_FUNC0(FUNCNAME) \
FFF_EXTERN_C \ FFF_EXTERN_C \
@@ -3181,7 +3181,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg0);\ va_start(ap, arg0);\
FUNCNAME##_fake.custom_fake(arg0, ap);\ FUNCNAME##_fake.custom_fake(arg0, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3225,7 +3225,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg1);\ va_start(ap, arg1);\
FUNCNAME##_fake.custom_fake(arg0, arg1, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3272,7 +3272,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg2);\ va_start(ap, arg2);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3322,7 +3322,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg3);\ va_start(ap, arg3);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3375,7 +3375,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg4);\ va_start(ap, arg4);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3431,7 +3431,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg5);\ va_start(ap, arg5);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3490,7 +3490,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg6);\ va_start(ap, arg6);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3552,7 +3552,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg7);\ va_start(ap, arg7);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3617,7 +3617,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg8);\ va_start(ap, arg8);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3685,7 +3685,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg9);\ va_start(ap, arg9);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3756,7 +3756,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg10);\ va_start(ap, arg10);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3830,7 +3830,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg11);\ va_start(ap, arg11);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3907,7 +3907,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg12);\ va_start(ap, arg12);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -3987,7 +3987,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg13);\ va_start(ap, arg13);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -4070,7 +4070,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg14);\ va_start(ap, arg14);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -4156,7 +4156,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg15);\ va_start(ap, arg15);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -4245,7 +4245,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg16);\ va_start(ap, arg16);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -4337,7 +4337,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg17);\ va_start(ap, arg17);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \
@@ -4432,7 +4432,7 @@ FFF_END_EXTERN_C \
if(FUNCNAME##_fake.custom_fake){\ if(FUNCNAME##_fake.custom_fake){\
va_list ap;\ va_list ap;\
va_start(ap, arg18);\ va_start(ap, arg18);\
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, ap);\ FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, ap);\
va_end(ap);\ va_end(ap);\
}\ }\
} \ } \