xref: /Universal-ctags/gnulib/localeconv.c (revision 820c1a8d46849a90376d8eb15b319ac05439f656)
1*820c1a8dSHiroo HAYASHI /* Query locale dependent information for formatting numbers.
2*820c1a8dSHiroo HAYASHI    Copyright (C) 2012-2021 Free Software Foundation, Inc.
3*820c1a8dSHiroo HAYASHI 
4*820c1a8dSHiroo HAYASHI    This file is free software: you can redistribute it and/or modify
5*820c1a8dSHiroo HAYASHI    it under the terms of the GNU Lesser General Public License as
6*820c1a8dSHiroo HAYASHI    published by the Free Software Foundation; either version 2.1 of the
7*820c1a8dSHiroo HAYASHI    License, or (at your option) any later version.
8*820c1a8dSHiroo HAYASHI 
9*820c1a8dSHiroo HAYASHI    This file is distributed in the hope that it will be useful,
10*820c1a8dSHiroo HAYASHI    but WITHOUT ANY WARRANTY; without even the implied warranty of
11*820c1a8dSHiroo HAYASHI    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12*820c1a8dSHiroo HAYASHI    GNU Lesser General Public License for more details.
13*820c1a8dSHiroo HAYASHI 
14*820c1a8dSHiroo HAYASHI    You should have received a copy of the GNU Lesser General Public License
15*820c1a8dSHiroo HAYASHI    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
16*820c1a8dSHiroo HAYASHI 
17*820c1a8dSHiroo HAYASHI #include <config.h>
18*820c1a8dSHiroo HAYASHI 
19*820c1a8dSHiroo HAYASHI /* Specification.  */
20*820c1a8dSHiroo HAYASHI #include <locale.h>
21*820c1a8dSHiroo HAYASHI 
22*820c1a8dSHiroo HAYASHI #if HAVE_STRUCT_LCONV_DECIMAL_POINT
23*820c1a8dSHiroo HAYASHI 
24*820c1a8dSHiroo HAYASHI /* Override for platforms where 'struct lconv' lacks the int_p_*, int_n_*
25*820c1a8dSHiroo HAYASHI    members.  */
26*820c1a8dSHiroo HAYASHI 
27*820c1a8dSHiroo HAYASHI struct lconv *
localeconv(void)28*820c1a8dSHiroo HAYASHI localeconv (void)
29*820c1a8dSHiroo HAYASHI {
30*820c1a8dSHiroo HAYASHI   static struct lconv result;
31*820c1a8dSHiroo HAYASHI # undef lconv
32*820c1a8dSHiroo HAYASHI # undef localeconv
33*820c1a8dSHiroo HAYASHI   struct lconv *sys_result = localeconv ();
34*820c1a8dSHiroo HAYASHI 
35*820c1a8dSHiroo HAYASHI   result.decimal_point = sys_result->decimal_point;
36*820c1a8dSHiroo HAYASHI   result.thousands_sep = sys_result->thousands_sep;
37*820c1a8dSHiroo HAYASHI   result.grouping = sys_result->grouping;
38*820c1a8dSHiroo HAYASHI   result.mon_decimal_point = sys_result->mon_decimal_point;
39*820c1a8dSHiroo HAYASHI   result.mon_thousands_sep = sys_result->mon_thousands_sep;
40*820c1a8dSHiroo HAYASHI   result.mon_grouping = sys_result->mon_grouping;
41*820c1a8dSHiroo HAYASHI   result.positive_sign = sys_result->positive_sign;
42*820c1a8dSHiroo HAYASHI   result.negative_sign = sys_result->negative_sign;
43*820c1a8dSHiroo HAYASHI   result.currency_symbol = sys_result->currency_symbol;
44*820c1a8dSHiroo HAYASHI   result.frac_digits = sys_result->frac_digits;
45*820c1a8dSHiroo HAYASHI   result.p_cs_precedes = sys_result->p_cs_precedes;
46*820c1a8dSHiroo HAYASHI   result.p_sign_posn = sys_result->p_sign_posn;
47*820c1a8dSHiroo HAYASHI   result.p_sep_by_space = sys_result->p_sep_by_space;
48*820c1a8dSHiroo HAYASHI   result.n_cs_precedes = sys_result->n_cs_precedes;
49*820c1a8dSHiroo HAYASHI   result.n_sign_posn = sys_result->n_sign_posn;
50*820c1a8dSHiroo HAYASHI   result.n_sep_by_space = sys_result->n_sep_by_space;
51*820c1a8dSHiroo HAYASHI   result.int_curr_symbol = sys_result->int_curr_symbol;
52*820c1a8dSHiroo HAYASHI   result.int_frac_digits = sys_result->int_frac_digits;
53*820c1a8dSHiroo HAYASHI   result.int_p_cs_precedes = sys_result->p_cs_precedes;
54*820c1a8dSHiroo HAYASHI   result.int_p_sign_posn = sys_result->p_sign_posn;
55*820c1a8dSHiroo HAYASHI   result.int_p_sep_by_space = sys_result->p_sep_by_space;
56*820c1a8dSHiroo HAYASHI   result.int_n_cs_precedes = sys_result->n_cs_precedes;
57*820c1a8dSHiroo HAYASHI   result.int_n_sign_posn = sys_result->n_sign_posn;
58*820c1a8dSHiroo HAYASHI   result.int_n_sep_by_space = sys_result->n_sep_by_space;
59*820c1a8dSHiroo HAYASHI 
60*820c1a8dSHiroo HAYASHI   return &result;
61*820c1a8dSHiroo HAYASHI }
62*820c1a8dSHiroo HAYASHI 
63*820c1a8dSHiroo HAYASHI #else
64*820c1a8dSHiroo HAYASHI 
65*820c1a8dSHiroo HAYASHI /* Override for platforms where 'struct lconv' is a dummy.  */
66*820c1a8dSHiroo HAYASHI 
67*820c1a8dSHiroo HAYASHI # include <limits.h>
68*820c1a8dSHiroo HAYASHI 
69*820c1a8dSHiroo HAYASHI struct lconv *
localeconv(void)70*820c1a8dSHiroo HAYASHI localeconv (void)
71*820c1a8dSHiroo HAYASHI {
72*820c1a8dSHiroo HAYASHI   static /*const*/ struct lconv result =
73*820c1a8dSHiroo HAYASHI     {
74*820c1a8dSHiroo HAYASHI       /* decimal_point */ ".",
75*820c1a8dSHiroo HAYASHI       /* thousands_sep */ "",
76*820c1a8dSHiroo HAYASHI       /* grouping */ "",
77*820c1a8dSHiroo HAYASHI       /* mon_decimal_point */ "",
78*820c1a8dSHiroo HAYASHI       /* mon_thousands_sep */ "",
79*820c1a8dSHiroo HAYASHI       /* mon_grouping */ "",
80*820c1a8dSHiroo HAYASHI       /* positive_sign */ "",
81*820c1a8dSHiroo HAYASHI       /* negative_sign */ "",
82*820c1a8dSHiroo HAYASHI       /* currency_symbol */ "",
83*820c1a8dSHiroo HAYASHI       /* frac_digits */ CHAR_MAX,
84*820c1a8dSHiroo HAYASHI       /* p_cs_precedes */ CHAR_MAX,
85*820c1a8dSHiroo HAYASHI       /* p_sign_posn */ CHAR_MAX,
86*820c1a8dSHiroo HAYASHI       /* p_sep_by_space */ CHAR_MAX,
87*820c1a8dSHiroo HAYASHI       /* n_cs_precedes */ CHAR_MAX,
88*820c1a8dSHiroo HAYASHI       /* n_sign_posn */ CHAR_MAX,
89*820c1a8dSHiroo HAYASHI       /* n_sep_by_space */ CHAR_MAX,
90*820c1a8dSHiroo HAYASHI       /* int_curr_symbol */ "",
91*820c1a8dSHiroo HAYASHI       /* int_frac_digits */ CHAR_MAX,
92*820c1a8dSHiroo HAYASHI       /* int_p_cs_precedes */ CHAR_MAX,
93*820c1a8dSHiroo HAYASHI       /* int_p_sign_posn */ CHAR_MAX,
94*820c1a8dSHiroo HAYASHI       /* int_p_sep_by_space */ CHAR_MAX,
95*820c1a8dSHiroo HAYASHI       /* int_n_cs_precedes */ CHAR_MAX,
96*820c1a8dSHiroo HAYASHI       /* int_n_sign_posn */ CHAR_MAX,
97*820c1a8dSHiroo HAYASHI       /* int_n_sep_by_space */ CHAR_MAX
98*820c1a8dSHiroo HAYASHI     };
99*820c1a8dSHiroo HAYASHI 
100*820c1a8dSHiroo HAYASHI   return &result;
101*820c1a8dSHiroo HAYASHI }
102*820c1a8dSHiroo HAYASHI 
103*820c1a8dSHiroo HAYASHI #endif
104