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