-/* $Id$ */
-
-/* 7.11 Localization <locale.h>
+/* Localization <locale.h>
This file is part of the Public Domain C Library (PDCLib).
Permission is granted to use, modify, and / or redistribute at will.
#ifndef _PDCLIB_LOCALE_H
#define _PDCLIB_LOCALE_H _PDCLIB_LOCALE_H
-#include <_PDCLIB_int.h>
-_PDCLIB_BEGIN_EXTERN_C
+#include "_PDCLIB_int.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
#ifndef _PDCLIB_NULL_DEFINED
#define _PDCLIB_NULL_DEFINED _PDCLIB_NULL_DEFINED
TODO: Beware, values might change before v0.6 is released.
*/
/* Entire locale */
-#define LC_ALL 0
+#define LC_ALL -1
/* Collation (strcoll(), strxfrm()) */
-#define LC_COLLATE 1
+#define LC_COLLATE 0
/* Character types (<ctype.h>) */
-#define LC_CTYPE 2
+#define LC_CTYPE 1
/* Monetary formatting (as returned by localeconv) */
-#define LC_MONETARY 3
+#define LC_MONETARY 2
/* Decimal-point character (for printf() / scanf() functions), string
conversions, nonmonetary formatting as returned by localeconv */
-#define LC_NUMERIC 4
+#define LC_NUMERIC 3
/* Time formats (strftime(), wcsftime()) */
-#define LC_TIME 5
+#define LC_TIME 4
/* 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)
+#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;
extern struct _PDCLIB_locale _PDCLIB_global_locale;
#define LC_GLOBAL_LOCALE (&_PDCLIB_global_locale)
+#ifdef _PDCLIB_LOCALE_METHOD
+
+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
* the existing locale.
*
- * If newlocale is LC_GLOBAL_LOCALE, resets the thread's locale to use the
+ * If newlocale is LC_GLOBAL_LOCALE, resets the thread's locale to use the
* global locale.
*
- * Returns the previous thread locale. If the thread had no previous locale,
+ * Returns the previous thread locale. If the thread had no previous locale,
* returns the global locale.
*/
-locale_t uselocale(locale_t newlocale);
+locale_t uselocale( locale_t newlocale );
/* Returns a copy of loc */
-locale_t duplocale(locale_t loc);
+locale_t duplocale( locale_t loc );
/* Frees the passed locale object */
-void freelocale(locale_t loc);
+void freelocale( locale_t loc );
+#endif
#endif
-_PDCLIB_END_EXTERN_C
+#ifdef __cplusplus
+}
#endif
+#endif