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>
12namespace System {
namespace Globalization {
15 class NumberFormatInfoReader;
18class NumberFormatInfo;
43 ASPOSECPP_SHARED_API
bool get_IsReadOnly() const;
52 ASPOSECPP_SHARED_API
String get_NumberDecimalSeparator() const;
55 ASPOSECPP_SHARED_API
void set_NumberDecimalSeparator(const
String& value);
59 ASPOSECPP_SHARED_API
int get_NumberDecimalDigits() const;
62 ASPOSECPP_SHARED_API
void set_NumberDecimalDigits(
int value);
66 ASPOSECPP_SHARED_API
String get_NumberGroupSeparator() const;
69 ASPOSECPP_SHARED_API
void set_NumberGroupSeparator(const
String& value);
73 ASPOSECPP_SHARED_API
String get_PercentSymbol() const;
76 ASPOSECPP_SHARED_API
void set_PercentSymbol(const
String& value);
80 ASPOSECPP_SHARED_API
String get_PerMilleSymbol() const;
83 ASPOSECPP_SHARED_API
void set_PerMilleSymbol(const
String& value);
87 ASPOSECPP_SHARED_API
String get_CurrencySymbol() const;
90 ASPOSECPP_SHARED_API
void set_CurrencySymbol(const
String& value);
94 ASPOSECPP_SHARED_API
String get_PositiveSign() const;
97 ASPOSECPP_SHARED_API
void set_PositiveSign(const
String& value);
101 ASPOSECPP_SHARED_API
String get_NegativeSign() const;
104 ASPOSECPP_SHARED_API
void set_NegativeSign(const
String& value);
108 ASPOSECPP_SHARED_API
String get_CurrencyGroupSeparator() const;
111 ASPOSECPP_SHARED_API
void set_CurrencyGroupSeparator(const
String& value);
115 ASPOSECPP_SHARED_API
String get_CurrencyDecimalSeparator() const;
118 ASPOSECPP_SHARED_API
void set_CurrencyDecimalSeparator(const
String& value);
122 ASPOSECPP_SHARED_API
int get_CurrencyDecimalDigits() const;
125 ASPOSECPP_SHARED_API
void set_CurrencyDecimalDigits(
int value);
129 ASPOSECPP_SHARED_API
ArrayPtr<
int> get_CurrencyGroupSizes() const;
132 ASPOSECPP_SHARED_API
void set_CurrencyGroupSizes(const
ArrayPtr<
int>& value);
136 ASPOSECPP_SHARED_API
int get_CurrencyNegativePattern() const;
139 ASPOSECPP_SHARED_API
void set_CurrencyNegativePattern(
int value);
143 ASPOSECPP_SHARED_API
int get_CurrencyPositivePattern() const;
146 ASPOSECPP_SHARED_API
void set_CurrencyPositivePattern(
int value);
150 ASPOSECPP_SHARED_API
String get_NaNSymbol() const;
153 ASPOSECPP_SHARED_API
void set_NaNSymbol(const
String& value);
157 ASPOSECPP_SHARED_API
String get_PositiveInfinitySymbol() const;
160 ASPOSECPP_SHARED_API
void set_PositiveInfinitySymbol(const
String& value);
164 ASPOSECPP_SHARED_API
String get_NegativeInfinitySymbol() const;
167 ASPOSECPP_SHARED_API
void set_NegativeInfinitySymbol(const
String& value);
171 ASPOSECPP_SHARED_API
ArrayPtr<
int> get_NumberGroupSizes() const;
174 ASPOSECPP_SHARED_API
void set_NumberGroupSizes(const
ArrayPtr<
int>& value);
178 ASPOSECPP_SHARED_API
int get_NumberNegativePattern() const;
181 ASPOSECPP_SHARED_API
void set_NumberNegativePattern(
int value);
185 ASPOSECPP_SHARED_API
int get_PercentDecimalDigits() const;
188 ASPOSECPP_SHARED_API
void set_PercentDecimalDigits(
int value);
192 ASPOSECPP_SHARED_API
String get_PercentDecimalSeparator() const;
195 ASPOSECPP_SHARED_API
void set_PercentDecimalSeparator(const
String& value);
199 ASPOSECPP_SHARED_API
String get_PercentGroupSeparator() const;
202 ASPOSECPP_SHARED_API
void set_PercentGroupSeparator(const
String& value);
206 ASPOSECPP_SHARED_API
ArrayPtr<
int> get_PercentGroupSizes() const;
209 ASPOSECPP_SHARED_API
void set_PercentGroupSizes(const
ArrayPtr<
int>& value);
213 ASPOSECPP_SHARED_API
int get_PercentNegativePattern() const;
216 ASPOSECPP_SHARED_API
void set_PercentNegativePattern(
int value);
220 ASPOSECPP_SHARED_API
int get_PercentPositivePattern() const;
223 ASPOSECPP_SHARED_API
void set_PercentPositivePattern(
int value);
237 ASPOSECPP_SHARED_API
void set_DigitSubstitution(
DigitShapes value);
267 friend class Details::NumberFormatInfoReader;
269 using Lock =
System::Details::OptionalSpinLock;
270 using LockContext = std::lock_guard<Lock>;
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;
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;
302 mutable
String m_nan_symbol;
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;
341 mutable
Nullable<
bool> m_has_standart_positive_and_negative_signs;
345 bool is_read_only = false,
bool is_preload_all_data = false);
347 CODEPORTING_ARGS(const
NumberFormatInfo ©,
bool is_read_only = false,
bool is_preload_all_data = false),
348 CODEPORTING_ARGS(copy, is_read_only, is_preload_all_data)
354 NumberFormatInfo(const Details::CultureDataPtr& culture_data,
bool is_read_only = false,
bool is_preload_all_data = false);
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)
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);
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;
379 DigitShapes DigitSubstitution(
const LockContext&)
const;
380 const String& NanSymbol(
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;
400 bool HasStandartPositiveAndNegativeSigns(
const LockContext&)
const;
Collection of culture-specific values and algorithms. Setter operations are only enabled on non-read-...
Definition: culture_info.h:32
Defies a method that enables object cloning - creating a copy of an object. Objects of this class sho...
Definition: icloneable.h:16
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
@ CurrencySymbol
Currency symbol.
DigitShapes
Specifies display of digits.
Definition: digit_shapes.h:11
Definition: db_command.h:9