1 /* 2 * Copyright (C) 2015, International Business Machines 3 * Corporation and others. All Rights Reserved. 4 * 5 * file name: digitgrouping.cpp 6 */ 7 8 #include "unicode/utypes.h" 9 10 #include "digitgrouping.h" 11 #include "smallintformatter.h" 12 13 U_NAMESPACE_BEGIN 14 isSeparatorAt(int32_t digitsLeftOfDecimal,int32_t digitPos) const15UBool DigitGrouping::isSeparatorAt( 16 int32_t digitsLeftOfDecimal, int32_t digitPos) const { 17 if (!isGroupingEnabled(digitsLeftOfDecimal) || digitPos < fGrouping) { 18 return FALSE; 19 } 20 return ((digitPos - fGrouping) % getGrouping2() == 0); 21 } 22 getSeparatorCount(int32_t digitsLeftOfDecimal) const23int32_t DigitGrouping::getSeparatorCount(int32_t digitsLeftOfDecimal) const { 24 if (!isGroupingEnabled(digitsLeftOfDecimal)) { 25 return 0; 26 } 27 return (digitsLeftOfDecimal - 1 - fGrouping) / getGrouping2() + 1; 28 } 29 isGroupingEnabled(int32_t digitsLeftOfDecimal) const30UBool DigitGrouping::isGroupingEnabled(int32_t digitsLeftOfDecimal) const { 31 return (isGroupingUsed() 32 && digitsLeftOfDecimal >= fGrouping + getMinGrouping()); 33 } 34 isNoGrouping(int32_t positiveValue,const IntDigitCountRange & range) const35UBool DigitGrouping::isNoGrouping( 36 int32_t positiveValue, const IntDigitCountRange &range) const { 37 return getSeparatorCount( 38 SmallIntFormatter::estimateDigitCount(positiveValue, range)) == 0; 39 } 40 getGrouping2() const41int32_t DigitGrouping::getGrouping2() const { 42 return (fGrouping2 > 0 ? fGrouping2 : fGrouping); 43 } 44 getMinGrouping() const45int32_t DigitGrouping::getMinGrouping() const { 46 return (fMinGrouping > 0 ? fMinGrouping : 1); 47 } 48 49 void clear()50DigitGrouping::clear() { 51 fMinGrouping = 0; 52 fGrouping = 0; 53 fGrouping2 = 0; 54 } 55 56 U_NAMESPACE_END 57 58