OSX st_gen
[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 ifelse([$2], [], [
8 macro_decl="()"
9 macro_call=""
10 ], [
11 macro_decl="$2"
12 macro_call="(m4_map_args_sep([PSI_VAR_NAME(], [)], [, ], m4_bregexp($2, [(\(.*\))], [\1])))"
13 ])
14 ifelse(PSI_VAR_TYPE($1), [void], [
15 macro_body="$macro_name$macro_call;"
16 ], [
17 macro_body="return $macro_name$macro_call;"
18 ])
19 psi_macro="$macro_type psi_macro_$macro_name$macro_decl { $macro_body }"
20 PSI_MACROS="$PSI_MACROS $psi_macro"
21 PSI_REDIR($macro_name, psi_macro_$macro_name)
22 ], [], PSI_INCLUDES)
23 ])
24
25 dnl PSI_EXTVAR(type var)
26 AC_DEFUN(PSI_EXTVAR, [PSI_MACRO($1)])