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