| Index: icu46/source/i18n/nfrule.h
|
| ===================================================================
|
| --- icu46/source/i18n/nfrule.h (revision 0)
|
| +++ icu46/source/i18n/nfrule.h (revision 0)
|
| @@ -0,0 +1,114 @@
|
| +/*
|
| +*******************************************************************************
|
| +* Copyright (C) 1997-2008, International Business Machines
|
| +* Corporation and others. All Rights Reserved.
|
| +*******************************************************************************
|
| +*/
|
| +
|
| +#ifndef NFRULE_H
|
| +#define NFRULE_H
|
| +
|
| +#include "unicode/rbnf.h"
|
| +
|
| +#if U_HAVE_RBNF
|
| +
|
| +#include "unicode/utypes.h"
|
| +#include "unicode/uobject.h"
|
| +#include "unicode/unistr.h"
|
| +#include "putilimp.h"
|
| +
|
| +U_NAMESPACE_BEGIN
|
| +
|
| +class FieldPosition;
|
| +class Formattable;
|
| +class NFRuleList;
|
| +class NFRuleSet;
|
| +class NFSubstitution;
|
| +class ParsePosition;
|
| +class RuleBasedNumberFormat;
|
| +class UnicodeString;
|
| +
|
| +class NFRule : public UMemory {
|
| +public:
|
| +
|
| + enum ERuleType {
|
| + kNoBase = 0,
|
| + kNegativeNumberRule = -1,
|
| + kImproperFractionRule = -2,
|
| + kProperFractionRule = -3,
|
| + kMasterRule = -4,
|
| + kOtherRule = -5
|
| + };
|
| +
|
| + static void makeRules(UnicodeString& definition,
|
| + const NFRuleSet* ruleSet,
|
| + const NFRule* predecessor,
|
| + const RuleBasedNumberFormat* rbnf,
|
| + NFRuleList& ruleList,
|
| + UErrorCode& status);
|
| +
|
| + NFRule(const RuleBasedNumberFormat* rbnf);
|
| + ~NFRule();
|
| +
|
| + UBool operator==(const NFRule& rhs) const;
|
| + UBool operator!=(const NFRule& rhs) const { return !operator==(rhs); }
|
| +
|
| + ERuleType getType() const { return (ERuleType)(baseValue <= kNoBase ? (ERuleType)baseValue : kOtherRule); }
|
| + void setType(ERuleType ruleType) { baseValue = (int32_t)ruleType; }
|
| +
|
| + int64_t getBaseValue() const { return baseValue; }
|
| + void setBaseValue(int64_t value, UErrorCode& status);
|
| +
|
| + double getDivisor() const { return uprv_pow(radix, exponent); }
|
| +
|
| + void doFormat(int64_t number, UnicodeString& toAppendTo, int32_t pos) const;
|
| + void doFormat(double number, UnicodeString& toAppendTo, int32_t pos) const;
|
| +
|
| + UBool doParse(const UnicodeString& text,
|
| + ParsePosition& pos,
|
| + UBool isFractional,
|
| + double upperBound,
|
| + Formattable& result) const;
|
| +
|
| + UBool shouldRollBack(double number) const;
|
| +
|
| + void _appendRuleText(UnicodeString& result) const;
|
| +
|
| +private:
|
| + void parseRuleDescriptor(UnicodeString& descriptor, UErrorCode& status);
|
| + void extractSubstitutions(const NFRuleSet* ruleSet, const NFRule* predecessor, const RuleBasedNumberFormat* rbnf, UErrorCode& status);
|
| + NFSubstitution* extractSubstitution(const NFRuleSet* ruleSet, const NFRule* predecessor, const RuleBasedNumberFormat* rbnf, UErrorCode& status);
|
| +
|
| + int16_t expectedExponent() const;
|
| + int32_t indexOfAny(const UChar* const strings[]) const;
|
| + double matchToDelimiter(const UnicodeString& text, int32_t startPos, double baseValue,
|
| + const UnicodeString& delimiter, ParsePosition& pp, const NFSubstitution* sub,
|
| + double upperBound) const;
|
| + void stripPrefix(UnicodeString& text, const UnicodeString& prefix, ParsePosition& pp) const;
|
| +
|
| + int32_t prefixLength(const UnicodeString& str, const UnicodeString& prefix, UErrorCode& status) const;
|
| + UBool allIgnorable(const UnicodeString& str, UErrorCode& status) const;
|
| + int32_t findText(const UnicodeString& str, const UnicodeString& key,
|
| + int32_t startingAt, int32_t* resultCount) const;
|
| +
|
| +private:
|
| + int64_t baseValue;
|
| + int32_t radix;
|
| + int16_t exponent;
|
| + UnicodeString ruleText;
|
| + NFSubstitution* sub1;
|
| + NFSubstitution* sub2;
|
| + const RuleBasedNumberFormat* formatter;
|
| +
|
| + NFRule(const NFRule &other); // forbid copying of this class
|
| + NFRule &operator=(const NFRule &other); // forbid copying of this class
|
| +};
|
| +
|
| +U_NAMESPACE_END
|
| +
|
| +/* U_HAVE_RBNF */
|
| +#endif
|
| +
|
| +// NFRULE_H
|
| +#endif
|
| +
|
|
|
| Property changes on: icu46/source/i18n/nfrule.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|