Reactos
at listview 184 lines 4.9 kB view raw
1// 2// locale.h 3// 4// Copyright (c) Microsoft Corporation. All rights reserved. 5// 6// The C locale library. 7// 8#pragma once 9#ifndef _INC_LOCALE // include guard for 3rd party interop 10#define _INC_LOCALE 11 12#include <corecrt.h> 13 14#pragma warning(push) 15#pragma warning(disable: _UCRT_DISABLED_WARNINGS) 16_UCRT_DISABLE_CLANG_WARNINGS 17 18_CRT_BEGIN_C_HEADER 19 20 21 22// Locale categories 23#define LC_ALL 0 24#define LC_COLLATE 1 25#define LC_CTYPE 2 26#define LC_MONETARY 3 27#define LC_NUMERIC 4 28#define LC_TIME 5 29 30#define LC_MIN LC_ALL 31#define LC_MAX LC_TIME 32 33// Locale convention structure 34struct lconv 35{ 36 char* decimal_point; 37 char* thousands_sep; 38 char* grouping; 39 char* int_curr_symbol; 40 char* currency_symbol; 41 char* mon_decimal_point; 42 char* mon_thousands_sep; 43 char* mon_grouping; 44 char* positive_sign; 45 char* negative_sign; 46 char int_frac_digits; 47 char frac_digits; 48 char p_cs_precedes; 49 char p_sep_by_space; 50 char n_cs_precedes; 51 char n_sep_by_space; 52 char p_sign_posn; 53 char n_sign_posn; 54 wchar_t* _W_decimal_point; 55 wchar_t* _W_thousands_sep; 56 wchar_t* _W_int_curr_symbol; 57 wchar_t* _W_currency_symbol; 58 wchar_t* _W_mon_decimal_point; 59 wchar_t* _W_mon_thousands_sep; 60 wchar_t* _W_positive_sign; 61 wchar_t* _W_negative_sign; 62}; 63 64struct tm; 65 66// ANSI: char lconv members default is CHAR_MAX which is compile time dependent. 67// Defining and using __do_unsigned_char_lconv_initialization here causes CRT 68// startup code to initialize lconv members properly 69#ifdef _CHAR_UNSIGNED 70 extern int __do_unsigned_char_lconv_initialization; 71 extern __inline int __use_char_max(void) 72 { 73 return __do_unsigned_char_lconv_initialization; 74 } 75#endif 76 77 78 79#define _ENABLE_PER_THREAD_LOCALE 0x0001 80#define _DISABLE_PER_THREAD_LOCALE 0x0002 81#define _ENABLE_PER_THREAD_LOCALE_GLOBAL 0x0010 82#define _DISABLE_PER_THREAD_LOCALE_GLOBAL 0x0020 83#define _ENABLE_PER_THREAD_LOCALE_NEW 0x0100 84#define _DISABLE_PER_THREAD_LOCALE_NEW 0x0200 85 86#if _CRT_FUNCTIONS_REQUIRED 87 88 _ACRTIMP void __cdecl _lock_locales(void); 89 _ACRTIMP void __cdecl _unlock_locales(void); 90 91 _Check_return_opt_ 92 _ACRTIMP int __cdecl _configthreadlocale( 93 _In_ int _Flag 94 ); 95 96 _Check_return_opt_ _Success_(return != 0) _Ret_z_ 97 _ACRTIMP char* __cdecl setlocale( 98 _In_ int _Category, 99 _In_opt_z_ char const* _Locale 100 ); 101 102 _Check_return_opt_ 103 _ACRTIMP struct lconv* __cdecl localeconv(void); 104 105 _Check_return_opt_ 106 _ACRTIMP _locale_t __cdecl _get_current_locale(void); 107 108 _Check_return_opt_ 109 _ACRTIMP _locale_t __cdecl _create_locale( 110 _In_ int _Category, 111 _In_z_ char const* _Locale 112 ); 113 114 _ACRTIMP void __cdecl _free_locale( 115 _In_opt_ _locale_t _Locale 116 ); 117 118 // Also declared in <wchar.h> 119 _Check_return_opt_ _Success_(return != 0) _Ret_z_ 120 _ACRTIMP wchar_t* __cdecl _wsetlocale( 121 _In_ int _Category, 122 _In_opt_z_ wchar_t const* _Locale 123 ); 124 125 _Check_return_opt_ 126 _ACRTIMP _locale_t __cdecl _wcreate_locale( 127 _In_ int _Category, 128 _In_z_ wchar_t const* _Locale 129 ); 130 131 132 133 _ACRTIMP wchar_t** __cdecl ___lc_locale_name_func(void); 134 _ACRTIMP unsigned int __cdecl ___lc_codepage_func (void); 135 _ACRTIMP unsigned int __cdecl ___lc_collate_cp_func (void); 136 137 138 139 140 // Time-related functions 141 _Success_(return != 0) 142 _Ret_z_ 143 _ACRTIMP char* __cdecl _Getdays(void); 144 145 _Success_(return != 0) 146 _Ret_z_ 147 _ACRTIMP char* __cdecl _Getmonths(void); 148 149 _ACRTIMP void* __cdecl _Gettnames(void); 150 151 _Success_(return != 0) 152 _Ret_z_ 153 _ACRTIMP wchar_t* __cdecl _W_Getdays(void); 154 155 _Success_(return != 0) 156 _Ret_z_ 157 _ACRTIMP wchar_t* __cdecl _W_Getmonths(void); 158 159 _ACRTIMP void* __cdecl _W_Gettnames(void); 160 161 _Success_(return > 0) 162 _ACRTIMP size_t __cdecl _Strftime( 163 _Out_writes_z_(_Max_size) char* _Buffer, 164 _In_ size_t _Max_size, 165 _In_z_ char const* _Format, 166 _In_ struct tm const* _Timeptr, 167 _In_opt_ void* _Lc_time_arg); 168 169 _Success_(return > 0) 170 _ACRTIMP size_t __cdecl _Wcsftime( 171 _Out_writes_z_(_Max_size) wchar_t* _Buffer, 172 _In_ size_t _Max_size, 173 _In_z_ wchar_t const* _Format, 174 _In_ struct tm const* _Timeptr, 175 _In_opt_ void* _Lc_time_arg 176 ); 177 178#endif // _CRT_FUNCTIONS_REQUIRED 179 180 181_CRT_END_C_HEADER 182_UCRT_RESTORE_CLANG_WARNINGS 183#pragma warning(pop) // _UCRT_DISABLED_WARNINGS 184#endif // _INC_LOCALE