--- mstools/h/wchar.h 2018/08/09 18:20:30 1.1 +++ mstools/h/wchar.h 2018/08/09 18:21:08 1.1.1.2 @@ -21,12 +21,39 @@ extern "C" { #endif -#ifndef MIPS -#if (_MSC_VER <= 600) -#define __cdecl _cdecl -#endif + +/* + * Conditional macro definition for function calling type and variable type + * qualifiers. + */ +#if ( (_MSC_VER >= 800) && (_M_IX86 >= 300) ) + +/* + * Definitions for MS C8-32 (386/486) compiler + */ +#define _CRTAPI1 __cdecl +#define _CRTAPI2 __cdecl + +#elif ( _MSC_VER == 600 ) + +/* + * Definitions for old MS C6-386 compiler + */ +#define _CRTAPI1 _cdecl +#define _CRTAPI2 _cdecl +#define _M_IX86 300 + +#else + +/* + * Other compilers (e.g., MIPS) + */ +#define _CRTAPI1 +#define _CRTAPI2 + #endif + #ifndef _SIZE_T_DEFINED typedef unsigned int size_t; #define _SIZE_T_DEFINED @@ -130,24 +157,24 @@ extern wctype_t *_pwctype; /* character classification function prototypes */ -int iswalpha(wint_t); -int iswupper(wint_t); -int iswlower(wint_t); -int iswdigit(wint_t); -int iswxdigit(wint_t); -int iswspace(wint_t); -int iswpunct(wint_t); -int iswalnum(wint_t); -int iswprint(wint_t); -int iswgraph(wint_t); -int iswcntrl(wint_t); -int iswascii(wint_t); +int _CRTAPI1 iswalpha(wint_t); +int _CRTAPI1 iswupper(wint_t); +int _CRTAPI1 iswlower(wint_t); +int _CRTAPI1 iswdigit(wint_t); +int _CRTAPI1 iswxdigit(wint_t); +int _CRTAPI1 iswspace(wint_t); +int _CRTAPI1 iswpunct(wint_t); +int _CRTAPI1 iswalnum(wint_t); +int _CRTAPI1 iswprint(wint_t); +int _CRTAPI1 iswgraph(wint_t); +int _CRTAPI1 iswcntrl(wint_t); +int _CRTAPI1 iswascii(wint_t); -wchar_t towupper(wchar_t); -wchar_t towlower(wchar_t); +wchar_t _CRTAPI1 towupper(wchar_t); +wchar_t _CRTAPI1 towlower(wchar_t); /* UNDONE: add wctype_t set_wctype(const char* property); */ -int is_wctype(wint_t, wctype_t); +int _CRTAPI1 is_wctype(wint_t, wctype_t); #define isleadbyte(_c) (0) /* #define is_wctype(_c,_t) ((_c) < 256 ? _pwctype[_c] & _t : 0 ) */ @@ -171,52 +198,58 @@ int is_wctype(wint_t, wctype_t); #ifndef _WSTDIO_DEFINED -int fwprintf(FILE *, const wchar_t *, ...); -int wprintf(const wchar_t *, ...); -int _snwprintf(wchar_t *, size_t, const wchar_t *, ...); -int swprintf(wchar_t *, const wchar_t *, ...); -int vfwprintf(FILE *, const wchar_t *, va_list); -int vwprintf(const wchar_t *, va_list); -int _vsnwprintf(wchar_t *, size_t, const wchar_t *, va_list); -int vswprintf(wchar_t *, const wchar_t *, va_list); -/* UNDONE: add wscanf, swscanf, fwscanf */ +int _CRTAPI2 fwprintf(FILE *, const wchar_t *, ...); +int _CRTAPI2 wprintf(const wchar_t *, ...); +int _CRTAPI2 _snwprintf(wchar_t *, size_t, const wchar_t *, ...); +int _CRTAPI2 swprintf(wchar_t *, const wchar_t *, ...); +int _CRTAPI1 vfwprintf(FILE *, const wchar_t *, va_list); +int _CRTAPI1 vwprintf(const wchar_t *, va_list); +int _CRTAPI1 _vsnwprintf(wchar_t *, size_t, const wchar_t *, va_list); +int _CRTAPI1 vswprintf(wchar_t *, const wchar_t *, va_list); +int _CRTAPI2 fwscanf(FILE *, const wchar_t *, ...); +int _CRTAPI2 swscanf(const wchar_t *, const wchar_t *, ...); +int _CRTAPI2 wscanf(const wchar_t *, ...); #define _WSTDIO_DEFINED #endif #ifndef _WSTDLIB_DEFINED -/* UNDONE: add wcstod, etc. */ -/* #define _WSTDLIB_DEFINED */ +/* also defined in stdlib.h */ +double _CRTAPI1 wcstod(const wchar_t *, wchar_t **); +long _CRTAPI1 wcstol(const wchar_t *, wchar_t **, int); +unsigned long _CRTAPI1 wcstoul(const wchar_t *, wchar_t **, int); +#define _WSTDLIB_DEFINED #endif #ifndef _WSTRING_DEFINED -wchar_t * wcscat(wchar_t *, const wchar_t *); -wchar_t * wcschr(const wchar_t *, wchar_t); -int wcscmp(const wchar_t *, const wchar_t *); -wchar_t * wcscpy(wchar_t *, const wchar_t *); -size_t wcscspn(const wchar_t *, const wchar_t *); -size_t wcslen(const wchar_t *); -wchar_t * wcsncat(wchar_t *, const wchar_t *, size_t); -int wcsncmp(const wchar_t *, const wchar_t *, size_t); -wchar_t * wcsncpy(wchar_t *, const wchar_t *, size_t); -wchar_t * wcspbrk(const wchar_t *, const wchar_t *); -wchar_t * wcsrchr(const wchar_t *, wchar_t); -size_t wcsspn(const wchar_t *, const wchar_t *); -wchar_t * wcsstr(const wchar_t *, const wchar_t *); - -wchar_t * _wcsdup(const wchar_t *); -int _wcsicmp(const wchar_t *, const wchar_t *); -int _wcsnicmp(const wchar_t *, const wchar_t *, size_t); -wchar_t * _wcsnset(wchar_t *, wchar_t, size_t); -wchar_t * _wcsrev(wchar_t *); -wchar_t * _wcsset(wchar_t *, wchar_t); - -wchar_t * _wcslwr(wchar_t *); -wchar_t * _wcsupr(wchar_t *); -size_t wcsxfrm(wchar_t *, const wchar_t *, size_t); -int wcscoll(const wchar_t *, const wchar_t *); -int _wcsicoll(const wchar_t *, const wchar_t *); +wchar_t * _CRTAPI1 wcscat(wchar_t *, const wchar_t *); +wchar_t * _CRTAPI1 wcschr(const wchar_t *, wchar_t); +int _CRTAPI1 wcscmp(const wchar_t *, const wchar_t *); +wchar_t * _CRTAPI1 wcscpy(wchar_t *, const wchar_t *); +size_t _CRTAPI1 wcscspn(const wchar_t *, const wchar_t *); +size_t _CRTAPI1 wcslen(const wchar_t *); +wchar_t * _CRTAPI1 wcsncat(wchar_t *, const wchar_t *, size_t); +int _CRTAPI1 wcsncmp(const wchar_t *, const wchar_t *, size_t); +wchar_t * _CRTAPI1 wcsncpy(wchar_t *, const wchar_t *, size_t); +wchar_t * _CRTAPI1 wcspbrk(const wchar_t *, const wchar_t *); +wchar_t * _CRTAPI1 wcsrchr(const wchar_t *, wchar_t); +size_t _CRTAPI1 wcsspn(const wchar_t *, const wchar_t *); +wchar_t * _CRTAPI1 wcsstr(const wchar_t *, const wchar_t *); +wchar_t * _CRTAPI1 wcstok(wchar_t *, const wchar_t *); + +wchar_t * _CRTAPI1 _wcsdup(const wchar_t *); +int _CRTAPI1 _wcsicmp(const wchar_t *, const wchar_t *); +int _CRTAPI1 _wcsnicmp(const wchar_t *, const wchar_t *, size_t); +wchar_t * _CRTAPI1 _wcsnset(wchar_t *, wchar_t, size_t); +wchar_t * _CRTAPI1 _wcsrev(wchar_t *); +wchar_t * _CRTAPI1 _wcsset(wchar_t *, wchar_t); + +wchar_t * _CRTAPI1 _wcslwr(wchar_t *); +wchar_t * _CRTAPI1 _wcsupr(wchar_t *); +size_t _CRTAPI1 wcsxfrm(wchar_t *, const wchar_t *, size_t); +int _CRTAPI1 wcscoll(const wchar_t *, const wchar_t *); +int _CRTAPI1 _wcsicoll(const wchar_t *, const wchar_t *); /* old names */ #define wcswcs wcsstr