Reactos
1//
2// locale_update.cpp
3//
4// Copyright (c) Microsoft Corporation. All rights reserved.
5//
6// Encapsulated implementation details of _LocaleUpdate that cannot be defined
7// in the header because they refer to data not exported from the AppCRT DLL.
8//
9#include <corecrt_internal.h>
10
11extern "C" void __acrt_update_locale_info(
12 __acrt_ptd* const ptd,
13 __crt_locale_data** const locale_info
14 )
15{
16 if (*locale_info != __acrt_current_locale_data.value() && __acrt_should_sync_with_global_locale(ptd))
17 {
18 *locale_info = __acrt_update_thread_locale_data();
19 }
20}
21
22extern "C" void __acrt_update_multibyte_info(
23 __acrt_ptd* const ptd,
24 __crt_multibyte_data** const multibyte_info
25 )
26{
27 if (*multibyte_info != __acrt_current_multibyte_data.value() && __acrt_should_sync_with_global_locale(ptd))
28 {
29 *multibyte_info = __acrt_update_thread_multibyte_data();
30 }
31}
32
33extern "C" void __acrt_update_locale_info_explicit(
34 __acrt_ptd* const ptd,
35 __crt_locale_data** const locale_info,
36 size_t const current_global_state_index
37 )
38{
39 if (*locale_info != __acrt_current_locale_data.value_explicit(current_global_state_index) && __acrt_should_sync_with_global_locale(ptd))
40 {
41 *locale_info = __acrt_update_thread_locale_data();
42 }
43}
44
45extern "C" void __acrt_update_multibyte_info_explicit(
46 __acrt_ptd* const ptd,
47 __crt_multibyte_data** const multibyte_info,
48 size_t const current_global_state_index
49 )
50{
51 if (*multibyte_info != __acrt_current_multibyte_data.value_explicit(current_global_state_index) && __acrt_should_sync_with_global_locale(ptd))
52 {
53 *multibyte_info = __acrt_update_thread_multibyte_data();
54 }
55}