]> git.saurik.com Git - apple/libc.git/blobdiff - locale/xlocale_private.h
Libc-498.tar.gz
[apple/libc.git] / locale / xlocale_private.h
index 7088d55837474f058e0717bfc5435b63f986ac7e..9b6b127d517a35f3fec014b9274f10fa4b9d8443 100644 (file)
 #define _XLOCALE_PRIVATE_H_
 
 #include <sys/cdefs.h>
+#define __DARWIN_XLOCALE_PRIVATE
 #include <xlocale.h>
+#undef __DARWIN_XLOCALE_PRIVATE
 #include <stdlib.h>
 #include <locale.h>
 #include <libkern/OSAtomic.h>
 #include <pthread.h>
+#include <limits.h>
 #include "setlocale.h"
 #include "collate.h"
 #include "runetype.h"
@@ -57,9 +60,11 @@ typedef void (*__free_extra_t)(void *);
 struct __xlocale_st_collate {
        __STRUCT_COMMON
        char __encoding[ENCODING_LEN + 1];
-       unsigned char __substitute_table[UCHAR_MAX + 1][STR_LEN];
-       struct __collate_st_char_pri __char_pri_table[UCHAR_MAX + 1];
+       struct __collate_st_info __info;
+       struct __collate_st_subst *__substitute_table[COLL_WEIGHTS_MAX];
        struct __collate_st_chain_pri *__chain_pri_table;
+       struct __collate_st_large_char_pri *__large_char_pri_table;
+       struct __collate_st_char_pri __char_pri_table[UCHAR_MAX + 1];
 };
 struct __xlocale_st_runelocale {
        __STRUCT_COMMON
@@ -112,8 +117,14 @@ struct __xlocale_st_localeconv {
 };
 
 /* the extended locale structure */
+    /* values for __numeric_fp_cvt */
+#define        LC_NUMERIC_FP_UNINITIALIZED     0
+#define        LC_NUMERIC_FP_SAME_LOCALE       1
+#define        LC_NUMERIC_FP_USE_LOCALE        2
+
 struct _xlocale {
 /* The item(s) before __magic are not copied when duplicating locale_t's */
+       __STRUCT_COMMON /* only used for locale_t's in __lc_numeric_loc */
        /* 10 independent mbstate_t buffers! */
        __darwin_mbstate_t __mbs_mblen;
        __darwin_mbstate_t __mbs_mbrlen;
@@ -136,6 +147,7 @@ struct _xlocale {
        unsigned char _time_using_locale;
        unsigned char __mlocale_changed;
        unsigned char __nlocale_changed;
+       unsigned char __numeric_fp_cvt;
 /* collate */
        struct __xlocale_st_collate *__lc_collate;
 /* ctype */
@@ -146,6 +158,7 @@ struct _xlocale {
        struct __xlocale_st_monetary *__lc_monetary;
 /* numeric */
        struct __xlocale_st_numeric *__lc_numeric;
+       struct _xlocale *__lc_numeric_loc;
 /* time */
        struct __xlocale_st_time *__lc_time;
 /* localeconv */
@@ -172,6 +185,7 @@ __private_extern__ pthread_key_t    __locale_key;
 __BEGIN_DECLS
 
 void   __ldpart_free_extra(struct __xlocale_st_ldpart *);
+locale_t __numeric_ctype(locale_t);
 void   __xlocale_init(void);
 
 static inline __attribute__((always_inline)) locale_t