]>
Commit | Line | Data |
---|---|---|
57a6839d A |
1 | /* |
2 | ******************************************************************************* | |
2ca993e8 | 3 | * Copyright (C) 1997-2015, International Business Machines Corporation and * |
57a6839d A |
4 | * others. All Rights Reserved. * |
5 | ******************************************************************************* | |
6 | */ | |
7 | #ifndef _DECIMAL_FORMAT_PATTERN | |
8 | #define _DECIMAL_FORMAT_PATTERN | |
9 | ||
10 | #include "unicode/utypes.h" | |
11 | ||
12 | #if !UCONFIG_NO_FORMATTING | |
13 | ||
14 | #include "unicode/uobject.h" | |
15 | #include "unicode/unistr.h" | |
16 | #include "digitlst.h" | |
2ca993e8 | 17 | #include "affixpatternparser.h" |
57a6839d A |
18 | |
19 | U_NAMESPACE_BEGIN | |
20 | ||
21 | // currency sign count | |
22 | enum CurrencySignCount { | |
23 | fgCurrencySignCountZero, | |
24 | fgCurrencySignCountInSymbolFormat, | |
25 | fgCurrencySignCountInISOFormat, | |
26 | fgCurrencySignCountInPluralFormat | |
27 | }; | |
28 | ||
29 | class DecimalFormatSymbols; | |
30 | ||
31 | struct DecimalFormatPattern : UMemory { | |
32 | enum EPadPosition { | |
33 | kPadBeforePrefix, | |
34 | kPadAfterPrefix, | |
35 | kPadBeforeSuffix, | |
36 | kPadAfterSuffix | |
37 | }; | |
38 | ||
39 | DecimalFormatPattern(); | |
40 | ||
41 | int32_t fMinimumIntegerDigits; | |
42 | int32_t fMaximumIntegerDigits; | |
43 | int32_t fMinimumFractionDigits; | |
44 | int32_t fMaximumFractionDigits; | |
45 | UBool fUseSignificantDigits; | |
46 | int32_t fMinimumSignificantDigits; | |
47 | int32_t fMaximumSignificantDigits; | |
48 | UBool fUseExponentialNotation; | |
49 | int32_t fMinExponentDigits; | |
50 | UBool fExponentSignAlwaysShown; | |
51 | int32_t fCurrencySignCount; | |
52 | UBool fGroupingUsed; | |
53 | int32_t fGroupingSize; | |
54 | int32_t fGroupingSize2; | |
55 | int32_t fMultiplier; | |
56 | UBool fDecimalSeparatorAlwaysShown; | |
57 | int32_t fFormatWidth; | |
58 | UBool fRoundingIncrementUsed; | |
59 | DigitList fRoundingIncrement; | |
60 | UChar32 fPad; | |
61 | UBool fNegPatternsBogus; | |
62 | UBool fPosPatternsBogus; | |
63 | UnicodeString fNegPrefixPattern; | |
64 | UnicodeString fNegSuffixPattern; | |
65 | UnicodeString fPosPrefixPattern; | |
66 | UnicodeString fPosSuffixPattern; | |
2ca993e8 A |
67 | AffixPattern fNegPrefixAffix; |
68 | AffixPattern fNegSuffixAffix; | |
69 | AffixPattern fPosPrefixAffix; | |
70 | AffixPattern fPosSuffixAffix; | |
57a6839d A |
71 | EPadPosition fPadPosition; |
72 | }; | |
73 | ||
74 | class DecimalFormatPatternParser : UMemory { | |
75 | public: | |
76 | DecimalFormatPatternParser(); | |
77 | void useSymbols(const DecimalFormatSymbols& symbols); | |
78 | ||
79 | void applyPatternWithoutExpandAffix( | |
80 | const UnicodeString& pattern, | |
81 | DecimalFormatPattern& out, | |
82 | UParseError& parseError, | |
83 | UErrorCode& status); | |
84 | private: | |
85 | DecimalFormatPatternParser(const DecimalFormatPatternParser&); | |
86 | DecimalFormatPatternParser& operator=(DecimalFormatPatternParser& rhs); | |
87 | UChar32 fZeroDigit; | |
88 | UChar32 fSigDigit; | |
89 | UnicodeString fGroupingSeparator; | |
90 | UnicodeString fDecimalSeparator; | |
91 | UnicodeString fPercent; | |
92 | UnicodeString fPerMill; | |
93 | UnicodeString fDigit; | |
94 | UnicodeString fSeparator; | |
95 | UnicodeString fExponent; | |
96 | UnicodeString fPlus; | |
97 | UnicodeString fMinus; | |
98 | UnicodeString fPadEscape; | |
99 | }; | |
100 | ||
101 | U_NAMESPACE_END | |
102 | ||
103 | #endif /* !UCONFIG_NO_FORMATTING */ | |
104 | #endif |