1 // © 2018 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
4 #include "unicode/utypes.h"
6 #if !UCONFIG_NO_FORMATTING
8 // Allow implicit conversion from char16_t* to UnicodeString for this file:
9 // Helpful in toString methods and elsewhere.
10 #define UNISTR_FROM_STRING_EXPLICIT
12 #include "unicode/compactdecimalformat.h"
13 #include "number_mapper.h"
14 #include "number_decimfmtprops.h"
19 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CompactDecimalFormat
)
23 CompactDecimalFormat::createInstance(const Locale
& inLocale
, UNumberCompactStyle style
,
25 return new CompactDecimalFormat(inLocale
, style
, status
);
28 CompactDecimalFormat::CompactDecimalFormat(const Locale
& inLocale
, UNumberCompactStyle style
,
30 : DecimalFormat(new DecimalFormatSymbols(inLocale
, status
), status
) {
31 if (U_FAILURE(status
)) return;
32 // Minimal properties: let the non-shim code path do most of the logic for us.
33 fields
->properties
->compactStyle
= style
;
34 fields
->properties
->groupingSize
= -2; // do not forward grouping information
35 fields
->properties
->minimumGroupingDigits
= 2;
39 CompactDecimalFormat::CompactDecimalFormat(const CompactDecimalFormat
& source
) = default;
41 CompactDecimalFormat::~CompactDecimalFormat() = default;
43 CompactDecimalFormat
& CompactDecimalFormat::operator=(const CompactDecimalFormat
& rhs
) {
44 DecimalFormat::operator=(rhs
);
48 Format
* CompactDecimalFormat::clone() const {
49 return new CompactDecimalFormat(*this);
53 CompactDecimalFormat::parse(
54 const UnicodeString
& /* text */,
55 Formattable
& /* result */,
56 ParsePosition
& /* parsePosition */) const {
60 CompactDecimalFormat::parse(
61 const UnicodeString
& /* text */,
62 Formattable
& /* result */,
63 UErrorCode
& status
) const {
64 status
= U_UNSUPPORTED_ERROR
;
68 CompactDecimalFormat::parseCurrency(
69 const UnicodeString
& /* text */,
70 ParsePosition
& /* pos */) const {
75 #endif /* #if !UCONFIG_NO_FORMATTING */