Print this page
2964 need POSIX 2008 locale object support
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Approved by: TBD

*** 22,43 **** /* wctype.h 1.13 89/11/02 SMI; JLE */ /* from AT&T JAE 2.1 */ /* definitions for international functions */ /* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _WCTYPE_H #define _WCTYPE_H ! #pragma ident "%Z%%M% %I% %E% SMI" ! #include <iso/wctype_iso.h> ! #if !defined(__XOPEN_OR_POSIX) && !defined(_STRICT_STDC) || \ ! defined(__EXTENSIONS__) #include <ctype.h> #include <wchar.h> #endif /* --- 22,42 ---- /* wctype.h 1.13 89/11/02 SMI; JLE */ /* from AT&T JAE 2.1 */ /* definitions for international functions */ /* + * Copyright 2014 Garrett D'Amore <garrett@damore.org> * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _WCTYPE_H #define _WCTYPE_H ! #include <sys/feature_tests.h> #include <iso/wctype_iso.h> ! #ifndef _STRICT_SYMBOLS #include <ctype.h> #include <wchar.h> #endif /*
*** 62,87 **** using std::towupper; using std::wctrans; using std::towctrans; using std::iswctype; using std::wctype; #endif - /* - * This header needs to be included here because it relies on the global - * visibility of wint_t in the C++ environment. - */ - - #include <iso/wctype_c99.h> - #ifdef __cplusplus extern "C" { #endif /* do not allow any of the following in a strictly conforming application */ ! #if !defined(__XOPEN_OR_POSIX) && !defined(_STRICT_STDC) || \ ! defined(__EXTENSIONS__) /* * data structure for supplementary code set * for character class and conversion */ --- 61,81 ---- using std::towupper; using std::wctrans; using std::towctrans; using std::iswctype; using std::wctype; + #if __cplusplus >= 201103L + using std::iswblank; #endif + #endif #ifdef __cplusplus extern "C" { #endif /* do not allow any of the following in a strictly conforming application */ ! #ifndef _STRICT_SYMBOLS /* * data structure for supplementary code set * for character class and conversion */
*** 109,145 **** #define iswascii(c) isascii(c) /* isw*, except iswascii(), are not macros any more. They become functions */ #ifdef __STDC__ - extern unsigned _iswctype(wchar_t, int); - extern wchar_t _trwctype(wchar_t, int); /* is* also become functions */ extern int isphonogram(wint_t); extern int isideogram(wint_t); extern int isenglish(wint_t); extern int isnumber(wint_t); extern int isspecial(wint_t); ! #else ! extern unsigned _iswctype(); ! extern wchar_t _trwctype(); /* is* also become functions */ extern int isphonogram(); extern int isideogram(); extern int isenglish(); extern int isnumber(); extern int isspecial(); #endif #define iscodeset0(c) isascii(c) #define iscodeset1(c) (((c) & WCHAR_CSMASK) == WCHAR_CS1) #define iscodeset2(c) (((c) & WCHAR_CSMASK) == WCHAR_CS2) #define iscodeset3(c) (((c) & WCHAR_CSMASK) == WCHAR_CS3) ! #endif /* !defined(__XOPEN_OR_POSIX)... */ #ifdef __cplusplus } #endif #endif /* _WCTYPE_H */ --- 103,195 ---- #define iswascii(c) isascii(c) /* isw*, except iswascii(), are not macros any more. They become functions */ #ifdef __STDC__ /* is* also become functions */ extern int isphonogram(wint_t); extern int isideogram(wint_t); extern int isenglish(wint_t); extern int isnumber(wint_t); extern int isspecial(wint_t); ! /* From BSD/MacOS */ ! extern int iswideogram(wint_t); ! extern int iswphonogram(wint_t); ! extern int iswnumber(wint_t); ! extern int iswhexnumber(wint_t); ! extern int iswspecial(wint_t); ! #else /* __STDC__ */ ! /* is* also become functions */ extern int isphonogram(); extern int isideogram(); extern int isenglish(); extern int isnumber(); extern int isspecial(); + /* From BSD/MacOS */ + extern int iswideogram(); + extern int iswphonogram(); + extern int iswnumber(); + extern int iswspecial(); #endif #define iscodeset0(c) isascii(c) #define iscodeset1(c) (((c) & WCHAR_CSMASK) == WCHAR_CS1) #define iscodeset2(c) (((c) & WCHAR_CSMASK) == WCHAR_CS2) #define iscodeset3(c) (((c) & WCHAR_CSMASK) == WCHAR_CS3) ! #endif /* !defined(_STRICT_SYMBOLS)... */ + + /* XPG7 extended locale support */ + #if defined(_XPG7) || !defined(_STRICT_SYMBOLS) + + #ifndef _LOCALE_T + #define _LOCALE_T + typedef struct locale *locale_t; + #endif + + #if defined(__STDC__) + extern wint_t towlower_l(wint_t, locale_t); + extern wint_t towupper_l(wint_t, locale_t); + extern wint_t towctrans_l(wint_t, wctrans_t, locale_t); + extern int iswctype_l(wint_t, wctype_t, locale_t); + extern int iswalnum_l(wint_t, locale_t); + extern int iswalpha_l(wint_t, locale_t); + extern int iswcntrl_l(wint_t, locale_t); + extern int iswdigit_l(wint_t, locale_t); + extern int iswgraph_l(wint_t, locale_t); + extern int iswlower_l(wint_t, locale_t); + extern int iswprint_l(wint_t, locale_t); + extern int iswpunct_l(wint_t, locale_t); + extern int iswspace_l(wint_t, locale_t); + extern int iswupper_l(wint_t, locale_t); + extern int iswxdigit_l(wint_t, locale_t); + extern wctrans_t wctrans_l(const char *, locale_t); + extern wctype_t wctype_l(const char *, locale_t); + #else /* __STDC__ */ + extern wint_t towlower_l(); + extern wint_t towupper_l(); + extern wint_t towctrans_l(); + extern int iswctype_l(); + extern int iswalnum_l(); + extern int iswalpha_l(); + extern int iswcntrl_l(); + extern int iswdigit_l(); + extern int iswgraph_l(); + extern int iswlower_l(); + extern int iswprint_l(); + extern int iswpunct_l(); + extern int iswspace_l(); + extern int iswupper_l(); + extern int iswxdigit_l(); + extern wctrans_t wctrans_l(); + extern wctype_t wctype_l(); + #endif /* __STDC__ */ + #endif /* defined(_XPG7) || !defined(_STRICT_SYMBOLS) */ + #ifdef __cplusplus } #endif #endif /* _WCTYPE_H */