X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=m4%2Fpsi_struct.m4;fp=m4%2Fpsi_struct.m4;h=0000000000000000000000000000000000000000;hb=c9b3436bd51a4dcf7d6cc6817d4c7a8ad99538d4;hp=800e03644354724cd07ef88f2eb4bbfb2c018de8;hpb=09735ea6055f959a9cac481268754f07d6f6eb9f;p=m6w6%2Fext-psi diff --git a/m4/psi_struct.m4 b/m4/psi_struct.m4 deleted file mode 100644 index 800e036..0000000 --- a/m4/psi_struct.m4 +++ /dev/null @@ -1,86 +0,0 @@ -# psi_add_struct(struct members) -# Add a pre-defined struct to $PSI_STRUCTS. -psi_add_struct() { - cat >>$PSI_STRUCTS <>$PSI_UNIONS <member_name - ) - if PSI_SH_TEST_SIZEOF($1 member_name); then - PSI_CHECK_OFFSETOF($1, member_name) - PSI_TYPE_INDIRECTION($2, [PSI_SH_SIZEOF([$1 member_name])], pl, as) - - psi_member_sizeof=PSI_SH_SIZEOF($1 member_name) - psi_member_offsetof=PSI_SH_OFFSETOF($1 member_name) - - if test $pl -gt 0 && test $as -eq 0; then - check_size=PSI_SH_SIZEOF(void *) - elif test $pl -eq 1 && test $as -gt 0; then - check_size=`expr PSI_SH_SIZEOF(member_type) \* $as` - else - check_size=PSI_SH_SIZEOF(member_type) - fi - if test $psi_member_sizeof != "$check_size"; then - psi_member_basic_type=PSI_SH_BASIC_TYPE(member_type) - psi_member_type_pair="`psi_type_pair $psi_member_basic_type $psi_member_sizeof`" - psi_struct_members="$psi_struct_members, {$psi_member_type_pair, \"[]member_name[]\", $psi_member_offsetof, $psi_member_sizeof, $pl, $as}" - AC_MSG_WARN(pre-defined size $check_size of $2 in $1 does not match computed size $psi_member_sizeof; adjusting to $psi_member_type_pair) - else - psi_struct_members="[$psi_struct_members, {]PSI_TYPE_PAIR(member_type)[, \"]member_name[\", $psi_member_offsetof, $psi_member_sizeof, $pl, $as}]" - fi - fi -]) - -dnl PSI_STRUCT(struct name, struct members) -dnl Check a struct and its members and add a pre-defined struct and possibly a -dnl pre-defined type for this struct. -dnl Calls PSI_CHECK_SIZEOF and PSI_CHECK_ALIGNOF for the struct. -dnl Calls PSI_CHECK_SIZEOF, PSI_CHECK_OFFSETOF and PSI_TYPE_INDIRECTON for each member. -AC_DEFUN(PSI_STRUCT, [ - PSI_CHECK_SIZEOF($1) - if PSI_SH_TEST_SIZEOF($1); then - PSI_CHECK_ALIGNOF($1) - psi_struct_name=m4_bregexp([$1], [^\(struct \)?\(\w+\)], [\2]) - psi_struct_members="{PSI_T_STRUCT, \"struct\", \"$psi_struct_name\", PSI_SH_ALIGNOF($1), PSI_SH_SIZEOF($1), 0, 0}" - ifelse([$2],,,[m4_map_args_sep([PSI_STRUCT_MEMBER($1, m4_normalize(], [))], [], $2)]) - psi_add_struct "$psi_struct_members" - if test "$1" = "$psi_struct_name"; then - psi_add_type "{PSI_T_STRUCT, \"$1\", \"$1\"}" - fi - fi -]) - -dnl PSI_UNION(union name, union/struct members) -dnl Check a union and its members and add a pre-defined union and possibly a -dnl pre-defined type for this union. -dnl Calls PSI_CHECK_SIZEOF for the union and each member. -dnl Calls PSI_CHECK_OFFSETOF and PSI_TYPE_INDIRECTON for each member. -AC_DEFUN(PSI_UNION, [ - PSI_CHECK_SIZEOF($1) - if PSI_SH_TEST_SIZEOF($1); then - PSI_CHECK_ALIGNOF($1) - psi_struct_name=m4_bregexp([$1], [^\(union \)?\(\w+\)], [\2]) - psi_struct_members="{PSI_T_UNION, \"union\", \"$psi_struct_name\", PSI_SH_ALIGNOF($1), PSI_SH_SIZEOF($1), 0, 0}" - ifelse([$2],,,[m4_map_args_sep([PSI_STRUCT_MEMBER($1, m4_normalize(], [))], [], $2)]) - psi_add_union "$psi_struct_members" - if test "$1" = "$psi_struct_name"; then - psi_add_type "{PSI_T_UNION, \"$1\", \"$1\"}" - fi - fi -])