CodePorting.Translator Cs2Cpp
CodePorting.Translator.Cs2Cpp.Framework
number_format_info.h
1
2#pragma once
3
4#include <system/iformatprovider.h>
5#include <system/icloneable.h>
6#include <system/nullable.h>
7#include <system/globalization/digit_shapes.h>
8#include <system/globalization/details/number_format_data_ptr.h>
9#include <system/globalization/details/culture_data_ptr.h>
10#include <system/details/spin_lock.h>
11
12namespace System { namespace Globalization {
13
14namespace Details {
15 class NumberFormatInfoReader;
16}
17
18class NumberFormatInfo;
21
27class ASPOSECPP_SHARED_CLASS NumberFormatInfo final
28 : virtual public Object
29 , public IFormatProvider
30 , public ICloneable
31{
33 RTTI_INFO(NumberFormatInfo, ::System::BaseTypesInfo<System::Object>)
34
35 friend class CultureInfo;
36
37public:
39 ASPOSECPP_SHARED_API NumberFormatInfo();
40
43 ASPOSECPP_SHARED_API bool get_IsReadOnly() const;
44
45 // ICloneable interface
48 ASPOSECPP_SHARED_API SharedPtr<Object> Clone() override;
49
52 ASPOSECPP_SHARED_API String get_NumberDecimalSeparator() const;
55 ASPOSECPP_SHARED_API void set_NumberDecimalSeparator(const String& value);
56
59 ASPOSECPP_SHARED_API int get_NumberDecimalDigits() const;
62 ASPOSECPP_SHARED_API void set_NumberDecimalDigits(int value);
63
66 ASPOSECPP_SHARED_API String get_NumberGroupSeparator() const;
69 ASPOSECPP_SHARED_API void set_NumberGroupSeparator(const String& value);
70
73 ASPOSECPP_SHARED_API String get_PercentSymbol() const;
76 ASPOSECPP_SHARED_API void set_PercentSymbol(const String& value);
77
80 ASPOSECPP_SHARED_API String get_PerMilleSymbol() const;
83 ASPOSECPP_SHARED_API void set_PerMilleSymbol(const String& value);
84
87 ASPOSECPP_SHARED_API String get_CurrencySymbol() const;
90 ASPOSECPP_SHARED_API void set_CurrencySymbol(const String& value);
91
94 ASPOSECPP_SHARED_API String get_PositiveSign() const;
97 ASPOSECPP_SHARED_API void set_PositiveSign(const String& value);
98
101 ASPOSECPP_SHARED_API String get_NegativeSign() const;
104 ASPOSECPP_SHARED_API void set_NegativeSign(const String& value);
105
108 ASPOSECPP_SHARED_API String get_CurrencyGroupSeparator() const;
111 ASPOSECPP_SHARED_API void set_CurrencyGroupSeparator(const String& value);
112
115 ASPOSECPP_SHARED_API String get_CurrencyDecimalSeparator() const;
118 ASPOSECPP_SHARED_API void set_CurrencyDecimalSeparator(const String& value);
119
122 ASPOSECPP_SHARED_API int get_CurrencyDecimalDigits() const;
125 ASPOSECPP_SHARED_API void set_CurrencyDecimalDigits(int value);
126
129 ASPOSECPP_SHARED_API ArrayPtr<int> get_CurrencyGroupSizes() const;
132 ASPOSECPP_SHARED_API void set_CurrencyGroupSizes(const ArrayPtr<int>& value);
133
136 ASPOSECPP_SHARED_API int get_CurrencyNegativePattern() const;
139 ASPOSECPP_SHARED_API void set_CurrencyNegativePattern(int value);
140
143 ASPOSECPP_SHARED_API int get_CurrencyPositivePattern() const;
146 ASPOSECPP_SHARED_API void set_CurrencyPositivePattern(int value);
147
150 ASPOSECPP_SHARED_API String get_NaNSymbol() const;
153 ASPOSECPP_SHARED_API void set_NaNSymbol(const String& value);
154
157 ASPOSECPP_SHARED_API String get_PositiveInfinitySymbol() const;
160 ASPOSECPP_SHARED_API void set_PositiveInfinitySymbol(const String& value);
161
164 ASPOSECPP_SHARED_API String get_NegativeInfinitySymbol() const;
167 ASPOSECPP_SHARED_API void set_NegativeInfinitySymbol(const String& value);
168
171 ASPOSECPP_SHARED_API ArrayPtr<int> get_NumberGroupSizes() const;
174 ASPOSECPP_SHARED_API void set_NumberGroupSizes(const ArrayPtr<int>& value);
175
178 ASPOSECPP_SHARED_API int get_NumberNegativePattern() const;
181 ASPOSECPP_SHARED_API void set_NumberNegativePattern(int value);
182
185 ASPOSECPP_SHARED_API int get_PercentDecimalDigits() const;
188 ASPOSECPP_SHARED_API void set_PercentDecimalDigits(int value);
189
192 ASPOSECPP_SHARED_API String get_PercentDecimalSeparator() const;
195 ASPOSECPP_SHARED_API void set_PercentDecimalSeparator(const String& value);
196
199 ASPOSECPP_SHARED_API String get_PercentGroupSeparator() const;
202 ASPOSECPP_SHARED_API void set_PercentGroupSeparator(const String& value);
203
206 ASPOSECPP_SHARED_API ArrayPtr<int> get_PercentGroupSizes() const;
209 ASPOSECPP_SHARED_API void set_PercentGroupSizes(const ArrayPtr<int>& value);
210
213 ASPOSECPP_SHARED_API int get_PercentNegativePattern() const;
216 ASPOSECPP_SHARED_API void set_PercentNegativePattern(int value);
217
220 ASPOSECPP_SHARED_API int get_PercentPositivePattern() const;
223 ASPOSECPP_SHARED_API void set_PercentPositivePattern(int value);
224
227 ASPOSECPP_SHARED_API ArrayPtr<String> get_NativeDigits() const;
230 ASPOSECPP_SHARED_API void set_NativeDigits(const ArrayPtr<String>& value);
231
234 ASPOSECPP_SHARED_API DigitShapes get_DigitSubstitution() const;
237 ASPOSECPP_SHARED_API void set_DigitSubstitution(DigitShapes value);
238
239 // IFormatProvider interface
243 ASPOSECPP_SHARED_API SharedPtr<Object> GetFormat(const TypeInfo &format_type) override;
244
247 static ASPOSECPP_SHARED_API NumberFormatInfoPtr get_CurrentInfo();
250 static ASPOSECPP_SHARED_API const NumberFormatInfoPtr& get_InvariantInfo();
251
255 static ASPOSECPP_SHARED_API NumberFormatInfoPtr GetInstance(const IFormatProviderPtr& provider);
259 static ASPOSECPP_SHARED_API NumberFormatInfoPtr ReadOnly(NumberFormatInfoPtr nfi);
260
261 NumberFormatInfo& operator=(const NumberFormatInfo&) = delete;
262
263protected:
265 ASPOSECPP_SHARED_API ~NumberFormatInfo() override;
266private:
267 friend class Details::NumberFormatInfoReader;
268
269 using Lock = System::Details::OptionalSpinLock;
270 using LockContext = std::lock_guard<Lock>;
271
273 const bool m_is_read_only;
275 const bool m_is_invariant;
277 const Details::CultureDataPtr m_culture_data;
279 Details::NumberFormatDataPtr m_data;
281 mutable Lock m_lockable;
283 const String m_culture_name;
284
286 mutable Nullable<int> m_currency_decimal_digits;
288 mutable String m_currency_decimal_separator;
290 mutable String m_currency_group_separator;
292 mutable ArrayPtr<int> m_currency_group_sizes;
294 mutable Nullable<int> m_currency_negative_pattern;
296 mutable Nullable<int> m_currency_positive_pattern;
298 mutable String m_currency_symbol;
300 mutable Nullable<DigitShapes> m_digit_substitution;
302 mutable String m_nan_symbol;
304 mutable ArrayPtr<String> m_native_digits;
306 mutable String m_negative_infinity_symbol;
308 mutable String m_negative_sign;
310 mutable Nullable<int> m_number_decimal_digits;
312 mutable String m_number_decimal_separator;
314 mutable String m_number_group_separator;
316 mutable ArrayPtr<int> m_number_group_sizes;
318 mutable Nullable<int> m_number_negative_pattern;
320 mutable Nullable<int> m_percent_decimal_digits;
322 mutable String m_percent_decimal_separator;
324 mutable String m_percent_group_separator;
326 mutable ArrayPtr<int> m_percent_group_sizes;
328 mutable Nullable<int> m_percent_negative_pattern;
330 mutable Nullable<int> m_percent_positive_pattern;
332 mutable String m_percent_symbol;
334 mutable String m_permille_symbol;
336 mutable String m_positive_infinity_symbol;
338 mutable String m_positive_sign;
339
340 // Calculated properties
341 mutable Nullable<bool> m_has_standart_positive_and_negative_signs;
342
345 bool is_read_only = false, bool is_preload_all_data = false);
346 MEMBER_FUNCTION_MAKE_OBJECT(NumberFormatInfo,
347 CODEPORTING_ARGS(const NumberFormatInfo &copy, bool is_read_only = false, bool is_preload_all_data = false),
348 CODEPORTING_ARGS(copy, is_read_only, is_preload_all_data)
349 );
354 NumberFormatInfo(const Details::CultureDataPtr& culture_data, bool is_read_only = false, bool is_preload_all_data = false);
355 MEMBER_FUNCTION_MAKE_OBJECT(NumberFormatInfo,
356 CODEPORTING_ARGS(const Details::CultureDataPtr& culture_data, bool is_read_only = false, bool is_preload_all_data = false),
357 CODEPORTING_ARGS(culture_data, is_read_only, is_preload_all_data)
358 );
359
361 void PreloadAllData();
363 void VerifyWritable();
365 Lock& Lockable() const { return m_lockable; }
367 Details::NumberFormatData& Data() const;
369 void OnChangeProperty(const LockContext&, const char16_t* property_name);
370
371 const String& CultureName(const LockContext&) const;
372 int CurrencyDecimalDigits(const LockContext&) const;
373 const String& CurrencyDecimalSeparator(const LockContext&) const;
374 const String& CurrencyGroupSeparator(const LockContext&) const;
375 const ArrayPtr<int>& CurrencyGroupSizes(const LockContext&) const;
376 int CurrencyNegativePattern(const LockContext&) const;
377 int CurrencyPositivePattern(const LockContext&) const;
378 const String& CurrencySymbol(const LockContext&) const;
379 DigitShapes DigitSubstitution(const LockContext&) const;
380 const String& NanSymbol(const LockContext&) const;
381 const ArrayPtr<String>& NativeDigits(const LockContext&) const;
382 const String& NegativeInfinitySymbol(const LockContext&) const;
383 const String& NegativeSign(const LockContext&) const;
384 int NumberDecimalDigits(const LockContext&) const;
385 const String& NumberDecimalSeparator(const LockContext&) const;
386 const String& NumberGroupSeparator(const LockContext&) const;
387 const ArrayPtr<int>& NumberGroupSizes(const LockContext&) const;
388 int NumberNegativePattern(const LockContext&) const;
389 int PercentDecimalDigits(const LockContext&) const;
390 const String& PercentDecimalSeparator(const LockContext&) const;
391 const String& PercentGroupSeparator(const LockContext&) const;
392 const ArrayPtr<int>& PercentGroupSizes(const LockContext&) const;
393 int PercentNegativePattern(const LockContext&) const;
394 int PercentPositivePattern(const LockContext&) const;
395 const String& PercentSymbol(const LockContext&) const;
396 const String& PerMilleSymbol(const LockContext&) const;
397 const String& PositiveInfinitySymbol(const LockContext&) const;
398 const String& PositiveSign(const LockContext&) const;
399
400 bool HasStandartPositiveAndNegativeSigns(const LockContext&) const;
401
402 static const NumberFormatInfoPtr& InvariantInfo();
403};
404
405}} // namespace System::Globalization
Collection of culture-specific values and algorithms. Setter operations are only enabled on non-read-...
Definition: culture_info.h:32
Holds information on how to format numbers. Setter operations are only enabled on non-read-only objec...
Definition: number_format_info.h:31
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
Forward declaration.
Definition: nullable.h:74
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
SharedPtr< NumberFormatInfo > NumberFormatInfoPtr
NumberFormatInfo pointer.
Definition: number_format_info.h:20
DigitShapes
Specifies display of digits.
Definition: digit_shapes.h:11
Definition: db_command.h:9