#ifndef _MSL_CLOCALE
#define _MSL_CLOCALE

#include <ansi_params.h>

#if !_MSL_USING_MW_C_HEADERS
    #include <locale.h>

    #if _MSL_PUT_THIRD_PARTY_C_IN_STD
        #include <msl_cpp_std_locale.h>
    #endif
#else

#ifndef RC_INVOKED

#include <null.h>

_MSL_BEGIN_NAMESPACE_STD
    _MSL_BEGIN_EXTERN_C

    #define LC_FIRST 0
    #define LC_COLLATE 0x01
    #define LC_CTYPE 0x02
    #define LC_MONETARY 0x04
    #define LC_NUMERIC 0x08
    #define LC_TIME 0x10
    #define LC_ALL 0x1F
    #define LC_LAST LC_ALL

#if !_MSL_C_LOCALE_ONLY
    #pragma options align=native
    #pragma warn_padding off
struct lconv {
    char * decimal_point;
    char * thousands_sep;
    char * grouping;
    char * mon_decimal_point;
    char * mon_thousands_sep;
    char * mon_grouping;
    char * positive_sign;
    char * negative_sign;
    char * currency_symbol;
    char frac_digits;
    char p_cs_precedes;
    char n_cs_precedes;
    char p_sep_by_space;
    char n_sep_by_space;
    char p_sign_posn;
    char n_sign_posn;
    char * int_curr_symbol;
    char int_frac_digits;
#if _MSL_C99
    char int_p_cs_precedes;
    char int_n_cs_precedes;
    char int_p_sep_by_space;
    char int_n_sep_by_space;
    char int_p_sign_posn;
    char int_n_sign_posn;
#endif
};
    #pragma warn_padding reset
    #pragma options align=reset

_MSL_IMP_EXP_C struct lconv * _MSL_CDECL localeconv(void) _MSL_CANT_THROW;

#endif

_MSL_IMP_EXP_C char * _MSL_CDECL setlocale(int, const char *) _MSL_CANT_THROW;

_MSL_END_EXTERN_C
    _MSL_END_NAMESPACE_STD

#endif

#endif

#endif
