text: #pragma once
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  #include <features.h>
  #include <bits/null.h>
  
  #define LC_CTYPE 0
  #define LC_NUMERIC 1
  #define LC_TIME 2
  #define LC_COLLATE 3
  #define LC_MONETARY 4
  #define LC_MESSAGES 5
  #define LC_ALL 6
  
  struct lconv {
      char* decimal_point;
      char* thousands_sep;
      char* grouping;
  
      char* int_curr_symbol;
      char* currency_symbol;
      char* mon_decimal_point;
      char* mon_thousands_sep;
      char* mon_grouping;
      char* positive_sign;
      char* negative_sign;
      char int_frac_digits;
      char frac_digits;
      char p_cs_precedes;
      char p_sep_by_space;
      char n_cs_precedes;
      char n_sep_by_space;
      char p_sign_posn;
      char n_sign_posn;
      char int_p_cs_precedes;
      char int_p_sep_by_space;
      char int_n_cs_precedes;
      char int_n_sep_by_space;
      char int_p_sign_posn;
      char int_n_sign_posn;
  };
  
  char* setlocale(int, const char*);
  struct lconv* localeconv(void);
  
  #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
      defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
  
  #define __NEED_locale_t
  
  #include <bits/alltypes.h>
  
  #define LC_GLOBAL_LOCALE ((locale_t)-1)
  
  #define LC_CTYPE_MASK (1 << LC_CTYPE)
  #define LC_NUMERIC_MASK (1 << LC_NUMERIC)
  #define LC_TIME_MASK (1 << LC_TIME)
  #define LC_COLLATE_MASK (1 << LC_COLLATE)
  #define LC_MONETARY_MASK (1 << LC_MONETARY)
  #define LC_MESSAGES_MASK (1 << LC_MESSAGES)
  #define LC_ALL_MASK 0x7fffffff
  
  locale_t duplocale(locale_t);
  void freelocale(locale_t);
  locale_t newlocale(int, const char*, locale_t);
  locale_t uselocale(locale_t);
  
  #endif
  
  #ifdef __cplusplus
  }
  #endif
  