stdio vararg decls
[m6w6/ext-psi] / m4 / psi_macro.m4
1 dnl PSI_MACRO(macro, decl args, action-if-true)
2 AC_DEFUN(PSI_MACRO, [
3 AC_CHECK_DECL(PSI_VAR_NAME($1)$2, [
4 $3
5 macro_type="PSI_VAR_TYPE($1)"
6 macro_name="PSI_VAR_NAME($1)"
7 m4_case([$2],
8 [(void)], [
9 macro_decl="(void)"
10 macro_call="()"
11 ],
12 [()], [
13 macro_decl="()"
14 macro_call="()"
15 ],
16 [], [
17 macro_decl="()"
18 macro_call=""
19 ],
20 [
21 macro_decl="$2"
22 macro_call="(m4_map_args_sep([PSI_VAR_NAME(], [)], [, ], m4_bregexp($2, [(\(.*\))], [\1])))"
23 ]
24 )
25 ifelse(PSI_VAR_TYPE($1), [void], [
26 macro_body="$macro_name$macro_call;"
27 ], [
28 macro_body="return $macro_name$macro_call;"
29 ])
30 psi_macro="$macro_type psi_macro_$macro_name$macro_decl { $macro_body }"
31 PSI_MACROS="$PSI_MACROS $psi_macro"
32 PSI_REDIR($macro_name, psi_macro_$macro_name)
33 ], [], PSI_INCLUDES)
34 ])
35
36 dnl PSI_EXTVAR(type var)
37 AC_DEFUN(PSI_EXTVAR, [PSI_MACRO($1)])