CodePorting.Translator Cs2Cpp
CodePorting.Translator.Cs2Cpp.Framework
culture_info.h
1
2#pragma once
3
4#include <system/globalization/number_format_info.h>
5#include <system/globalization/date_time_format_info.h>
6#include <system/globalization/calendar.h>
7#include <system/globalization/culture_types.h>
8#include <system/globalization/compare_info.h>
9#include <system/globalization/text_info.h>
10#include <system/icloneable.h>
11#include <system/iformatprovider.h>
12#include <system/nullable.h>
13#include <system/globalization/details/culture_data_ptr.h>
14#include <system/details/lazy.h>
15#include <system/details/spin_lock.h>
16
17namespace System { namespace Globalization {
18
19class CultureInfo;
22
28class ASPOSECPP_SHARED_CLASS CultureInfo
29 : virtual public Object
30 , public IFormatProvider
31 , public ICloneable
32{
34 RTTI_INFO(System::Globalization::CultureInfo, ::System::BaseTypesInfo<System::IFormatProvider>)
35
36public:
39 ASPOSECPP_SHARED_API explicit CultureInfo(int culture);
43 ASPOSECPP_SHARED_API CultureInfo(int culture, bool use_user_override);
46 ASPOSECPP_SHARED_API explicit CultureInfo(const String& name);
50 ASPOSECPP_SHARED_API CultureInfo(const String& name, bool use_user_override);
52 ASPOSECPP_SHARED_API CultureInfo(std::nullptr_t);
53
54public:
57 static ASPOSECPP_SHARED_API const CultureInfoPtr& get_InvariantCulture();
60 static ASPOSECPP_SHARED_API CultureInfoPtr get_DefaultThreadCurrentCulture();
63 static ASPOSECPP_SHARED_API void set_DefaultThreadCurrentCulture(const CultureInfoPtr& value);
66 static ASPOSECPP_SHARED_API const CultureInfoPtr& get_InstalledUICulture();
69 static ASPOSECPP_SHARED_API const CultureInfoPtr& get_CurrentUICulture();
72 static ASPOSECPP_SHARED_API void set_CurrentUICulture(const CultureInfoPtr& value);
75 static ASPOSECPP_SHARED_API const CultureInfoPtr& get_CurrentCulture();
78 static ASPOSECPP_SHARED_API void set_CurrentCulture(const CultureInfoPtr& value);
84 static ASPOSECPP_SHARED_API void set_DefaultThreadCurrentUICulture(const CultureInfoPtr& value);
85
88 virtual ASPOSECPP_SHARED_API String get_Name() const;
91 virtual ASPOSECPP_SHARED_API String get_EnglishName() const;
94 virtual ASPOSECPP_SHARED_API String get_NativeName() const;
97 virtual ASPOSECPP_SHARED_API String get_DisplayName() const;
100 virtual ASPOSECPP_SHARED_API int get_LCID() const;
103 ASPOSECPP_SHARED_API String get_IetfLanguageTag() const;
106 virtual ASPOSECPP_SHARED_API bool get_IsNeutralCulture() const;
109 virtual ASPOSECPP_SHARED_API String get_ThreeLetterWindowsLanguageName() const;
112 virtual ASPOSECPP_SHARED_API String get_ThreeLetterISOLanguageName() const;
115 virtual ASPOSECPP_SHARED_API String get_TwoLetterISOLanguageName() const;
118 ASPOSECPP_SHARED_API bool get_UseUserOverride() const;
121 ASPOSECPP_SHARED_API bool get_IsReadOnly() const;
124 ASPOSECPP_SHARED_API CultureTypes get_CultureTypes() const;
127 virtual ASPOSECPP_SHARED_API int get_KeyboardLayoutId() const;
130 virtual ASPOSECPP_SHARED_API CultureInfoPtr get_Parent() const;
133 virtual ASPOSECPP_SHARED_API TextInfoPtr get_TextInfo() const;
136 virtual ASPOSECPP_SHARED_API CompareInfoPtr get_CompareInfo() const;
139 virtual ASPOSECPP_SHARED_API CalendarPtr get_Calendar() const;
142 virtual ASPOSECPP_SHARED_API ArrayPtr<CalendarPtr> get_OptionalCalendars() const;
145 virtual ASPOSECPP_SHARED_API NumberFormatInfoPtr get_NumberFormat() const;
149 virtual ASPOSECPP_SHARED_API void set_NumberFormat(NumberFormatInfoPtr value);
152 virtual ASPOSECPP_SHARED_API DateTimeFormatInfoPtr get_DateTimeFormat() const;
156 virtual ASPOSECPP_SHARED_API void set_DateTimeFormat(DateTimeFormatInfoPtr value);
157
161 static ASPOSECPP_SHARED_API CultureInfoPtr CreateSpecificCulture(const String& name);
165 static ASPOSECPP_SHARED_API CultureInfoPtr GetCultureInfo(const String& name);
170 static ASPOSECPP_SHARED_API CultureInfoPtr GetCultureInfo(const String& name, const String& text_and_compare_culture_name);
174 static ASPOSECPP_SHARED_API CultureInfoPtr GetCultureInfo(int32_t culture);
178 static ASPOSECPP_SHARED_API CultureInfoPtr GetCultureInfoByIetfLanguageTag(const String& name);
182 static ASPOSECPP_SHARED_API ArrayPtr<CultureInfoPtr> GetCultures(CultureTypes types);
186 static ASPOSECPP_SHARED_API CultureInfoPtr ReadOnly(const CultureInfoPtr& culture_info);
187
189 ASPOSECPP_SHARED_API void ClearCachedData();
190
193 ASPOSECPP_SHARED_API CultureInfoPtr GetConsoleFallbackUICulture() const;
194
198 ASPOSECPP_SHARED_API bool operator==(const CultureInfo& other) const;
199
200 // Object methods override
201
205 ASPOSECPP_SHARED_API bool Equals(SharedPtr<Object> obj) override;
208 ASPOSECPP_SHARED_API String ToString() const override;
210 ASPOSECPP_SHARED_API int GetHashCode() const override;
211
212 // ICloneable interface implementation
213
216 ASPOSECPP_SHARED_API SharedPtr<Object> Clone() override;
217
218 // IFormatProvider interface implementation
219
223 ASPOSECPP_SHARED_API SharedPtr<Object> GetFormat(const TypeInfo &format_type) override;
224
226 bool IsInherited() const;
227
229
230protected:
232 ASPOSECPP_SHARED_API ~CultureInfo() override;
233
234private:
235 template <typename T>
236 using Lazy = System::Details::Lazy<T>;
237
238 using Lock = System::Details::OptionalSpinLock;
239 using LockContext = std::lock_guard<Lock>;
240
242 const bool m_is_read_only = false;
244 const bool m_use_user_override = false;
246 mutable Nullable<bool> m_is_inherited;
248 const String m_text_and_compare_culture_name;
250 mutable Lock m_lockable;
251
253 const Details::CultureDataPtr m_culture_data;
255 mutable Lazy<const CultureInfoPtr> m_parent;
257 mutable Lazy<const TextInfoPtr> m_text_info;
259 mutable Lazy<const CompareInfoPtr> m_compare_info;
261 mutable Lazy<const CalendarPtr> m_calendar;
263 mutable Lazy<const ArrayPtr<CalendarPtr>> m_optional_calendars;
265 mutable Lazy<NumberFormatInfoPtr> m_number_format;
267 mutable Lazy<DateTimeFormatInfoPtr> m_date_time_format;
268
272 CultureInfo(const String& name, const String& text_and_compare_culture_name);
273 MEMBER_FUNCTION_MAKE_OBJECT(CultureInfo, CODEPORTING_ARGS(const String& name, const String& text_and_compare_culture_name), CODEPORTING_ARGS(name, text_and_compare_culture_name));
274
278 explicit CultureInfo(const CultureInfo& other, bool is_read_only = false);
279 MEMBER_FUNCTION_MAKE_OBJECT(CultureInfo, CODEPORTING_ARGS(const CultureInfo& other, bool is_read_only = false), CODEPORTING_ARGS(other, is_read_only));
280
284 explicit CultureInfo(const Details::CultureDataPtr& data, bool is_read_only = false);
285 MEMBER_FUNCTION_MAKE_OBJECT(CultureInfo, CODEPORTING_ARGS(const Details::CultureDataPtr& data, bool is_read_only = false), CODEPORTING_ARGS(data, is_read_only));
286
288 void VerifyWriteable() const;
289
292 static const CultureInfoPtr& get_UserDefaultCulture();
293};
294
295}} // namespace System::Globalization
Collection of culture-specific values and algorithms. Setter operations are only enabled on non-read-...
Definition: culture_info.h:32
static void set_CurrentCulture(const CultureInfoPtr &value)
Sets culture for current thread.
bool Equals(SharedPtr< Object > obj) override
Compares objects.
CultureInfoPtr GetConsoleFallbackUICulture() const
Gets alternate culture suitable for console applications.
virtual String get_ThreeLetterWindowsLanguageName() const
Gets three-letter code for language as defined in Windows API.
static CultureInfoPtr CreateSpecificCulture(const String &name)
Creates culture by name.
bool operator==(const CultureInfo &other) const
Compares culture parameters.
SharedPtr< Object > GetFormat(const TypeInfo &format_type) override
Gets format object for specific type.
CultureInfo(const String &name)
Constructor.
virtual String get_Name() const
Gets culture name.
virtual CompareInfoPtr get_CompareInfo() const
Gets string comparer that adheres to culture rules.
CultureInfo(int culture, bool use_user_override)
Constructor.
virtual String get_NativeName() const
Gets culture native name.
static const CultureInfoPtr & get_InstalledUICulture()
Gets culture installed with the operating system.
virtual ArrayPtr< CalendarPtr > get_OptionalCalendars() const
List of calendars that can be used with the culture.
int GetHashCode() const override
Returns object hash code.
CultureInfo(const String &name, bool use_user_override)
Constructor.
virtual int get_KeyboardLayoutId() const
Gets active input locale identifier.
virtual CalendarPtr get_Calendar() const
Gets calendar used by the culture.
~CultureInfo() override
Destructor.
static CultureInfoPtr GetCultureInfo(const String &name)
Gets culture by its name. Same as CreateSpecificCulture.
static CultureInfoPtr get_DefaultThreadCurrentUICulture()
Gets default UI culture in the current application domain.
void ClearCachedData()
Refreshes cached culture information.
static const CultureInfoPtr & get_CurrentCulture()
Gets culture set for current thread.
bool get_UseUserOverride() const
Gets a flag indicating whether the CultureInfo uses user-selected culture settings.
CultureTypes get_CultureTypes() const
Gets bitwise joint of culture types that describe the current culture.
virtual String get_DisplayName() const
Gets culture display name.
static void set_DefaultThreadCurrentUICulture(const CultureInfoPtr &value)
Sets default UI culture in the current application domain.
static void set_DefaultThreadCurrentCulture(const CultureInfoPtr &value)
Sets default culture in the current application domain.
static CultureInfoPtr ReadOnly(const CultureInfoPtr &culture_info)
Gets a read only version of culture.
virtual int get_LCID() const
Gets culture identifier.
virtual String get_TwoLetterISOLanguageName() const
Gets two letters ISO language name associated with culture.
virtual void set_DateTimeFormat(DateTimeFormatInfoPtr value)
Sets date format information.
static ArrayPtr< CultureInfoPtr > GetCultures(CultureTypes types)
Gets cultures that fall into specified types.
bool get_IsReadOnly() const
Checks if culture object is read-only.
static CultureInfoPtr GetCultureInfo(const String &name, const String &text_and_compare_culture_name)
Gets culture by its name.
virtual TextInfoPtr get_TextInfo() const
Gets text parameters used by the culture.
static const CultureInfoPtr & get_InvariantCulture()
Gets invariant culture.
static void set_CurrentUICulture(const CultureInfoPtr &value)
Sets current thread's UI culture.
virtual CultureInfoPtr get_Parent() const
Gets parent culture.
CultureInfo(std::nullptr_t)
Always throws ArgumentNullException.
String get_IetfLanguageTag() const
Gets the RFC 4646 name for a language.
virtual String get_ThreeLetterISOLanguageName() const
Gets three-letter ISO 639-2 language code.
static const CultureInfoPtr & get_CurrentUICulture()
Gets current thread's UI culture.
static CultureInfoPtr get_DefaultThreadCurrentCulture()
Gets default culture in the current application domain.
virtual NumberFormatInfoPtr get_NumberFormat() const
Gets number format information.
static CultureInfoPtr GetCultureInfo(int32_t culture)
Gets culture by id.
virtual DateTimeFormatInfoPtr get_DateTimeFormat() const
Gets date format information.
SharedPtr< Object > Clone() override
Clones culture info.
bool IsInherited() const
Gets is-inherited flag. FOR INTERNAL USE.
CultureInfo(int culture)
RTTI information.
virtual String get_EnglishName() const
Gets culture English name.
String ToString() const override
Converts culture to string.
static CultureInfoPtr GetCultureInfoByIetfLanguageTag(const String &name)
Deprecated. Gets a read-only CultureInfo object by the specified RFC 4646 language tag.
virtual void set_NumberFormat(NumberFormatInfoPtr value)
Gets number format information.
CultureInfo & operator=(const CultureInfo &)=delete
virtual bool get_IsNeutralCulture() const
Checks whether the culture is neutral.
Defies a method that enables object cloning - creating a copy of an object. Objects of this class sho...
Definition: icloneable.h:16
Defines a method that provides formatting information. Objects of this class should only be allocated...
Definition: iformatprovider.h:18
Base class that enables using methods available for System.Object class in C#. All non-trivial classe...
Definition: object.h:62
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: smart_ptr.h:180
String class used across the library. Is a substitute for C# System.String when translating code....
Definition: string.h:122
Represents a particular type and provides information about it.
Definition: type_info.h:109
std::shared_ptr< CultureData > CultureDataPtr
Pointer to hold implementation type.
Definition: culture_data_ptr.h:12
SharedPtr< CultureInfo > CultureInfoPtr
CultureInfo pointer type.
Definition: culture_info.h:21
CultureTypes
Culture categories bitmask entries.
Definition: culture_types.h:12
Definition: db_command.h:9