+PSI_CHECK_LOCALE() {
+ PSI_CONFIG_POSIX(locale, locale.h xlocale.h)
+
+ PSI_STRUCT(struct lconv, [
+ char *currency_symbol,
+ char *decimal_point,
+ char frac_digits,
+ char *grouping,
+ char *int_curr_symbol,
+ char int_frac_digits,
+ char int_n_cs_precedes,
+ char int_n_sep_by_space,
+ char int_n_sign_posn,
+ char int_p_cs_precedes,
+ char int_p_sep_by_space,
+ char int_p_sign_posn,
+ char *mon_decimal_point,
+ char *mon_grouping,
+ char *mon_thousands_sep,
+ char *negative_sign,
+ char n_cs_precedes,
+ char n_sep_by_space,
+ char n_sign_posn,
+ char *positive_sign,
+ char p_cs_precedes,
+ char p_sep_by_space,
+ char p_sign_posn,
+ char *thousands_sep])
+
+ PSI_CONST(LC_ALL, int)
+ PSI_CONST(LC_COLLATE, int)
+ PSI_CONST(LC_CTYPE, int)
+ PSI_CONST(LC_MESSAGES, int)
+ PSI_CONST(LC_MONETARY, int)
+ PSI_CONST(LC_NUMERIC, int)
+ PSI_CONST(LC_TIME, int)
+
+ PSI_CONST(LC_COLLATE_MASK, int)
+ PSI_CONST(LC_CTYPE_MASK, int)
+ PSI_CONST(LC_MESSAGES_MASK, int)
+ PSI_CONST(LC_MONETARY_MASK, int)
+ PSI_CONST(LC_NUMERIC_MASK, int)
+ PSI_CONST(LC_TIME_MASK, int)
+ PSI_CONST(LC_ALL_MASK, int)
+
+ PSI_MACRO(locale_t LC_GLOBAL_LOCALE)
+
+ PSI_OPAQUE_TYPE(locale_t)
+
+ PSI_DECL(locale_t duplocale, [(locale_t loc)])
+ PSI_DECL(void freelocale, [(locale_t loc)])
+ PSI_DECL(struct lconv *localeconv, [(void)])
+ PSI_DECL(locale_t newlocale, [(int mask, const char *locale, locale_t base)])
+ PSI_DECL(char *setlocale, [(int category, const char *locale)])
+ PSI_DECL(locale_t uselocale, [(locale_t loc)])
+}