Index: source/i18n/nfrule.h |
diff --git a/source/i18n/nfrule.h b/source/i18n/nfrule.h |
index 96474630a4501fb4886169bf3811e376b6f3d2df..f5697f3da4004d98ec0e696767e50f578be72d51 100644 |
--- a/source/i18n/nfrule.h |
+++ b/source/i18n/nfrule.h |
@@ -1,6 +1,6 @@ |
/* |
******************************************************************************* |
-* Copyright (C) 1997-2014, International Business Machines |
+* Copyright (C) 1997-2015, International Business Machines |
* Corporation and others. All Rights Reserved. |
******************************************************************************* |
*/ |
@@ -38,17 +38,19 @@ public: |
kImproperFractionRule = -2, |
kProperFractionRule = -3, |
kMasterRule = -4, |
- kOtherRule = -5 |
+ kInfinityRule = -5, |
+ kNaNRule = -6, |
+ kOtherRule = -7 |
}; |
static void makeRules(UnicodeString& definition, |
- const NFRuleSet* ruleSet, |
+ NFRuleSet* ruleSet, |
const NFRule* predecessor, |
const RuleBasedNumberFormat* rbnf, |
NFRuleList& ruleList, |
UErrorCode& status); |
- NFRule(const RuleBasedNumberFormat* rbnf); |
+ NFRule(const RuleBasedNumberFormat* rbnf, const UnicodeString &ruleText, UErrorCode &status); |
~NFRule(); |
UBool operator==(const NFRule& rhs) const; |
@@ -60,10 +62,12 @@ public: |
int64_t getBaseValue() const { return baseValue; } |
void setBaseValue(int64_t value, UErrorCode& status); |
+ UChar getDecimalPoint() const { return decimalPoint; } |
+ |
double getDivisor() const { return uprv_pow(radix, exponent); } |
- void doFormat(int64_t number, UnicodeString& toAppendTo, int32_t pos, UErrorCode& status) const; |
- void doFormat(double number, UnicodeString& toAppendTo, int32_t pos, UErrorCode& status) const; |
+ void doFormat(int64_t number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const; |
+ void doFormat(double number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const; |
UBool doParse(const UnicodeString& text, |
ParsePosition& pos, |
@@ -78,13 +82,15 @@ public: |
int32_t findTextLenient(const UnicodeString& str, const UnicodeString& key, |
int32_t startingAt, int32_t* resultCount) const; |
+ void setDecimalFormatSymbols(const DecimalFormatSymbols &newSymbols, UErrorCode& status); |
+ |
private: |
void parseRuleDescriptor(UnicodeString& descriptor, UErrorCode& status); |
void extractSubstitutions(const NFRuleSet* ruleSet, const UnicodeString &ruleText, const NFRule* predecessor, UErrorCode& status); |
NFSubstitution* extractSubstitution(const NFRuleSet* ruleSet, const NFRule* predecessor, UErrorCode& status); |
int16_t expectedExponent() const; |
- int32_t indexOfAny(const UChar* const strings[]) const; |
+ int32_t indexOfAnyRulePrefix() const; |
double matchToDelimiter(const UnicodeString& text, int32_t startPos, double baseValue, |
const UnicodeString& delimiter, ParsePosition& pp, const NFSubstitution* sub, |
double upperBound) const; |
@@ -99,6 +105,7 @@ private: |
int64_t baseValue; |
int32_t radix; |
int16_t exponent; |
+ UChar decimalPoint; |
UnicodeString ruleText; |
NFSubstitution* sub1; |
NFSubstitution* sub2; |