]> pd.if.org Git - pdclib/blobdiff - includes/locale.h
PDCLib includes with quotes, not <>.
[pdclib] / includes / locale.h
index 21221e33e64df11f71a6eff1d767814d8fcc53d8..16aa64920cb7760272d36041b8b01cf5d2295a49 100644 (file)
@@ -1,6 +1,4 @@
-/* $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.
@@ -8,8 +6,11 @@
 
 #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
@@ -34,8 +35,6 @@ _PDCLIB_BEGIN_EXTERN_C
 */
 struct lconv
 {
-    struct _PDCLIB_ctype_t * ctype;  /* internal <ctype.h> information        */
-    char * _PDCLIB_errno_texts[_PDCLIB_ERRNO_MAX]; /* strerror() / perror()   */
     char * decimal_point;      /* decimal point character                     */
     char * thousands_sep;      /* character for seperating groups of digits   */
     char * grouping;           /* string indicating the size of digit groups  */
@@ -62,25 +61,22 @@ struct lconv
     char int_n_sign_posn;      /* Same as above, for international format     */
 };
 
-/* This is strictly internal, and visible here for technical reasons only. */
-extern struct lconv _PDCLIB_lconv;
-
 /* First arguments to setlocale().
    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.
@@ -98,29 +94,50 @@ char * setlocale( int category, const char * locale ) _PDCLIB_nothrow;
 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;
 
+/* Global locale */
+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