]> git.saurik.com Git - apple/icu.git/blob - icuSources/i18n/decimalformatpattern.h
ICU-531.30.tar.gz
[apple/icu.git] / icuSources / i18n / decimalformatpattern.h
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