15 using locale_t = _locale_t;
17 inline locale_t create_locale(_In_
int category, _In_z_
const char* locale) {
return _create_locale(category, locale); }
18 inline locale_t create_locale(_In_
int category, _In_z_
const wchar_t* locale) {
return _wcreate_locale(category, locale); }
19 inline void free_locale(_In_opt_ locale_t locale) { _free_locale(locale); }
21 using locale_t = ::locale_t;
23 inline locale_t create_locale(_In_
int category, _In_z_
const char* locale)
27 case LC_ALL : mask = LC_ALL_MASK ;
break;
28 case LC_COLLATE : mask = LC_COLLATE_MASK ;
break;
29 case LC_CTYPE : mask = LC_CTYPE_MASK ;
break;
30 case LC_MESSAGES: mask = LC_MESSAGES_MASK;
break;
31 case LC_MONETARY: mask = LC_MONETARY_MASK;
break;
32 case LC_NUMERIC : mask = LC_NUMERIC_MASK ;
break;
33 case LC_TIME : mask = LC_TIME_MASK ;
break;
35 return newlocale(mask, locale, LC_GLOBAL_LOCALE);
38 inline void free_locale(_In_opt_ locale_t locale) { freelocale(locale); }
57 using _locale_t_ref = __crt_locale_pointers;
58#elif defined(__APPLE__)
59 using _locale_t_ref =
struct _xlocale;
61 using _locale_t_ref =
struct __locale_struct;
68 class locale :
public std::unique_ptr<_locale_t_ref, free_locale_delete>
73 locale(_In_ locale_t ptr) :
74 std::unique_ptr<_locale_t_ref, free_locale_delete>(ptr)
81 locale(_In_
int category, _In_z_
const wchar_t*
locale) :
85 operator locale_t()
const {
return get(); }
91 const inline locale locale_C(create_locale(LC_ALL,
"C"));
96 const inline locale locale_utf8(create_locale(LC_ALL,
".UTF-8"));
101 const inline locale locale_default(create_locale(LC_ALL,
locale_t helper class to free_locale when going out of scope.
Definition locale.hpp:69
Deleter for unique_ptr using free_locale.
Definition locale.hpp:45
void operator()(locale_t locale) const
Delete a pointer.
Definition locale.hpp:49