1fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius/* 2fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius******************************************************************************* 3fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* Copyright (C) 1997-2014, International Business Machines Corporation and * 4fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* others. All Rights Reserved. * 5fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius******************************************************************************* 6fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius*/ 7fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#ifndef _DECIMAL_FORMAT_PATTERN 8fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#define _DECIMAL_FORMAT_PATTERN 9fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 10fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#include "unicode/utypes.h" 11fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 12fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#if !UCONFIG_NO_FORMATTING 13fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 14fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#include "unicode/uobject.h" 15fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#include "unicode/unistr.h" 16fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#include "digitlst.h" 17fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 18fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusU_NAMESPACE_BEGIN 19fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 20fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius// currency sign count 21fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusenum CurrencySignCount { 22fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius fgCurrencySignCountZero, 23fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius fgCurrencySignCountInSymbolFormat, 24fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius fgCurrencySignCountInISOFormat, 25fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius fgCurrencySignCountInPluralFormat 26fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius}; 27fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 28fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusclass DecimalFormatSymbols; 29fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 30fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusstruct DecimalFormatPattern : UMemory { 31fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius enum EPadPosition { 32fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius kPadBeforePrefix, 33fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius kPadAfterPrefix, 34fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius kPadBeforeSuffix, 35fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius kPadAfterSuffix 36fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius }; 37fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 38fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DecimalFormatPattern(); 39fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 40fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t fMinimumIntegerDigits; 41fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t fMaximumIntegerDigits; 42fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t fMinimumFractionDigits; 43fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t fMaximumFractionDigits; 44fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UBool fUseSignificantDigits; 45fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t fMinimumSignificantDigits; 46fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t fMaximumSignificantDigits; 47fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UBool fUseExponentialNotation; 48fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t fMinExponentDigits; 49fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UBool fExponentSignAlwaysShown; 50fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t fCurrencySignCount; 51fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UBool fGroupingUsed; 52fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t fGroupingSize; 53fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t fGroupingSize2; 54fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t fMultiplier; 55fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UBool fDecimalSeparatorAlwaysShown; 56fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t fFormatWidth; 57fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UBool fRoundingIncrementUsed; 58fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DigitList fRoundingIncrement; 59fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UChar32 fPad; 60fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UBool fNegPatternsBogus; 61fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UBool fPosPatternsBogus; 62fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fNegPrefixPattern; 63fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fNegSuffixPattern; 64fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fPosPrefixPattern; 65fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fPosSuffixPattern; 66fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius EPadPosition fPadPosition; 67fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius}; 68fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 69fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusclass DecimalFormatPatternParser : UMemory { 70fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius public: 71fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DecimalFormatPatternParser(); 72fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void useSymbols(const DecimalFormatSymbols& symbols); 73fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 74fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void applyPatternWithoutExpandAffix( 75fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius const UnicodeString& pattern, 76fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DecimalFormatPattern& out, 77fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UParseError& parseError, 78fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UErrorCode& status); 79fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius private: 80fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DecimalFormatPatternParser(const DecimalFormatPatternParser&); 81fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DecimalFormatPatternParser& operator=(DecimalFormatPatternParser& rhs); 82fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UChar32 fZeroDigit; 83fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UChar32 fSigDigit; 84fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fGroupingSeparator; 85fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fDecimalSeparator; 86fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fPercent; 87fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fPerMill; 88fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fDigit; 89fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fSeparator; 90fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fExponent; 91fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fPlus; 92fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fMinus; 93fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UnicodeString fPadEscape; 94fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius}; 95fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 96fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusU_NAMESPACE_END 97fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 98fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#endif /* !UCONFIG_NO_FORMATTING */ 99fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#endif 100