]> git.saurik.com Git - apple/icu.git/blame - icuSources/i18n/digitgrouping.cpp
ICU-57166.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / digitgrouping.cpp
CommitLineData
2ca993e8
A
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
13U_NAMESPACE_BEGIN
14
15UBool 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
23int32_t DigitGrouping::getSeparatorCount(int32_t digitsLeftOfDecimal) const {
24 if (!isGroupingEnabled(digitsLeftOfDecimal)) {
25 return 0;
26 }
27 return (digitsLeftOfDecimal - 1 - fGrouping) / getGrouping2() + 1;
28}
29
30UBool DigitGrouping::isGroupingEnabled(int32_t digitsLeftOfDecimal) const {
31 return (isGroupingUsed()
32 && digitsLeftOfDecimal >= fGrouping + getMinGrouping());
33}
34
35UBool DigitGrouping::isNoGrouping(
36 int32_t positiveValue, const IntDigitCountRange &range) const {
37 return getSeparatorCount(
38 SmallIntFormatter::estimateDigitCount(positiveValue, range)) == 0;
39}
40
41int32_t DigitGrouping::getGrouping2() const {
42 return (fGrouping2 > 0 ? fGrouping2 : fGrouping);
43}
44
45int32_t DigitGrouping::getMinGrouping() const {
46 return (fMinGrouping > 0 ? fMinGrouping : 1);
47}
48
49void
50DigitGrouping::clear() {
51 fMinGrouping = 0;
52 fGrouping = 0;
53 fGrouping2 = 0;
54}
55
56U_NAMESPACE_END
57