]> git.saurik.com Git - apple/icu.git/blob - icuSources/i18n/digitinterval.cpp
ICU-57149.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / digitinterval.cpp
1 /*
2 * Copyright (C) 2015, International Business Machines
3 * Corporation and others. All Rights Reserved.
4 *
5 * file name: digitinterval.cpp
6 */
7
8 #include "unicode/utypes.h"
9
10 #include "digitinterval.h"
11
12 U_NAMESPACE_BEGIN
13
14 void DigitInterval::expandToContain(const DigitInterval &rhs) {
15 if (fSmallestInclusive > rhs.fSmallestInclusive) {
16 fSmallestInclusive = rhs.fSmallestInclusive;
17 }
18 if (fLargestExclusive < rhs.fLargestExclusive) {
19 fLargestExclusive = rhs.fLargestExclusive;
20 }
21 }
22
23 void DigitInterval::shrinkToFitWithin(const DigitInterval &rhs) {
24 if (fSmallestInclusive < rhs.fSmallestInclusive) {
25 fSmallestInclusive = rhs.fSmallestInclusive;
26 }
27 if (fLargestExclusive > rhs.fLargestExclusive) {
28 fLargestExclusive = rhs.fLargestExclusive;
29 }
30 }
31
32 void DigitInterval::setIntDigitCount(int32_t count) {
33 fLargestExclusive = count < 0 ? INT32_MAX : count;
34 }
35
36 void DigitInterval::setFracDigitCount(int32_t count) {
37 fSmallestInclusive = count < 0 ? INT32_MIN : -count;
38 }
39
40 void DigitInterval::expandToContainDigit(int32_t digitExponent) {
41 if (fLargestExclusive <= digitExponent) {
42 fLargestExclusive = digitExponent + 1;
43 } else if (fSmallestInclusive > digitExponent) {
44 fSmallestInclusive = digitExponent;
45 }
46 }
47
48 UBool DigitInterval::contains(int32_t x) const {
49 return (x < fLargestExclusive && x >= fSmallestInclusive);
50 }
51
52
53 U_NAMESPACE_END
54