OpenCores
URL https://opencores.org/ocsvn/c0or1k/c0or1k/trunk

Subversion Repositories c0or1k

[/] [c0or1k/] [trunk/] [conts/] [posix/] [libposix/] [include/] [posix/] [locale.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 drasko
/* Copyright (C) 1991,92,95-99,2000,01,02 Free Software Foundation, Inc.
2
   This file is part of the GNU C Library.
3
 
4
   The GNU C Library is free software; you can redistribute it and/or
5
   modify it under the terms of the GNU Lesser General Public
6
   License as published by the Free Software Foundation; either
7
   version 2.1 of the License, or (at your option) any later version.
8
 
9
   The GNU C Library is distributed in the hope that it will be useful,
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
   Lesser General Public License for more details.
13
 
14
   You should have received a copy of the GNU Lesser General Public
15
   License along with the GNU C Library; if not, write to the Free
16
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17
   02111-1307 USA.  */
18
 
19
/*
20
 *      ISO C99 Standard: 7.11 Localization     <locale.h>
21
 */
22
 
23
#ifndef _LOCALE_H
24
#define _LOCALE_H       1
25
 
26
#include <features.h>
27
 
28
#define __need_NULL
29
#include <stddef.h>
30
#include <bits/uClibc_locale.h>
31
 
32
__BEGIN_DECLS
33
 
34
/* These are the possibilities for the first argument to setlocale.
35
   The code assumes that the lowest LC_* symbol has the value zero.  */
36
#define LC_CTYPE          __LC_CTYPE
37
#define LC_NUMERIC        __LC_NUMERIC
38
#define LC_TIME           __LC_TIME
39
#define LC_COLLATE        __LC_COLLATE
40
#define LC_MONETARY       __LC_MONETARY
41
#define LC_MESSAGES       __LC_MESSAGES
42
#if 0
43
#define LC_PAPER          __LC_PAPER
44
#define LC_NAME           __LC_NAME
45
#define LC_ADDRESS        __LC_ADDRESS
46
#define LC_TELEPHONE      __LC_TELEPHONE
47
#define LC_MEASUREMENT    __LC_MEASUREMENT
48
#define LC_IDENTIFICATION __LC_IDENTIFICATION
49
#endif
50
#define LC_ALL            __LC_ALL
51
 
52
 
53
/* Structure giving information about numeric and monetary notation.  */
54
struct lconv
55
{
56
  /* Numeric (non-monetary) information.  */
57
 
58
  char *decimal_point;          /* Decimal point character.  */
59
  char *thousands_sep;          /* Thousands separator.  */
60
  /* Each element is the number of digits in each group;
61
     elements with higher indices are farther left.
62
     An element with value CHAR_MAX means that no further grouping is done.
63
     An element with value 0 means that the previous element is used
64
     for all groups farther left.  */
65
  char *grouping;
66
 
67
  /* Monetary information.  */
68
 
69
  /* First three chars are a currency symbol from ISO 4217.
70
     Fourth char is the separator.  Fifth char is '\0'.  */
71
  char *int_curr_symbol;
72
  char *currency_symbol;        /* Local currency symbol.  */
73
  char *mon_decimal_point;      /* Decimal point character.  */
74
  char *mon_thousands_sep;      /* Thousands separator.  */
75
  char *mon_grouping;           /* Like `grouping' element (above).  */
76
  char *positive_sign;          /* Sign for positive values.  */
77
  char *negative_sign;          /* Sign for negative values.  */
78
  char int_frac_digits;         /* Int'l fractional digits.  */
79
  char frac_digits;             /* Local fractional digits.  */
80
  /* 1 if currency_symbol precedes a positive value, 0 if succeeds.  */
81
  char p_cs_precedes;
82
  /* 1 iff a space separates currency_symbol from a positive value.  */
83
  char p_sep_by_space;
84
  /* 1 if currency_symbol precedes a negative value, 0 if succeeds.  */
85
  char n_cs_precedes;
86
  /* 1 iff a space separates currency_symbol from a negative value.  */
87
  char n_sep_by_space;
88
  /* Positive and negative sign positions:
89
 
90
     1 The sign string precedes the quantity and currency_symbol.
91
     2 The sign string follows the quantity and currency_symbol.
92
     3 The sign string immediately precedes the currency_symbol.
93
     4 The sign string immediately follows the currency_symbol.  */
94
  char p_sign_posn;
95
  char n_sign_posn;
96
#ifdef __USE_ISOC99
97
  /* 1 if int_curr_symbol precedes a positive value, 0 if succeeds.  */
98
  char int_p_cs_precedes;
99
  /* 1 iff a space separates int_curr_symbol from a positive value.  */
100
  char int_p_sep_by_space;
101
  /* 1 if int_curr_symbol precedes a negative value, 0 if succeeds.  */
102
  char int_n_cs_precedes;
103
  /* 1 iff a space separates int_curr_symbol from a negative value.  */
104
  char int_n_sep_by_space;
105
  /* Positive and negative sign positions:
106
 
107
     1 The sign string precedes the quantity and int_curr_symbol.
108
     2 The sign string follows the quantity and int_curr_symbol.
109
     3 The sign string immediately precedes the int_curr_symbol.
110
     4 The sign string immediately follows the int_curr_symbol.  */
111
  char int_p_sign_posn;
112
  char int_n_sign_posn;
113
#else
114
  char __int_p_cs_precedes;
115
  char __int_p_sep_by_space;
116
  char __int_n_cs_precedes;
117
  char __int_n_sep_by_space;
118
  char __int_p_sign_posn;
119
  char __int_n_sign_posn;
120
#endif
121
};
122
 
123
 
124
__BEGIN_NAMESPACE_STD
125
 
126
/* Set and/or return the current locale.  */
127
extern char *setlocale (int __category, __const char *__locale) __THROW;
128
 
129
/* Return the numeric/monetary information for the current locale.  */
130
extern struct lconv *localeconv (void) __THROW;
131
 
132
__END_NAMESPACE_STD
133
 
134
 
135
#if defined(__USE_GNU) && defined(__UCLIBC_HAS_XLOCALE__)
136
/* The concept of one static locale per category is not very well
137
   thought out.  Many applications will need to process its data using
138
   information from several different locales.  Another application is
139
   the implementation of the internationalization handling in the
140
   upcoming ISO C++ standard library.  To support this another set of
141
   the functions using locale data exist which have an additional
142
   argument.
143
 
144
   Attention: all these functions are *not* standardized in any form.
145
   This is a proof-of-concept implementation.  */
146
 
147
/* Get locale datatype definition.  */
148
# include <xlocale.h>
149
 
150
typedef __locale_t locale_t;
151
 
152
/* Return a reference to a data structure representing a set of locale
153
   datasets.  Unlike for the CATEGORY parameter for `setlocale' the
154
   CATEGORY_MASK parameter here uses a single bit for each category,
155
   made by OR'ing together LC_*_MASK bits above.  */
156
extern __locale_t newlocale (int __category_mask, __const char *__locale,
157
                             __locale_t __base) __THROW;
158
 
159
/* These are the bits that can be set in the CATEGORY_MASK argument to
160
   `newlocale'.  In the GNU implementation, LC_FOO_MASK has the value
161
   of (1 << LC_FOO), but this is not a part of the interface that
162
   callers can assume will be true.  */
163
# define LC_CTYPE_MASK          (1 << __LC_CTYPE)
164
# define LC_NUMERIC_MASK        (1 << __LC_NUMERIC)
165
# define LC_TIME_MASK           (1 << __LC_TIME)
166
# define LC_COLLATE_MASK        (1 << __LC_COLLATE)
167
# define LC_MONETARY_MASK       (1 << __LC_MONETARY)
168
# define LC_MESSAGES_MASK       (1 << __LC_MESSAGES)
169
#ifdef L_newlocale
170
#warning mask defines for extra locale categories
171
#endif /* L_newlocale - uClibc note */
172
#ifdef LC_PAPER
173
# define LC_PAPER_MASK          (1 << __LC_PAPER)
174
# define LC_NAME_MASK           (1 << __LC_NAME)
175
# define LC_ADDRESS_MASK        (1 << __LC_ADDRESS)
176
# define LC_TELEPHONE_MASK      (1 << __LC_TELEPHONE)
177
# define LC_MEASUREMENT_MASK    (1 << __LC_MEASUREMENT)
178
# define LC_IDENTIFICATION_MASK (1 << __LC_IDENTIFICATION)
179
# define LC_ALL_MASK            (LC_CTYPE_MASK \
180
                                 | LC_NUMERIC_MASK \
181
                                 | LC_TIME_MASK \
182
                                 | LC_COLLATE_MASK \
183
                                 | LC_MONETARY_MASK \
184
                                 | LC_MESSAGES_MASK \
185
                                 | LC_PAPER_MASK \
186
                                 | LC_NAME_MASK \
187
                                 | LC_ADDRESS_MASK \
188
                                 | LC_TELEPHONE_MASK \
189
                                 | LC_MEASUREMENT_MASK \
190
                                 | LC_IDENTIFICATION_MASK \
191
                                 )
192
#else  /* LC_PAPER */
193
# define LC_ALL_MASK            (LC_CTYPE_MASK \
194
                                 | LC_NUMERIC_MASK \
195
                                 | LC_TIME_MASK \
196
                                 | LC_COLLATE_MASK \
197
                                 | LC_MONETARY_MASK \
198
                                 | LC_MESSAGES_MASK \
199
                                 )
200
#endif /* LC_PAPER */
201
 
202
/* Return a duplicate of the set of locale in DATASET.  All usage
203
   counters are increased if necessary.  */
204
extern __locale_t duplocale (__locale_t __dataset) __THROW;
205
 
206
/* Free the data associated with a locale dataset previously returned
207
   by a call to `setlocale_r'.  */
208
extern void freelocale (__locale_t __dataset) __THROW;
209
 
210
/* Switch the current thread's locale to DATASET.
211
   If DATASET is null, instead just return the current setting.
212
   The special value LC_GLOBAL_LOCALE is the initial setting
213
   for all threads and can also be installed any time, meaning
214
   the thread uses the global settings controlled by `setlocale'.  */
215
extern __locale_t uselocale (__locale_t __dataset) __THROW;
216
 
217
/* This value can be passed to `uselocale' and may be returned by it.
218
   Passing this value to any other function has undefined behavior.  */
219
# define LC_GLOBAL_LOCALE       ((__locale_t) -1L)
220
 
221
#endif
222
 
223
__END_DECLS
224
 
225
#endif /* locale.h  */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.