2 *******************************************************************************
3 * Copyright (C) 1997-2014, International Business Machines Corporation and *
4 * others. All Rights Reserved. *
5 *******************************************************************************
7 #ifndef _DECIMAL_FORMAT_PATTERN
8 #define _DECIMAL_FORMAT_PATTERN
10 #include "unicode/utypes.h"
12 #if !UCONFIG_NO_FORMATTING
14 #include "unicode/uobject.h"
15 #include "unicode/unistr.h"
20 // currency sign count
21 enum CurrencySignCount
{
22 fgCurrencySignCountZero
,
23 fgCurrencySignCountInSymbolFormat
,
24 fgCurrencySignCountInISOFormat
,
25 fgCurrencySignCountInPluralFormat
28 class DecimalFormatSymbols
;
30 struct DecimalFormatPattern
: UMemory
{
38 DecimalFormatPattern();
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
;
52 int32_t fGroupingSize
;
53 int32_t fGroupingSize2
;
55 UBool fDecimalSeparatorAlwaysShown
;
57 UBool fRoundingIncrementUsed
;
58 DigitList fRoundingIncrement
;
60 UBool fNegPatternsBogus
;
61 UBool fPosPatternsBogus
;
62 UnicodeString fNegPrefixPattern
;
63 UnicodeString fNegSuffixPattern
;
64 UnicodeString fPosPrefixPattern
;
65 UnicodeString fPosSuffixPattern
;
66 EPadPosition fPadPosition
;
69 class DecimalFormatPatternParser
: UMemory
{
71 DecimalFormatPatternParser();
72 void useSymbols(const DecimalFormatSymbols
& symbols
);
74 void applyPatternWithoutExpandAffix(
75 const UnicodeString
& pattern
,
76 DecimalFormatPattern
& out
,
77 UParseError
& parseError
,
80 DecimalFormatPatternParser(const DecimalFormatPatternParser
&);
81 DecimalFormatPatternParser
& operator=(DecimalFormatPatternParser
& rhs
);
84 UnicodeString fGroupingSeparator
;
85 UnicodeString fDecimalSeparator
;
86 UnicodeString fPercent
;
87 UnicodeString fPerMill
;
89 UnicodeString fSeparator
;
90 UnicodeString fExponent
;
93 UnicodeString fPadEscape
;
98 #endif /* !UCONFIG_NO_FORMATTING */