]> git.saurik.com Git - apple/icu.git/blame - icuSources/i18n/decimalformatpattern.h
ICU-57166.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / decimalformatpattern.h
CommitLineData
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
19U_NAMESPACE_BEGIN
20
21// currency sign count
22enum CurrencySignCount {
23 fgCurrencySignCountZero,
24 fgCurrencySignCountInSymbolFormat,
25 fgCurrencySignCountInISOFormat,
26 fgCurrencySignCountInPluralFormat
27};
28
29class DecimalFormatSymbols;
30
31struct 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
74class 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
101U_NAMESPACE_END
102
103#endif /* !UCONFIG_NO_FORMATTING */
104#endif