flush
[m6w6/ext-psi] / m4 / psi_struct.m4
index f0d273e9750189b8eeacdc5e03dd1adae4744a2f..3255c94963fbdd93ad65d2bf3341799e10ad85db 100644 (file)
@@ -7,14 +7,8 @@ AC_DEFUN(PSI_STRUCT_MEMBER, [
        if test -n "$AS_TR_SH([ac_cv_sizeof_$1][_]member_name)" \
        && test "$AS_TR_SH([ac_cv_sizeof_$1][_]member_name)" -gt 0; then
                PSI_CHECK_OFFSETOF($1, member_name)
-               m4_define([pointer_level], m4_len(m4_bpatsubst([$2], [[^*]])))
-               m4_define([array_size], [m4_bregexp([$2], [@<:@\([0-9]+\)@:>@], [\1])])
-               ifelse(array_size, [],
-                       [m4_define([array_size], 0)],
-                       [m4_define([pointer_level], m4_incr(pointer_level))]
-               )
-               m4_define([member_size], PSI_TYPE_SIZE(member_type, pointer_level, array_size))
-               psi_struct_members="[$psi_struct_members, {]PSI_TYPE_PAIR(member_type)[, \"]member_name[\", $]AS_TR_SH([ac_cv_offsetof_]$1[_]member_name)[, ]member_size, pointer_level, array_size[}]"
+               PSI_TYPE_INDIRECTION($2, [$AS_TR_SH([ac_cv_sizeof_]$1[_]member_name)], pl, as)
+               psi_struct_members="[$psi_struct_members, {]PSI_TYPE_PAIR(member_type)[, \"]member_name[\", $]AS_TR_SH([ac_cv_offsetof_]$1[_]member_name)[, $]AS_TR_SH([ac_cv_sizeof_]$1[_]member_name), $pl, $as[}]"
        fi
 ])
 
@@ -22,7 +16,7 @@ AC_DEFUN(PSI_STRUCT, [
        AC_CHECK_SIZEOF($1, [], PSI_INCLUDES)
        psi_struct_name=m4_bregexp([$1], [^\(struct \)?\(\w+\)], [\2])
        psi_struct_members="{PSI_T_STRUCT, \"struct\", \"$psi_struct_name\", 0, $AS_TR_SH([ac_cv_sizeof_]$1), 0, 0}"
-       ifelse([$2],,,[m4_map_args_sep([PSI_STRUCT_MEMBER($1,], [)], [], $2)])
+       ifelse([$2],,,[m4_map_args_sep([PSI_STRUCT_MEMBER($1, m4_normalize(], [))], [], $2)])
        PSI_STRUCTS="$psi_struct_members, {0}, $PSI_STRUCTS"
        if test "$1" = "$psi_struct_name"; then
                PSI_TYPES="{PSI_T_STRUCT, \"$1\", \"$1\"}, $PSI_TYPES"