/* * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY * * FILE: tst_types.h * * Definitions of data types for each test function */ #ifndef TST_TYPES_H #define TST_TYPES_H #include #include #include #include "tst_funcs.h" #include "tgn_funcdef.h" #define MBSSIZE 24 #define WCSSIZE 12 #define MONFMTSIZE 16 #define MONSIZE 64 #define USE_MBCURMAX 99 /* well, but ... */ #define TST_DBL_EPS 2.22153e-16 #define WCSTOK_SEQNUM 3 #define MBLEN_SEQNUM 3 #define MBTOWC_SEQNUM 3 #define MBSTOWCS_SEQNUM 3 #define WCTOMB_SEQNUM 3 #define WCSTOMBS_SEQNUM 3 #define MBRLEN_SEQNUM 3 #define MBRTOWC_SEQNUM 3 #define MBSRTOWCS_SEQNUM 3 #define WCRTOMB_SEQNUM 3 #define WCSRTOMBS_SEQNUM 3 /* Maximum numbers of test in one of the _loc arrays. */ #define MAX_LOC_TEST 300 /*----------------------------------------------------------------------*/ /* FUNCTION */ /*----------------------------------------------------------------------*/ typedef struct { char *func_str; int func_id; } TST_FID; typedef struct { int func_id; const char *locale; } TST_HEAD; typedef struct { TST_HEAD *head; } TST_FUNCS; /*----------------------------------------------------------------------*/ /* ISW*: int isw* (wchar_t wc) */ /*----------------------------------------------------------------------*/ TST_ISW_STRUCT (ALNUM, alnum); TST_ISW_STRUCT (ALPHA, alpha); TST_ISW_STRUCT (CNTRL, cntrl); TST_ISW_STRUCT (DIGIT, digit); TST_ISW_STRUCT (GRAPH, graph); TST_ISW_STRUCT (LOWER, lower); TST_ISW_STRUCT (PRINT, print); TST_ISW_STRUCT (PUNCT, punct); TST_ISW_STRUCT (SPACE, space); TST_ISW_STRUCT (UPPER, upper); TST_ISW_STRUCT (XDIGIT, xdigit); typedef struct { wint_t wc; const char *ts; } TIN_ISWCTYPE_REC; typedef TEX_ERRET_REC (int) TEX_ISWCTYPE_REC; TMD_RECHEAD (ISWCTYPE); /*----------------------------------------------------------------------*/ /* MBLEN: int mblen (const char *s, size_t n) */ /*----------------------------------------------------------------------*/ typedef struct { char s_flg; char s[MBSSIZE]; size_t n; } TIN_MBLEN_REC; typedef TEX_ERRET_REC (int) TEX_MBLEN_REC; TMD_RECHEAD (MBLEN); /*----------------------------------------------------------------------*/ /* MBRLEN: size_t mbrlen (const char *s, size_t n, mbstate_t *ps) */ /*----------------------------------------------------------------------*/ typedef struct { struct { int s_flg; char s[MBSSIZE]; size_t n; int t_flg; int t_init; } seq[MBRLEN_SEQNUM]; } TIN_MBRLEN_REC; typedef TEX_ERRET_REC_SEQ (size_t, MBRLEN_SEQNUM) TEX_MBRLEN_REC; TMD_RECHEAD (MBRLEN); /*----------------------------------------------------------------------*/ /* MBRTOWC: size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, */ /* mbstate_t *ps) */ /*----------------------------------------------------------------------*/ typedef struct { struct { int w_flg; int s_flg; char s[MBSSIZE]; size_t n; int t_flg; int t_init; } seq[MBRTOWC_SEQNUM]; } TIN_MBRTOWC_REC; typedef struct { struct { TMD_ERRET (size_t); wchar_t wc; } seq[MBRTOWC_SEQNUM]; } TEX_MBRTOWC_REC; TMD_RECHEAD (MBRTOWC); /*----------------------------------------------------------------------*/ /* MBSRTOWCS: size_t mbsrtowcs (wchar_t *ws, const char **s, size_t n, */ /* mbstate_t *ps ) */ /*----------------------------------------------------------------------*/ typedef struct { struct { int w_flg; char s[MBSSIZE]; size_t n; int t_flg; int t_init; } seq[MBSRTOWCS_SEQNUM]; } TIN_MBSRTOWCS_REC; typedef struct { struct { TMD_ERRET (size_t); wchar_t ws[WCSSIZE]; } seq[MBSRTOWCS_SEQNUM]; } TEX_MBSRTOWCS_REC; TMD_RECHEAD (MBSRTOWCS); /*----------------------------------------------------------------------*/ /* MBSTOWCS: size_t mbstowcs (wchar_t *ws, const char *s, size_t n) */ /*----------------------------------------------------------------------*/ typedef struct { struct { int w_flg; int s_flg; const char *s; size_t n; } seq[MBSTOWCS_SEQNUM]; } TIN_MBSTOWCS_REC; typedef TEX_MBSRTOWCS_REC TEX_MBSTOWCS_REC; /* MBSRTOWCS_SEQNUM == MBSTOWCS_SEQNUM */ TMD_RECHEAD (MBSTOWCS); /*----------------------------------------------------------------------*/ /* MBTOWC: int mbtowc (wchar_t *wc, const char *s, size_t n) */ /*----------------------------------------------------------------------*/ typedef TIN_MBSTOWCS_REC TIN_MBTOWC_REC; /* MBTOWC_SEQNUM == MBSTOWCS_SEQNUM */ typedef struct { struct { TMD_ERRET (int); wchar_t wc; } seq[MBTOWC_SEQNUM]; } TEX_MBTOWC_REC; TMD_RECHEAD (MBTOWC); /*----------------------------------------------------------------------*/ /* STRCOLL: int strcoll (const char *s1, const char *s2) */ /*----------------------------------------------------------------------*/ typedef struct { char s1[MBSSIZE]; char s2[MBSSIZE]; } TIN_STRCOLL_REC; typedef TEX_ERRET_REC (int) TEX_STRCOLL_REC; TMD_RECHEAD (STRCOLL); /*----------------------------------------------------------------------*/ /* STRFMON: size_t strfmon (char *buf, size_t nbytes, */ /* const char *fmt, ... ) */ /*----------------------------------------------------------------------*/ typedef struct { int nbytes; char fmt[MONFMTSIZE]; double val; } TIN_STRFMON_REC; typedef struct { TMD_ERRET (size_t); char mon[MONSIZE]; } TEX_STRFMON_REC; TMD_RECHEAD (STRFMON); /*----------------------------------------------------------------------*/ /* STRXFRM: size_t strxfrm (char *s1, const char *s2, size_t n) */ /*----------------------------------------------------------------------*/ typedef struct { char org1[MBSSIZE]; char org2[MBSSIZE]; size_t n1, n2; } TIN_STRXFRM_REC; typedef TEX_ERRET_REC (size_t) TEX_STRXFRM_REC; /* only for org2[] */ TMD_RECHEAD (STRXFRM); /*----------------------------------------------------------------------*/ /* SWSCANF: int swscanf (const wchar_t *ws, const wchar_t *fmt, ...) */ /*----------------------------------------------------------------------*/ typedef struct { wchar_t ws[WCSSIZE * 3]; wchar_t fmt[WCSSIZE * 3]; int wch; } TIN_SWSCANF_REC; typedef struct { TMD_ERRET (int); int val_int; /* %d */ unsigned val_uns; /* %u */ float val_flt; /* %f */ int val_c; /* %c */ char val_s[MBSSIZE * 2]; /* %s */ wchar_t val_S[WCSSIZE * 2]; /* %lc, %ls, %C, %S */ } TEX_SWSCANF_REC; TMD_RECHEAD (SWSCANF); /*----------------------------------------------------------------------*/ /* TOWCTRANS: wint_t towctrans (wint_t wc, wctrans_t desc) */ /*----------------------------------------------------------------------*/ typedef TIN_ISWCTYPE_REC TIN_TOWCTRANS_REC; typedef TEX_ERRET_REC (wint_t) TEX_TOWCTRANS_REC; TMD_RECHEAD (TOWCTRANS); /*----------------------------------------------------------------------*/ /* TOW*ER: wint_t tow*er (wint_t wc) */ /*----------------------------------------------------------------------*/ TST_TOW_STRUCT (LOWER, lower); TST_TOW_STRUCT (UPPER, upper); /*----------------------------------------------------------------------*/ /* WCRTOMB: wchar_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps) */ /*----------------------------------------------------------------------*/ typedef struct { int s_flg; wchar_t wc; int t_flg; int t_init; } TIN_WCRTOMB_REC; typedef struct { TMD_ERRET (wchar_t); char s[MBSSIZE]; } TEX_WCRTOMB_REC; TMD_RECHEAD (WCRTOMB); /*----------------------------------------------------------------------*/ /* WCSCAT: wchar_t *wcscat (wchar_t *ws1, wchar_t *ws2) */ /*----------------------------------------------------------------------*/ typedef struct { wchar_t ws1[WCSSIZE]; wchar_t ws2[WCSSIZE]; } TIN_WCSCAT_REC; typedef struct { TMD_ERRET (wchar_t *); wchar_t ws[WCSSIZE]; } TEX_WCSCAT_REC; TMD_RECHEAD (WCSCAT); /*----------------------------------------------------------------------*/ /* WCSCHR: wchar_t *wcschr (wchar_t *ws, wchar_t wc); */ /*----------------------------------------------------------------------*/ typedef struct { wchar_t ws[WCSSIZE]; wchar_t wc; } TIN_WCSCHR_REC; typedef TEX_ERRET_REC (wchar_t *) TEX_WCSCHR_REC; TMD_RECHEAD (WCSCHR); /*----------------------------------------------------------------------*/ /* WCSCMP: int wcscmp (const wchar_t *ws1, const wchar_t *ws2) */ /*----------------------------------------------------------------------*/ typedef TIN_WCSCAT_REC TIN_WCSCMP_REC; typedef TEX_ERRET_REC (int) TEX_WCSCMP_REC; TMD_RECHEAD (WCSCMP); /*----------------------------------------------------------------------*/ /* WCSCOLL: int wcscoll (const wchar_t *ws1, const wchar_t *ws2) */ /*----------------------------------------------------------------------*/ typedef TIN_WCSCMP_REC TIN_WCSCOLL_REC; typedef struct { TMD_ERRET (int); int cmp_flg; } TEX_WCSCOLL_REC; TMD_RECHEAD (WCSCOLL); /*----------------------------------------------------------------------*/ /* WCSCPY: wchar_t *wcscpy (wchar_t *ws1, const wchar_t *ws2) */ /*----------------------------------------------------------------------*/ typedef struct { wchar_t ws[WCSSIZE]; /* ws2: original string */ } TIN_WCSCPY_REC; typedef TEX_WCSCAT_REC TEX_WCSCPY_REC; TMD_RECHEAD (WCSCPY); /*----------------------------------------------------------------------*/ /* WCSCSPN: size_t wcscspn (const wchar_t *ws1, const wchar_t *ws2) */ /*----------------------------------------------------------------------*/ typedef TIN_WCSCAT_REC TIN_WCSCSPN_REC; typedef TEX_ERRET_REC (size_t) TEX_WCSCSPN_REC; TMD_RECHEAD (WCSCSPN); /*----------------------------------------------------------------------*/ /* WCSLEN: size_t wcslen (const wchar_t *ws) */ /*----------------------------------------------------------------------*/ typedef TIN_WCSCPY_REC TIN_WCSLEN_REC; typedef TEX_ERRET_REC (size_t) TEX_WCSLEN_REC; TMD_RECHEAD (WCSLEN); /*----------------------------------------------------------------------*/ /* WCSNCAT: wchar_t *wcsncat (wchar_t *ws1, const wchar_t *ws2, */ /* size_t n) */ /*----------------------------------------------------------------------*/ typedef struct { wchar_t ws1[WCSSIZE]; wchar_t ws2[WCSSIZE]; size_t n; } TIN_WCSNCAT_REC; typedef TEX_WCSCAT_REC TEX_WCSNCAT_REC; TMD_RECHEAD (WCSNCAT); /*----------------------------------------------------------------------*/ /* WCSNCMP: int *wcsncmp (const wchar_t *ws1, const wchar_t *ws2, */ /* size_t n) */ /*----------------------------------------------------------------------*/ typedef TIN_WCSNCAT_REC TIN_WCSNCMP_REC; typedef TEX_ERRET_REC (int) TEX_WCSNCMP_REC; TMD_RECHEAD (WCSNCMP); /*----------------------------------------------------------------------*/ /* WCSNCPY: wchar_t *wcsncpy (wchar_t *ws1, const wchar_t *ws2, */ /* size_t n) */ /*----------------------------------------------------------------------*/ typedef struct { wchar_t ws[WCSSIZE]; /* ws2: original string */ size_t n; } TIN_WCSNCPY_REC; typedef TEX_WCSCPY_REC TEX_WCSNCPY_REC; TMD_RECHEAD (WCSNCPY); /*----------------------------------------------------------------------*/ /* WCSPBRK: wchar_t *wcspbrk (const wchar_t *ws1, const wchar_t *ws2) */ /*----------------------------------------------------------------------*/ typedef TIN_WCSCSPN_REC TIN_WCSPBRK_REC; typedef struct { TMD_ERRET (wchar_t *); wchar_t wc; } TEX_WCSPBRK_REC; TMD_RECHEAD (WCSPBRK); /*----------------------------------------------------------------------*/ /* WCSRTOMBS: size_t wcsrtombs (char *s, const wchar_t **ws, size_t n, */ /* mbstate_t *ps) */ /*----------------------------------------------------------------------*/ typedef struct { int s_flg; int w_flg; /* don't need this */ wchar_t ws[WCSSIZE]; size_t n; int t_flg; int t_init; } TIN_WCSRTOMBS_REC; typedef struct { TMD_ERRET (size_t); char s[MBSSIZE]; } TEX_WCSRTOMBS_REC; TMD_RECHEAD (WCSRTOMBS); /*----------------------------------------------------------------------*/ /* WCSSPN: size_t wcsspn (const wchar_t *ws1, const wchar_t *ws2) */ /*----------------------------------------------------------------------*/ typedef TIN_WCSCSPN_REC TIN_WCSSPN_REC; typedef TEX_WCSCSPN_REC TEX_WCSSPN_REC; TMD_RECHEAD (WCSSPN); /*----------------------------------------------------------------------*/ /* WCSSTR: wchar_t *wcsstr (const wchar_t *ws1, const wchar_t *ws2) */ /*----------------------------------------------------------------------*/ typedef TIN_WCSCSPN_REC TIN_WCSSTR_REC; typedef TEX_ERRET_REC (wchar_t *) TEX_WCSSTR_REC; TMD_RECHEAD (WCSSTR); /*----------------------------------------------------------------------*/ /* WCSTOD: double wcstod (const wchar_t *np, wchar_t **endp) */ /*----------------------------------------------------------------------*/ typedef struct { wchar_t np[WCSSIZE]; } TIN_WCSTOD_REC; typedef struct { TMD_ERRET (double); double val; wchar_t fwc; } TEX_WCSTOD_REC; TMD_RECHEAD (WCSTOD); /*----------------------------------------------------------------------*/ /* WCSTOK: wchar_t *wcstok (wchar_t *ws, const wchar_t *dlm, */ /* wchar_t **pt) */ /*----------------------------------------------------------------------*/ typedef struct { struct { int w_flg; wchar_t ws[WCSSIZE]; wchar_t dt[WCSSIZE]; /* delimiter */ } seq[WCSTOK_SEQNUM]; } TIN_WCSTOK_REC; typedef struct { struct { TMD_ERRET (wchar_t *); wchar_t ws[WCSSIZE]; } seq[WCSTOK_SEQNUM]; } TEX_WCSTOK_REC; TMD_RECHEAD (WCSTOK); /*----------------------------------------------------------------------*/ /* WCSTOMBS: size_t wcstombs (char s, const wchar_t *ws, size_t n) */ /*----------------------------------------------------------------------*/ typedef struct { int s_flg; int w_flg; /* currently we don't need it. */ wchar_t ws[WCSSIZE]; size_t n; } TIN_WCSTOMBS_REC; typedef struct { TMD_ERRET (size_t); char s[MBSSIZE]; } TEX_WCSTOMBS_REC; TMD_RECHEAD (WCSTOMBS); /*----------------------------------------------------------------------*/ /* WCSWIDTH: int wcswidth (const wchar_t *ws, size_t n) */ /*----------------------------------------------------------------------*/ typedef TIN_WCSNCPY_REC TIN_WCSWIDTH_REC; typedef TEX_ERRET_REC (int) TEX_WCSWIDTH_REC; TMD_RECHEAD (WCSWIDTH); /*----------------------------------------------------------------------*/ /* WCSXFRM: size_t wcsxfrm (wchar_t *ws1, const wchar_t *ws2, size_t n)*/ /*----------------------------------------------------------------------*/ typedef struct { wchar_t org1[WCSSIZE]; wchar_t org2[WCSSIZE]; int n1, n2; } TIN_WCSXFRM_REC; typedef TEX_ERRET_REC (size_t) TEX_WCSXFRM_REC; /* only for org2[] */ TMD_RECHEAD (WCSXFRM); /*----------------------------------------------------------------------*/ /* WCTOB: int wctob (wint_t wc) */ /*----------------------------------------------------------------------*/ typedef struct { wint_t wc; } TIN_WCTOB_REC; typedef TEX_ERRET_REC (int) TEX_WCTOB_REC; TMD_RECHEAD (WCTOB); /*----------------------------------------------------------------------*/ /* WCTOMB: int wctomb (char *s, wchar_t wc) */ /*----------------------------------------------------------------------*/ typedef struct { int s_flg; wchar_t wc; } TIN_WCTOMB_REC; typedef struct { TMD_ERRET (int); char s[MBSSIZE]; } TEX_WCTOMB_REC; TMD_RECHEAD (WCTOMB); /*----------------------------------------------------------------------*/ /* WCTRANS: wctrans_t wctrans (const char *charclass) */ /*----------------------------------------------------------------------*/ typedef struct { char class[MBSSIZE]; } TIN_WCTRANS_REC; typedef TEX_ERRET_REC (wctrans_t) TEX_WCTRANS_REC; TMD_RECHEAD (WCTRANS); /*----------------------------------------------------------------------*/ /* WCTYPE: wctype_t wctype (const char *class) */ /*----------------------------------------------------------------------*/ typedef TIN_WCTRANS_REC TIN_WCTYPE_REC; typedef TEX_ERRET_REC (wctype_t) TEX_WCTYPE_REC; TMD_RECHEAD (WCTYPE); /*----------------------------------------------------------------------*/ /* WCWIDTH: int wcwidth (wchar_t wc) */ /*----------------------------------------------------------------------*/ typedef struct { wchar_t wc; } TIN_WCWIDTH_REC; typedef TEX_ERRET_REC (int) TEX_WCWIDTH_REC; TMD_RECHEAD (WCWIDTH); #endif /* TST_TYPES_H */