Home | History | Annotate | Download | only in i18n
      1 //  2016 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html
      3 /*
      4  * Copyright (C) 2015, International Business Machines
      5  * Corporation and others.  All Rights Reserved.
      6  *
      7  * file name: digitgrouping.cpp
      8  */
      9 
     10 #include "unicode/utypes.h"
     11 
     12 #include "digitgrouping.h"
     13 #include "smallintformatter.h"
     14 
     15 U_NAMESPACE_BEGIN
     16 
     17 UBool DigitGrouping::isSeparatorAt(
     18         int32_t digitsLeftOfDecimal, int32_t digitPos) const {
     19     if (!isGroupingEnabled(digitsLeftOfDecimal) || digitPos < fGrouping) {
     20         return FALSE;
     21     }
     22     return ((digitPos - fGrouping) % getGrouping2() == 0);
     23 }
     24 
     25 int32_t DigitGrouping::getSeparatorCount(int32_t digitsLeftOfDecimal) const {
     26     if (!isGroupingEnabled(digitsLeftOfDecimal)) {
     27         return 0;
     28     }
     29     return (digitsLeftOfDecimal - 1 - fGrouping) / getGrouping2() + 1;
     30 }
     31 
     32 UBool DigitGrouping::isGroupingEnabled(int32_t digitsLeftOfDecimal) const {
     33     return (isGroupingUsed()
     34             && digitsLeftOfDecimal >= fGrouping + getMinGrouping());
     35 }
     36 
     37 UBool DigitGrouping::isNoGrouping(
     38         int32_t positiveValue, const IntDigitCountRange &range) const {
     39     return getSeparatorCount(
     40             SmallIntFormatter::estimateDigitCount(positiveValue, range)) == 0;
     41 }
     42 
     43 int32_t DigitGrouping::getGrouping2() const {
     44     return (fGrouping2 > 0 ? fGrouping2 : fGrouping);
     45 }
     46 
     47 int32_t DigitGrouping::getMinGrouping() const {
     48     return (fMinGrouping > 0 ? fMinGrouping : 1);
     49 }
     50 
     51 void
     52 DigitGrouping::clear() {
     53     fMinGrouping = 0;
     54     fGrouping = 0;
     55     fGrouping2 = 0;
     56 }
     57 
     58 U_NAMESPACE_END
     59 
     60