| /* |
| * Copyright (C) 2015, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| * |
| * file name: digitinterval.cpp |
| */ |
| |
| #include "unicode/utypes.h" |
| |
| #include "digitinterval.h" |
| |
| U_NAMESPACE_BEGIN |
| |
| void DigitInterval::expandToContain(const DigitInterval &rhs) { |
| if (fSmallestInclusive > rhs.fSmallestInclusive) { |
| fSmallestInclusive = rhs.fSmallestInclusive; |
| } |
| if (fLargestExclusive < rhs.fLargestExclusive) { |
| fLargestExclusive = rhs.fLargestExclusive; |
| } |
| } |
| |
| void DigitInterval::shrinkToFitWithin(const DigitInterval &rhs) { |
| if (fSmallestInclusive < rhs.fSmallestInclusive) { |
| fSmallestInclusive = rhs.fSmallestInclusive; |
| } |
| if (fLargestExclusive > rhs.fLargestExclusive) { |
| fLargestExclusive = rhs.fLargestExclusive; |
| } |
| } |
| |
| void DigitInterval::setIntDigitCount(int32_t count) { |
| fLargestExclusive = count < 0 ? INT32_MAX : count; |
| } |
| |
| void DigitInterval::setFracDigitCount(int32_t count) { |
| fSmallestInclusive = count < 0 ? INT32_MIN : -count; |
| } |
| |
| void DigitInterval::expandToContainDigit(int32_t digitExponent) { |
| if (fLargestExclusive <= digitExponent) { |
| fLargestExclusive = digitExponent + 1; |
| } else if (fSmallestInclusive > digitExponent) { |
| fSmallestInclusive = digitExponent; |
| } |
| } |
| |
| UBool DigitInterval::contains(int32_t x) const { |
| return (x < fLargestExclusive && x >= fSmallestInclusive); |
| } |
| |
| |
| U_NAMESPACE_END |
| |