LCOV - code coverage report
Current view: top level - intl/icu/source/i18n - digitgrouping.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 6 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 3 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) 2015, International Business Machines
       6             : * Corporation and others.  All Rights Reserved.
       7             : *******************************************************************************
       8             : * digitgrouping.h
       9             : *
      10             : * created on: 2015jan6
      11             : * created by: Travis Keep
      12             : */
      13             : 
      14             : #ifndef __DIGITGROUPING_H__
      15             : #define __DIGITGROUPING_H__
      16             : 
      17             : #include "unicode/uobject.h"
      18             : #include "unicode/utypes.h"
      19             : 
      20             : U_NAMESPACE_BEGIN
      21             : 
      22             : class IntDigitCountRange;
      23             : 
      24             : /**
      25             :  * The digit grouping policy.
      26             :  */
      27             : class U_I18N_API DigitGrouping : public UMemory {
      28             : public:
      29             :     /**
      30             :      * Default is no digit grouping.
      31             :      */
      32           0 :     DigitGrouping() : fGrouping(0), fGrouping2(0), fMinGrouping(0) { }
      33             : 
      34             :     /**
      35             :      * Returns TRUE if this object is equal to rhs.
      36             :      */
      37           0 :     UBool equals(const DigitGrouping &rhs) const {
      38           0 :         return ((fGrouping == rhs.fGrouping) && 
      39           0 :                 (fGrouping2 == rhs.fGrouping2) &&
      40           0 :                 (fMinGrouping == rhs.fMinGrouping));
      41             :     }
      42             : 
      43             :     /**
      44             :      * Returns true if a separator is needed after a particular digit.
      45             :      * @param digitsLeftOfDecimal the total count of digits left of the
      46             :      *  decimal.
      47             :      * @param digitPos 0 is the one's place; 1 is the 10's place; -1 is the
      48             :      *   1/10's place etc.
      49             :      */
      50             :     UBool isSeparatorAt(int32_t digitsLeftOfDecimal, int32_t digitPos) const;
      51             : 
      52             :     /**
      53             :      * Returns the total number of separators to be used to format a particular
      54             :      * number.
      55             :      * @param digitsLeftOfDecimal the total number of digits to the left of
      56             :      *   the decimal.
      57             :      */
      58             :     int32_t getSeparatorCount(int32_t digitsLeftOfDecimal) const;
      59             : 
      60             :     /**
      61             :      * Returns true if grouping is used FALSE otherwise. When
      62             :      * isGroupingUsed() returns FALSE; isSeparatorAt always returns FALSE
      63             :      * and getSeparatorCount always returns 0.
      64             :      */
      65           0 :     UBool isGroupingUsed() const { return fGrouping > 0; }
      66             : 
      67             :     /**
      68             :      * Returns TRUE if this instance would not add grouping separators
      69             :      * when formatting value using the given constraint on digit count.
      70             :      *
      71             :      * @param value the value to format.
      72             :      * @param range the minimum and maximum digits for formatting value.
      73             :      */
      74             :     UBool isNoGrouping(
      75             :             int32_t positiveValue, const IntDigitCountRange &range) const;
      76             : 
      77             :     /**
      78             :      * Clears this instance so that digit grouping is not in effect.
      79             :      */
      80             :     void clear();
      81             : 
      82             : public:
      83             : 
      84             :     /**
      85             :      * Primary grouping size. A value of 0, the default, or a negative
      86             :      * number causes isGroupingUsed() to return FALSE.
      87             :      */
      88             :     int32_t fGrouping;
      89             : 
      90             :     /**
      91             :      * Secondary grouping size. If > 0, this size is used instead of
      92             :      * 'fGrouping' for all but the group just to the left of the decimal
      93             :      * point. The default value of 0, or a negative value indicates that
      94             :      * there is no secondary grouping size.
      95             :      */
      96             :     int32_t fGrouping2;
      97             : 
      98             :     /**
      99             :      * If set (that is > 0), uses no grouping separators if fewer than
     100             :      * (fGrouping + fMinGrouping) digits appear left of the decimal place.
     101             :      * The default value for this field is 0.
     102             :      */
     103             :     int32_t fMinGrouping;
     104             : private:
     105             :     UBool isGroupingEnabled(int32_t digitsLeftOfDecimal) const;
     106             :     int32_t getGrouping2() const;
     107             :     int32_t getMinGrouping() const;
     108             : };
     109             : 
     110             : U_NAMESPACE_END
     111             : 
     112             : #endif  // __DIGITGROUPING_H__

Generated by: LCOV version 1.13