| /* |
| ******************************************************************************* |
| * Copyright (C) 1997-2015, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ******************************************************************************* |
| */ |
| #ifndef _DECIMAL_FORMAT_PATTERN |
| #define _DECIMAL_FORMAT_PATTERN |
| |
| #include "unicode/utypes.h" |
| |
| #if !UCONFIG_NO_FORMATTING |
| |
| #include "unicode/uobject.h" |
| #include "unicode/unistr.h" |
| #include "digitlst.h" |
| #include "affixpatternparser.h" |
| |
| U_NAMESPACE_BEGIN |
| |
| // currency sign count |
| enum CurrencySignCount { |
| fgCurrencySignCountZero, |
| fgCurrencySignCountInSymbolFormat, |
| fgCurrencySignCountInISOFormat, |
| fgCurrencySignCountInPluralFormat |
| }; |
| |
| class DecimalFormatSymbols; |
| |
| struct DecimalFormatPattern : UMemory { |
| enum EPadPosition { |
| kPadBeforePrefix, |
| kPadAfterPrefix, |
| kPadBeforeSuffix, |
| kPadAfterSuffix |
| }; |
| |
| DecimalFormatPattern(); |
| |
| int32_t fMinimumIntegerDigits; |
| int32_t fMaximumIntegerDigits; |
| int32_t fMinimumFractionDigits; |
| int32_t fMaximumFractionDigits; |
| UBool fUseSignificantDigits; |
| int32_t fMinimumSignificantDigits; |
| int32_t fMaximumSignificantDigits; |
| UBool fUseExponentialNotation; |
| int32_t fMinExponentDigits; |
| UBool fExponentSignAlwaysShown; |
| int32_t fCurrencySignCount; |
| UBool fGroupingUsed; |
| int32_t fGroupingSize; |
| int32_t fGroupingSize2; |
| int32_t fMultiplier; |
| UBool fDecimalSeparatorAlwaysShown; |
| int32_t fFormatWidth; |
| UBool fRoundingIncrementUsed; |
| DigitList fRoundingIncrement; |
| UChar32 fPad; |
| UBool fNegPatternsBogus; |
| UBool fPosPatternsBogus; |
| UnicodeString fNegPrefixPattern; |
| UnicodeString fNegSuffixPattern; |
| UnicodeString fPosPrefixPattern; |
| UnicodeString fPosSuffixPattern; |
| AffixPattern fNegPrefixAffix; |
| AffixPattern fNegSuffixAffix; |
| AffixPattern fPosPrefixAffix; |
| AffixPattern fPosSuffixAffix; |
| EPadPosition fPadPosition; |
| }; |
| |
| class DecimalFormatPatternParser : UMemory { |
| public: |
| DecimalFormatPatternParser(); |
| void useSymbols(const DecimalFormatSymbols& symbols); |
| |
| void applyPatternWithoutExpandAffix( |
| const UnicodeString& pattern, |
| DecimalFormatPattern& out, |
| UParseError& parseError, |
| UErrorCode& status); |
| private: |
| DecimalFormatPatternParser(const DecimalFormatPatternParser&); |
| DecimalFormatPatternParser& operator=(DecimalFormatPatternParser& rhs); |
| UChar32 fZeroDigit; |
| UChar32 fSigDigit; |
| UnicodeString fGroupingSeparator; |
| UnicodeString fDecimalSeparator; |
| UnicodeString fPercent; |
| UnicodeString fPerMill; |
| UnicodeString fDigit; |
| UnicodeString fSeparator; |
| UnicodeString fExponent; |
| UnicodeString fPlus; |
| UnicodeString fMinus; |
| UnicodeString fPadEscape; |
| }; |
| |
| U_NAMESPACE_END |
| |
| #endif /* !UCONFIG_NO_FORMATTING */ |
| #endif |