You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.4 KiB

/*
* 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