]> git.saurik.com Git - apple/icu.git/blob - icuSources/i18n/decimalformatpattern.h
ICU-57166.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / decimalformatpattern.h
1 /*
2 *******************************************************************************
3 * Copyright (C) 1997-2015, 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 #include "affixpatternparser.h"
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;
67 AffixPattern fNegPrefixAffix;
68 AffixPattern fNegSuffixAffix;
69 AffixPattern fPosPrefixAffix;
70 AffixPattern fPosSuffixAffix;
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