projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
build: PHP<7.2 compatibility
[m6w6/ext-psi]
/
m4
/
psi
/
psi_macro.m4
diff --git
a/m4/psi/psi_macro.m4
b/m4/psi/psi_macro.m4
index d26a888774a5a7a2c094ecfeb58a92521620a6d4..d156389cc74d8d36dd735f6c4344e361295f8f1c 100644
(file)
--- a/
m4/psi/psi_macro.m4
+++ b/
m4/psi/psi_macro.m4
@@
-1,9
+1,8
@@
# psi_add_macro(macro)
# psi_add_macro(macro)
-# Add a pre-defined macro function to $PSI_MACROS.
+# Add a pre-defined macro function to $PSI_MACROS
_H
.
psi_add_macro() {
psi_add_macro() {
- cat >>$PSI_MACROS <<EOF
-$1
-EOF
+ PSI_MACROS="$PSI_MACROS
+$1"
}
dnl PSI_MACRO(macro, decl args, action-if-true)
}
dnl PSI_MACRO(macro, decl args, action-if-true)
@@
-11,6
+10,14
@@
AC_DEFUN(PSI_MACRO, [
AC_CHECK_DECL(PSI_VAR_NAME($1)$2, [
macro_type="PSI_VAR_TYPE($1)"
macro_name="PSI_VAR_NAME($1)"
AC_CHECK_DECL(PSI_VAR_NAME($1)$2, [
macro_type="PSI_VAR_TYPE($1)"
macro_name="PSI_VAR_NAME($1)"
+ PSI_TYPE_INDIRECTION([$1],, macro_pointer_level, macro_array_size)
+ if test "$macro_array_size" -gt 0; then
+ macro_array="@<:@$macro_array_size@:>@"
+ macro_return="$macro_type*"
+ else
+ macro_array=""
+ macro_return="$macro_type"
+ fi
m4_case([$2],
[(void)], [
macro_decl="(void)"
m4_case([$2],
[(void)], [
macro_decl="(void)"
@@
-39,24
+46,25
@@
AC_DEFUN(PSI_MACRO, [
macro_body="return $macro_name$macro_call;"
])
$3
macro_body="return $macro_name$macro_call;"
])
$3
- psi_add_macro "$macro_
type
_psi_${macro_action}_$macro_name$macro_decl { $macro_body }"
+ psi_add_macro "$macro_
return
_psi_${macro_action}_$macro_name$macro_decl { $macro_body }"
PSI_REDIR($macro_name, _psi_${macro_action}_$macro_name)
PSI_REDIR($macro_name, _psi_${macro_action}_$macro_name)
- ], [],
PSI_INCLUDES
)
+ ], [],
[PSI_INCLUDES]
)
])
dnl PSI_EXTVAR(type var)
AC_DEFUN(PSI_EXTVAR, [
])
dnl PSI_EXTVAR(type var)
AC_DEFUN(PSI_EXTVAR, [
- dnl just a getter
PSI_MACRO($1, [], [
PSI_MACRO($1, [], [
+ dnl just a getter
PSI_DECL_ARGS($1)
psi_add_decl "$psi_decl_args"
PSI_DECL_ARGS($1)
psi_add_decl "$psi_decl_args"
- dnl explicit getter
& setter
+ dnl explicit getter
PSI_REDIR([${macro_name}_get], [_psi_get_$macro_name])
PSI_REDIR([${macro_name}_get], [_psi_get_$macro_name])
- PSI_DECL_ARGS(
$1
_get)
+ PSI_DECL_ARGS(
PSI_VAR_TYPE_RETURN([$1]) PSI_VAR_NAME([$1])
_get)
psi_add_decl "$psi_decl_args"
psi_add_decl "$psi_decl_args"
- psi_add_macro "void _psi_set_${macro_name}($macro_type value) { memcpy(&$macro_name, &value, sizeof(value)); }"
+ dnl setter
+ psi_add_macro "void _psi_set_${macro_name}($macro_type value$macro_array) { memcpy(&$macro_name, &value, sizeof($macro_type$macro_array)); }"
PSI_REDIR([${macro_name}_set], [_psi_set_${macro_name}])
PSI_REDIR([${macro_name}_set], [_psi_set_${macro_name}])
- PSI_DECL_ARGS([void
PSI_VAR_NAME($1)_set], [(PSI_VAR_TYPE($1) _v
)])
+ PSI_DECL_ARGS([void
]PSI_VAR_NAME([$1])[_set], [($1
)])
psi_add_decl "$psi_decl_args"
])
])
psi_add_decl "$psi_decl_args"
])
])