* Change LC_* category numbers to better suit bitfield.
* Introduce LC_*_MASK for newlocale.
* Add newlocale
TODO: Beware, values might change before v0.6 is released.
*/
/* Entire locale */
TODO: Beware, values might change before v0.6 is released.
*/
/* Entire locale */
/* Collation (strcoll(), strxfrm()) */
/* Collation (strcoll(), strxfrm()) */
/* Character types (<ctype.h>) */
/* Character types (<ctype.h>) */
/* Monetary formatting (as returned by localeconv) */
/* Monetary formatting (as returned by localeconv) */
/* Decimal-point character (for printf() / scanf() functions), string
conversions, nonmonetary formatting as returned by localeconv */
/* Decimal-point character (for printf() / scanf() functions), string
conversions, nonmonetary formatting as returned by localeconv */
/* Time formats (strftime(), wcsftime()) */
/* Time formats (strftime(), wcsftime()) */
/* The category parameter can be any of the LC_* macros to specify if the call
to setlocale() shall affect the entire locale or only a portion thereof.
/* The category parameter can be any of the LC_* macros to specify if the call
to setlocale() shall affect the entire locale or only a portion thereof.
struct lconv * localeconv( void ) _PDCLIB_nothrow;
#if _PDCLIB_POSIX_MIN(2008)
struct lconv * localeconv( void ) _PDCLIB_nothrow;
#if _PDCLIB_POSIX_MIN(2008)
+#define LC_COLLATE_MASK (1 << LC_COLLATE)
+#define LC_CTYPE_MASK (1 << LC_CTYPE)
+#define LC_MONETARY_MASK (1 << LC_MONETARY)
+#define LC_NUMERIC_MASK (1 << LC_NUMERIC)
+#define LC_TIME_MASK (1 << LC_TIME)
+#define LC_ALL_MASK (LC_COLLATE_MASK | LC_CTYPE_MASK | LC_MONETARY_MASK | \
+ LC_NUMERIC_MASK | LC_TIME_MASK)
+
/* POSIX locale type */
typedef _PDCLIB_locale_t locale_t;
/* POSIX locale type */
typedef _PDCLIB_locale_t locale_t;
extern struct _PDCLIB_locale _PDCLIB_global_locale;
#define LC_GLOBAL_LOCALE (&_PDCLIB_global_locale)
extern struct _PDCLIB_locale _PDCLIB_global_locale;
#define LC_GLOBAL_LOCALE (&_PDCLIB_global_locale)
+locale_t newlocale(int category_mask, const char *locale, locale_t base);
+
/* Set the thread locale to newlocale
*
* If newlocale is (locale_t)0, then doesn't change the locale and just returns
/* Set the thread locale to newlocale
*
* If newlocale is (locale_t)0, then doesn't change the locale and just returns