1#pragma once 2 3#ifdef __cplusplus 4extern "C" { 5#endif 6 7#include <features.h> 8#include <bits/null.h> 9 10#define LC_CTYPE 0 11#define LC_NUMERIC 1 12#define LC_TIME 2 13#define LC_COLLATE 3 14#define LC_MONETARY 4 15#define LC_MESSAGES 5 16#define LC_ALL 6 17 18struct lconv { 19 char* decimal_point; 20 char* thousands_sep; 21 char* grouping; 22 23 char* int_curr_symbol; 24 char* currency_symbol; 25 char* mon_decimal_point; 26 char* mon_thousands_sep; 27 char* mon_grouping; 28 char* positive_sign; 29 char* negative_sign; 30 char int_frac_digits; 31 char frac_digits; 32 char p_cs_precedes; 33 char p_sep_by_space; 34 char n_cs_precedes; 35 char n_sep_by_space; 36 char p_sign_posn; 37 char n_sign_posn; 38 char int_p_cs_precedes; 39 char int_p_sep_by_space; 40 char int_n_cs_precedes; 41 char int_n_sep_by_space; 42 char int_p_sign_posn; 43 char int_n_sign_posn; 44}; 45 46char* setlocale(int, const char*); 47struct lconv* localeconv(void); 48 49#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ 50 defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 51 52#define __NEED_locale_t 53 54#include <bits/alltypes.h> 55 56#define LC_GLOBAL_LOCALE ((locale_t)-1) 57 58#define LC_CTYPE_MASK (1 << LC_CTYPE) 59#define LC_NUMERIC_MASK (1 << LC_NUMERIC) 60#define LC_TIME_MASK (1 << LC_TIME) 61#define LC_COLLATE_MASK (1 << LC_COLLATE) 62#define LC_MONETARY_MASK (1 << LC_MONETARY) 63#define LC_MESSAGES_MASK (1 << LC_MESSAGES) 64#define LC_ALL_MASK 0x7fffffff 65 66locale_t duplocale(locale_t); 67void freelocale(locale_t); 68locale_t newlocale(int, const char*, locale_t); 69locale_t uselocale(locale_t); 70 71#endif 72 73#ifdef __cplusplus 74} 75#endif 76