Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/lib/libc _locale_cache_t: change ldata and items to pointer ...



details:   https://anonhg.NetBSD.org/src/rev/4b7ddc3694b1
branches:  trunk
changeset: 753419:4b7ddc3694b1
user:      tnozaki <tnozaki%NetBSD.org@localhost>
date:      Sat Mar 27 15:25:21 2010 +0000

description:
_locale_cache_t: change ldata and items to pointer for future binary compatibility.

diffstat:

 lib/libc/citrus/citrus_lc_ctype.c     |    5 +-
 lib/libc/locale/global_locale.c       |  178 +++++++++++++++++----------------
 lib/libc/locale/localeconv.c          |    6 +-
 lib/libc/locale/nb_lc_messages_misc.h |    3 +-
 lib/libc/locale/nb_lc_monetary_misc.h |   49 +++++----
 lib/libc/locale/nb_lc_numeric_misc.h  |   13 +-
 lib/libc/locale/nb_lc_time_misc.h     |    3 +-
 lib/libc/locale/nl_langinfo.c         |    6 +-
 lib/libc/locale/setlocale_local.h     |    6 +-
 9 files changed, 143 insertions(+), 126 deletions(-)

diffs (truncated from 435 to 300 lines):

diff -r 0621cd604f6b -r 4b7ddc3694b1 lib/libc/citrus/citrus_lc_ctype.c
--- a/lib/libc/citrus/citrus_lc_ctype.c Sat Mar 27 13:34:16 2010 +0000
+++ b/lib/libc/citrus/citrus_lc_ctype.c Sat Mar 27 15:25:21 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: citrus_lc_ctype.c,v 1.3 2009/01/18 22:03:19 tnozaki Exp $ */
+/* $NetBSD: citrus_lc_ctype.c,v 1.4 2010/03/27 15:25:21 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: citrus_lc_ctype.c,v 1.3 2009/01/18 22:03:19 tnozaki Exp $");
+__RCSID("$NetBSD: citrus_lc_ctype.c,v 1.4 2010/03/27 15:25:21 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "reentrant.h"
@@ -126,6 +126,7 @@
     _RuneLocale * __restrict data)
 {
        _DIAGASSERT(cache != NULL);
+       _DIAGASSERT(cache->items != NULL);
        _DIAGASSERT(data != NULL);
 
        cache->ctype_tab = data->rl_ctype_tab;
diff -r 0621cd604f6b -r 4b7ddc3694b1 lib/libc/locale/global_locale.c
--- a/lib/libc/locale/global_locale.c   Sat Mar 27 13:34:16 2010 +0000
+++ b/lib/libc/locale/global_locale.c   Sat Mar 27 15:25:21 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: global_locale.c,v 1.3 2009/01/18 22:03:19 tnozaki Exp $ */
+/* $NetBSD: global_locale.c,v 1.4 2010/03/27 15:25:21 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: global_locale.c,v 1.3 2009/01/18 22:03:19 tnozaki Exp $");
+__RCSID("$NetBSD: global_locale.c,v 1.4 2010/03/27 15:25:21 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -48,6 +48,93 @@
 
 #include "setlocale_local.h"
 
+static struct lconv _global_ldata = {
+       .decimal_point          = __UNCONST("."),
+       .thousands_sep          = __UNCONST(""),
+       .grouping               = __UNCONST(""),
+       .int_curr_symbol        = __UNCONST(""),
+       .currency_symbol        = __UNCONST(""),
+       .mon_decimal_point      = __UNCONST(""),
+       .mon_thousands_sep      = __UNCONST(""),
+       .mon_grouping           = __UNCONST(""),
+       .positive_sign          = __UNCONST(""),
+       .negative_sign          = __UNCONST(""),
+       .int_frac_digits        = CHAR_MAX,
+       .frac_digits            = CHAR_MAX,
+       .p_cs_precedes          = CHAR_MAX,
+       .p_sep_by_space         = CHAR_MAX,
+       .n_cs_precedes          = CHAR_MAX,
+       .n_sep_by_space         = CHAR_MAX,
+       .p_sign_posn            = CHAR_MAX,
+       .n_sign_posn            = CHAR_MAX,
+       .int_p_cs_precedes      = CHAR_MAX,
+       .int_n_cs_precedes      = CHAR_MAX,
+       .int_p_sep_by_space     = CHAR_MAX,
+       .int_n_sep_by_space     = CHAR_MAX,
+       .int_p_sign_posn        = CHAR_MAX,
+       .int_n_sign_posn        = CHAR_MAX,
+};
+
+static const char *_global_items[(size_t)ALT_DIGITS + 1] = {
+       [(size_t)D_T_FMT    ] = "%a %b %e %H:%M:%S %Y",
+       [(size_t)D_FMT      ] = "%m/%d/%y",
+       [(size_t)T_FMT      ] = "%H:%M:%S",
+       [(size_t)T_FMT_AMPM ] = "%I:%M:%S %p",
+       [(size_t)AM_STR     ] = "AM",
+       [(size_t)PM_STR     ] = "PM",
+       [(size_t)DAY_1      ] = "Sun",
+       [(size_t)DAY_2      ] = "Mon",
+       [(size_t)DAY_3      ] = "Tue",
+       [(size_t)DAY_4      ] = "Wed",
+       [(size_t)DAY_5      ] = "Thu",
+       [(size_t)DAY_6      ] = "Fri",
+       [(size_t)DAY_7      ] = "Sat",
+       [(size_t)ABDAY_1    ] = "Sunday",
+       [(size_t)ABDAY_2    ] = "Monday",
+       [(size_t)ABDAY_3    ] = "Tuesday",
+       [(size_t)ABDAY_4    ] = "Wednesday",
+       [(size_t)ABDAY_5    ] = "Thursday",
+       [(size_t)ABDAY_6    ] = "Friday",
+       [(size_t)ABDAY_7    ] = "Saturday",
+       [(size_t)MON_1      ] = "Jan",
+       [(size_t)MON_2      ] = "Feb",
+       [(size_t)MON_3      ] = "Mar",
+       [(size_t)MON_4      ] = "Apr",
+       [(size_t)MON_5      ] = "May",
+       [(size_t)MON_6      ] = "Jun",
+       [(size_t)MON_7      ] = "Jul",
+       [(size_t)MON_8      ] = "Aug",
+       [(size_t)MON_9      ] = "Sep",
+       [(size_t)MON_10     ] = "Oct",
+       [(size_t)MON_11     ] = "Nov",
+       [(size_t)MON_12     ] = "Dec",
+       [(size_t)ABMON_1    ] = "January",
+       [(size_t)ABMON_2    ] = "February",
+       [(size_t)ABMON_3    ] = "March",
+       [(size_t)ABMON_4    ] = "April",
+       [(size_t)ABMON_5    ] = "May",
+       [(size_t)ABMON_6    ] = "June",
+       [(size_t)ABMON_7    ] = "July",
+       [(size_t)ABMON_8    ] = "Augst",
+       [(size_t)ABMON_9    ] = "September",
+       [(size_t)ABMON_10   ] = "October",
+       [(size_t)ABMON_11   ] = "November",
+       [(size_t)ABMON_12   ] = "December",
+       [(size_t)RADIXCHAR  ] = ".",
+       [(size_t)THOUSEP    ] = "",
+       [(size_t)YESSTR     ] = "yes",
+       [(size_t)YESEXPR    ] = "^[Yy]",
+       [(size_t)NOSTR      ] = "no",
+       [(size_t)NOEXPR     ] = "^[Nn]",
+       [(size_t)CRNCYSTR   ] = NULL,
+       [(size_t)CODESET    ] = "646",
+       [(size_t)ERA        ] = NULL,
+       [(size_t)ERA_D_FMT  ] = NULL,
+       [(size_t)ERA_D_T_FMT] = NULL,
+       [(size_t)ERA_T_FMT  ] = NULL,
+       [(size_t)ALT_DIGITS ] = NULL,
+};
+
 struct _locale_impl_t _global_locale =
 {
     .cache = {
@@ -55,91 +142,8 @@
         .tolower_tab = (const short *)&_C_tolower_[0],
         .toupper_tab = (const short *)&_C_toupper_[0],
         .mb_cur_max = (size_t)1,
-        .ldata = {
-           .decimal_point      = __UNCONST("."),
-           .thousands_sep      = __UNCONST(""),
-           .grouping           = __UNCONST(""),
-           .int_curr_symbol    = __UNCONST(""),
-           .currency_symbol    = __UNCONST(""),
-           .mon_decimal_point  = __UNCONST(""),
-           .mon_thousands_sep  = __UNCONST(""),
-           .mon_grouping       = __UNCONST(""),
-           .positive_sign      = __UNCONST(""),
-           .negative_sign      = __UNCONST(""),
-           .int_frac_digits    = CHAR_MAX,
-           .frac_digits        = CHAR_MAX,
-           .p_cs_precedes      = CHAR_MAX,
-           .p_sep_by_space     = CHAR_MAX,
-           .n_cs_precedes      = CHAR_MAX,
-           .n_sep_by_space     = CHAR_MAX,
-           .p_sign_posn        = CHAR_MAX,
-           .n_sign_posn        = CHAR_MAX,
-           .int_p_cs_precedes  = CHAR_MAX,
-           .int_n_cs_precedes  = CHAR_MAX,
-           .int_p_sep_by_space = CHAR_MAX,
-           .int_n_sep_by_space = CHAR_MAX,
-           .int_p_sign_posn    = CHAR_MAX,
-           .int_n_sign_posn    = CHAR_MAX,
-        },
-        .items = {
-           [(size_t)D_T_FMT    ] = "%a %b %e %H:%M:%S %Y",
-           [(size_t)D_FMT      ] = "%m/%d/%y",
-           [(size_t)T_FMT      ] = "%H:%M:%S",
-           [(size_t)T_FMT_AMPM ] = "%I:%M:%S %p",
-           [(size_t)AM_STR     ] = "AM",
-           [(size_t)PM_STR     ] = "PM",
-           [(size_t)DAY_1      ] = "Sun",
-           [(size_t)DAY_2      ] = "Mon",
-           [(size_t)DAY_3      ] = "Tue",
-           [(size_t)DAY_4      ] = "Wed",
-           [(size_t)DAY_5      ] = "Thu",
-           [(size_t)DAY_6      ] = "Fri",
-           [(size_t)DAY_7      ] = "Sat",
-           [(size_t)ABDAY_1    ] = "Sunday",
-           [(size_t)ABDAY_2    ] = "Monday",
-           [(size_t)ABDAY_3    ] = "Tuesday",
-           [(size_t)ABDAY_4    ] = "Wednesday",
-           [(size_t)ABDAY_5    ] = "Thursday",
-           [(size_t)ABDAY_6    ] = "Friday",
-           [(size_t)ABDAY_7    ] = "Saturday",
-           [(size_t)MON_1      ] = "Jan",
-           [(size_t)MON_2      ] = "Feb",
-           [(size_t)MON_3      ] = "Mar",
-           [(size_t)MON_4      ] = "Apr",
-           [(size_t)MON_5      ] = "May",
-           [(size_t)MON_6      ] = "Jun",
-           [(size_t)MON_7      ] = "Jul",
-           [(size_t)MON_8      ] = "Aug",
-           [(size_t)MON_9      ] = "Sep",
-           [(size_t)MON_10     ] = "Oct",
-           [(size_t)MON_11     ] = "Nov",
-           [(size_t)MON_12     ] = "Dec",
-           [(size_t)ABMON_1    ] = "January",
-           [(size_t)ABMON_2    ] = "February",
-           [(size_t)ABMON_3    ] = "March",
-           [(size_t)ABMON_4    ] = "April",
-           [(size_t)ABMON_5    ] = "May",
-           [(size_t)ABMON_6    ] = "June",
-           [(size_t)ABMON_7    ] = "July",
-           [(size_t)ABMON_8    ] = "Augst",
-           [(size_t)ABMON_9    ] = "September",
-           [(size_t)ABMON_10   ] = "October",
-           [(size_t)ABMON_11   ] = "November",
-           [(size_t)ABMON_12   ] = "December",
-           [(size_t)RADIXCHAR  ] = ".",
-           [(size_t)THOUSEP    ] = "",
-           [(size_t)YESSTR     ] = "yes",
-           [(size_t)YESEXPR    ] = "^[Yy]",
-           [(size_t)NOSTR      ] = "no",
-           [(size_t)NOEXPR     ] = "^[Nn]",
-           [(size_t)CRNCYSTR   ] = NULL,
-           [(size_t)CODESET    ] = "646",
-           [(size_t)ERA        ] = NULL,
-           [(size_t)ERA_D_FMT  ] = NULL,
-           [(size_t)ERA_D_T_FMT] = NULL,
-           [(size_t)ERA_T_FMT  ] = NULL,
-           [(size_t)ALT_DIGITS ] = NULL,
-        },
+        .ldata = &_global_ldata,
+        .items = &_global_items[0],
     },
     .query = { _C_LOCALE },
     .part_name = {
diff -r 0621cd604f6b -r 4b7ddc3694b1 lib/libc/locale/localeconv.c
--- a/lib/libc/locale/localeconv.c      Sat Mar 27 13:34:16 2010 +0000
+++ b/lib/libc/locale/localeconv.c      Sat Mar 27 15:25:21 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: localeconv.c,v 1.16 2009/01/11 02:46:28 christos Exp $ */
+/* $NetBSD: localeconv.c,v 1.17 2010/03/27 15:25:22 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: localeconv.c,v 1.16 2009/01/11 02:46:28 christos Exp $");
+__RCSID("$NetBSD: localeconv.c,v 1.17 2010/03/27 15:25:22 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -44,5 +44,5 @@
        struct _locale_impl_t *impl;
 
        impl = *_current_locale();
-       return &impl->cache.ldata;
+       return impl->cache.ldata;
 }
diff -r 0621cd604f6b -r 4b7ddc3694b1 lib/libc/locale/nb_lc_messages_misc.h
--- a/lib/libc/locale/nb_lc_messages_misc.h     Sat Mar 27 13:34:16 2010 +0000
+++ b/lib/libc/locale/nb_lc_messages_misc.h     Sat Mar 27 15:25:21 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: nb_lc_messages_misc.h,v 1.2 2009/01/11 02:46:28 christos Exp $ */
+/* $NetBSD: nb_lc_messages_misc.h,v 1.3 2010/03/27 15:25:22 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -39,6 +39,7 @@
     _MessagesLocale * __restrict data)
 {
        _DIAGASSERT(cache != NULL);
+       _DIAGASSERT(cache->items != NULL);
        _DIAGASSERT(data != NULL);
 
        cache->items[(size_t)YESSTR ] = data->yesstr;
diff -r 0621cd604f6b -r 4b7ddc3694b1 lib/libc/locale/nb_lc_monetary_misc.h
--- a/lib/libc/locale/nb_lc_monetary_misc.h     Sat Mar 27 13:34:16 2010 +0000
+++ b/lib/libc/locale/nb_lc_monetary_misc.h     Sat Mar 27 15:25:21 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: nb_lc_monetary_misc.h,v 1.2 2009/01/11 02:46:29 christos Exp $ */
+/* $NetBSD: nb_lc_monetary_misc.h,v 1.3 2010/03/27 15:25:22 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -38,31 +38,36 @@
 _PREFIX(build_cache)(struct _locale_cache_t * __restrict cache,
     _MonetaryLocale * __restrict data)
 {
+       struct lconv *ldata;
+
        _DIAGASSERT(cache != NULL);
+       _DIAGASSERT(cache->ldata != NULL);
+       _DIAGASSERT(cache->items != NULL);
        _DIAGASSERT(data != NULL);
 
-       cache->ldata.int_curr_symbol   = __UNCONST(data->int_curr_symbol);
-       cache->ldata.currency_symbol   = __UNCONST(data->currency_symbol);
-       cache->ldata.mon_decimal_point = __UNCONST(data->mon_decimal_point);
-       cache->ldata.mon_thousands_sep = __UNCONST(data->mon_thousands_sep);
-       cache->ldata.mon_grouping      = __UNCONST(data->mon_grouping);
-       cache->ldata.positive_sign     = __UNCONST(data->positive_sign);



Home | Main Index | Thread Index | Old Index