Index: source/i18n/digitinterval.cpp |
diff --git a/source/i18n/digitinterval.cpp b/source/i18n/digitinterval.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e909816157107d3bc170f2390597ddcc91aa222f |
--- /dev/null |
+++ b/source/i18n/digitinterval.cpp |
@@ -0,0 +1,54 @@ |
+/* |
+ * 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 |
+ |