]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/digitinterval.cpp
ICU-57131.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / digitinterval.cpp
diff --git a/icuSources/i18n/digitinterval.cpp b/icuSources/i18n/digitinterval.cpp
new file mode 100644 (file)
index 0000000..e909816
--- /dev/null
@@ -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
+