LCOV - code coverage report
Current view: top level - intl/icu/source/i18n - nfrule.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 5 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 5 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : // © 2016 and later: Unicode, Inc. and others.
       2             : // License & terms of use: http://www.unicode.org/copyright.html
       3             : /*
       4             : *******************************************************************************
       5             : * Copyright (C) 1997-2015, International Business Machines
       6             : * Corporation and others. All Rights Reserved.
       7             : *******************************************************************************
       8             : */
       9             : 
      10             : #ifndef NFRULE_H
      11             : #define NFRULE_H
      12             : 
      13             : #include "unicode/rbnf.h"
      14             : 
      15             : #if U_HAVE_RBNF
      16             : 
      17             : #include "unicode/utypes.h"
      18             : #include "unicode/uobject.h"
      19             : #include "unicode/unistr.h"
      20             : 
      21             : U_NAMESPACE_BEGIN
      22             : 
      23             : class FieldPosition;
      24             : class Formattable;
      25             : class NFRuleList;
      26             : class NFRuleSet;
      27             : class NFSubstitution;
      28             : class ParsePosition;
      29             : class PluralFormat;
      30             : class RuleBasedNumberFormat;
      31             : class UnicodeString;
      32             : 
      33             : class NFRule : public UMemory {
      34             : public:
      35             : 
      36             :     enum ERuleType {
      37             :         kNoBase = 0,
      38             :         kNegativeNumberRule = -1,
      39             :         kImproperFractionRule = -2,
      40             :         kProperFractionRule = -3,
      41             :         kMasterRule = -4,
      42             :         kInfinityRule = -5,
      43             :         kNaNRule = -6,
      44             :         kOtherRule = -7
      45             :     };
      46             : 
      47             :     static void makeRules(UnicodeString& definition,
      48             :                           NFRuleSet* ruleSet, 
      49             :                           const NFRule* predecessor, 
      50             :                           const RuleBasedNumberFormat* rbnf, 
      51             :                           NFRuleList& ruleList,
      52             :                           UErrorCode& status);
      53             : 
      54             :     NFRule(const RuleBasedNumberFormat* rbnf, const UnicodeString &ruleText, UErrorCode &status);
      55             :     ~NFRule();
      56             : 
      57             :     UBool operator==(const NFRule& rhs) const;
      58           0 :     UBool operator!=(const NFRule& rhs) const { return !operator==(rhs); }
      59             : 
      60           0 :     ERuleType getType() const { return (ERuleType)(baseValue <= kNoBase ? (ERuleType)baseValue : kOtherRule); }
      61           0 :     void setType(ERuleType ruleType) { baseValue = (int32_t)ruleType; }
      62             : 
      63           0 :     int64_t getBaseValue() const { return baseValue; }
      64             :     void setBaseValue(int64_t value, UErrorCode& status);
      65             : 
      66           0 :     UChar getDecimalPoint() const { return decimalPoint; }
      67             : 
      68             :     int64_t getDivisor() const;
      69             : 
      70             :     void doFormat(int64_t number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
      71             :     void doFormat(double  number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
      72             : 
      73             :     UBool doParse(const UnicodeString& text, 
      74             :                   ParsePosition& pos, 
      75             :                   UBool isFractional, 
      76             :                   double upperBound,
      77             :                   Formattable& result) const;
      78             : 
      79             :     UBool shouldRollBack(int64_t number) const;
      80             : 
      81             :     void _appendRuleText(UnicodeString& result) const;
      82             : 
      83             :     int32_t findTextLenient(const UnicodeString& str, const UnicodeString& key, 
      84             :                      int32_t startingAt, int32_t* resultCount) const;
      85             : 
      86             :     void setDecimalFormatSymbols(const DecimalFormatSymbols &newSymbols, UErrorCode& status);
      87             : 
      88             : private:
      89             :     void parseRuleDescriptor(UnicodeString& descriptor, UErrorCode& status);
      90             :     void extractSubstitutions(const NFRuleSet* ruleSet, const UnicodeString &ruleText, const NFRule* predecessor, UErrorCode& status);
      91             :     NFSubstitution* extractSubstitution(const NFRuleSet* ruleSet, const NFRule* predecessor, UErrorCode& status);
      92             :     
      93             :     int16_t expectedExponent() const;
      94             :     int32_t indexOfAnyRulePrefix() const;
      95             :     double matchToDelimiter(const UnicodeString& text, int32_t startPos, double baseValue,
      96             :                             const UnicodeString& delimiter, ParsePosition& pp, const NFSubstitution* sub, 
      97             :                             double upperBound) const;
      98             :     void stripPrefix(UnicodeString& text, const UnicodeString& prefix, ParsePosition& pp) const;
      99             : 
     100             :     int32_t prefixLength(const UnicodeString& str, const UnicodeString& prefix, UErrorCode& status) const;
     101             :     UBool allIgnorable(const UnicodeString& str, UErrorCode& status) const;
     102             :     int32_t findText(const UnicodeString& str, const UnicodeString& key, 
     103             :                      int32_t startingAt, int32_t* resultCount) const;
     104             : 
     105             : private:
     106             :     int64_t baseValue;
     107             :     int32_t radix;
     108             :     int16_t exponent;
     109             :     UChar decimalPoint;
     110             :     UnicodeString ruleText;
     111             :     NFSubstitution* sub1;
     112             :     NFSubstitution* sub2;
     113             :     const RuleBasedNumberFormat* formatter;
     114             :     const PluralFormat* rulePatternFormat;
     115             : 
     116             :     NFRule(const NFRule &other); // forbid copying of this class
     117             :     NFRule &operator=(const NFRule &other); // forbid copying of this class
     118             : };
     119             : 
     120             : U_NAMESPACE_END
     121             : 
     122             : /* U_HAVE_RBNF */
     123             : #endif
     124             : 
     125             : // NFRULE_H
     126             : #endif
     127             : 

Generated by: LCOV version 1.13