1/*
2 * Copyright 2002-2012 Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _LOCALE_H_
6#define _LOCALE_H_
7
8
9#include <locale_t.h>
10#include <null.h>
11
12struct lconv {
13	char *decimal_point;
14	char *thousands_sep;
15	char *grouping;
16	char *int_curr_symbol;
17	char *currency_symbol;
18	char *mon_decimal_point;
19	char *mon_thousands_sep;
20	char *mon_grouping;
21	char *positive_sign;
22	char *negative_sign;
23	char int_frac_digits;
24	char frac_digits;
25	char p_cs_precedes;
26	char p_sep_by_space;
27	char n_cs_precedes;
28	char n_sep_by_space;
29	char p_sign_posn;
30	char n_sign_posn;
31	char int_p_cs_precedes;
32	char int_p_sep_by_space;
33	char int_n_cs_precedes;
34	char int_n_sep_by_space;
35	char int_p_sign_posn;
36	char int_n_sign_posn;
37};
38
39#define	LC_ALL		0
40#define	LC_COLLATE	1
41#define	LC_CTYPE	2
42#define	LC_MONETARY	3
43#define	LC_NUMERIC	4
44#define	LC_TIME		5
45#define	LC_MESSAGES	6
46/*
47 * the values above must be kept in loopable order (i.e. strictly increasing
48 * with no holes) and in sync with the value below
49 */
50#define	LC_LAST		LC_MESSAGES
51
52#define LC_COLLATE_MASK		(1 << (LC_COLLATE - 1))
53#define LC_CTYPE_MASK		(1 << (LC_CTYPE - 1))
54#define LC_MONETARY_MASK	(1 << (LC_MONETARY - 1))
55#define LC_NUMERIC_MASK 	(1 << (LC_NUMERIC - 1))
56#define LC_TIME_MASK		(1 << (LC_TIME - 1))
57#define LC_MESSAGES_MASK	(1 << (LC_MESSAGES - 1))
58
59#define LC_ALL_MASK			(LC_COLLATE_MASK | LC_CTYPE_MASK | \
60							LC_MONETARY_MASK | LC_NUMERIC_MASK | \
61							LC_TIME_MASK | LC_MESSAGES_MASK)
62
63#define LC_GLOBAL_LOCALE ((locale_t)-1)
64
65#ifdef __cplusplus
66extern "C" {
67#endif
68
69extern struct lconv *localeconv(void);
70extern char *setlocale(int category, const char *locale);
71
72extern locale_t duplocale(locale_t);
73extern void freelocale(locale_t);
74extern locale_t newlocale(int, const char *, locale_t);
75extern locale_t uselocale(locale_t);
76
77#ifdef __cplusplus
78}
79#endif
80
81#endif /* _LOCALE_H_ */
82