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