digitinterval.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright (C) 2016 and later: Unicode, Inc. and others.
  2. // License & terms of use: http://www.unicode.org/copyright.html
  3. /*
  4. * Copyright (C) 2015, International Business Machines
  5. * Corporation and others. All Rights Reserved.
  6. *
  7. * file name: digitinterval.cpp
  8. */
  9. #include "unicode/utypes.h"
  10. #include "digitinterval.h"
  11. U_NAMESPACE_BEGIN
  12. void DigitInterval::expandToContain(const DigitInterval &rhs) {
  13. if (fSmallestInclusive > rhs.fSmallestInclusive) {
  14. fSmallestInclusive = rhs.fSmallestInclusive;
  15. }
  16. if (fLargestExclusive < rhs.fLargestExclusive) {
  17. fLargestExclusive = rhs.fLargestExclusive;
  18. }
  19. }
  20. void DigitInterval::shrinkToFitWithin(const DigitInterval &rhs) {
  21. if (fSmallestInclusive < rhs.fSmallestInclusive) {
  22. fSmallestInclusive = rhs.fSmallestInclusive;
  23. }
  24. if (fLargestExclusive > rhs.fLargestExclusive) {
  25. fLargestExclusive = rhs.fLargestExclusive;
  26. }
  27. }
  28. void DigitInterval::setIntDigitCount(int32_t count) {
  29. fLargestExclusive = count < 0 ? INT32_MAX : count;
  30. }
  31. void DigitInterval::setFracDigitCount(int32_t count) {
  32. fSmallestInclusive = count < 0 ? INT32_MIN : -count;
  33. }
  34. void DigitInterval::expandToContainDigit(int32_t digitExponent) {
  35. if (fLargestExclusive <= digitExponent) {
  36. fLargestExclusive = digitExponent + 1;
  37. } else if (fSmallestInclusive > digitExponent) {
  38. fSmallestInclusive = digitExponent;
  39. }
  40. }
  41. UBool DigitInterval::contains(int32_t x) const {
  42. return (x < fLargestExclusive && x >= fSmallestInclusive);
  43. }
  44. U_NAMESPACE_END