Index: source/i18n/smallintformatter.h |
diff --git a/source/i18n/smallintformatter.h b/source/i18n/smallintformatter.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..71a781da2b642b1f4ca9d1767f2b635db92e0405 |
--- /dev/null |
+++ b/source/i18n/smallintformatter.h |
@@ -0,0 +1,88 @@ |
+/* |
+******************************************************************************* |
+* Copyright (C) 2015, International Business Machines |
+* Corporation and others. All Rights Reserved. |
+******************************************************************************* |
+* smallintformatter.h |
+* |
+* created on: 2015jan06 |
+* created by: Travis Keep |
+*/ |
+ |
+#ifndef __SMALLINTFORMATTER_H__ |
+#define __SMALLINTFORMATTER_H__ |
+ |
+#include "unicode/uobject.h" |
+#include "unicode/utypes.h" |
+ |
+U_NAMESPACE_BEGIN |
+ |
+class UnicodeString; |
+ |
+/** |
+ * A representation an acceptable range of digit counts for integers. |
+ */ |
+class U_I18N_API IntDigitCountRange : public UMemory { |
+public: |
+ /** |
+ * No constraints: 0 up to INT32_MAX |
+ */ |
+ IntDigitCountRange() : fMin(0), fMax(INT32_MAX) { } |
+ IntDigitCountRange(int32_t min, int32_t max); |
+ int32_t pin(int32_t digitCount) const; |
+ int32_t getMax() const { return fMax; } |
+ int32_t getMin() const { return fMin; } |
+private: |
+ int32_t fMin; |
+ int32_t fMax; |
+}; |
+ |
+ |
+/** |
+ * A formatter for small, positive integers. |
+ */ |
+class U_I18N_API SmallIntFormatter : public UMemory { |
+public: |
+ /** |
+ * Estimates the actual digit count needed to format positiveValue |
+ * using the given range of digit counts. |
+ * Returns a value that is at least the actual digit count needed. |
+ * |
+ * @param positiveValue the value to format |
+ * @param range the acceptable range of digit counts. |
+ */ |
+ static int32_t estimateDigitCount( |
+ int32_t positiveValue, const IntDigitCountRange &range); |
+ |
+ /** |
+ * Returns TRUE if this class can format positiveValue using |
+ * the given range of digit counts. |
+ * |
+ * @param positiveValue the value to format |
+ * @param range the acceptable range of digit counts. |
+ */ |
+ static UBool canFormat( |
+ int32_t positiveValue, const IntDigitCountRange &range); |
+ |
+ /** |
+ * Formats positiveValue using the given range of digit counts. |
+ * Always uses standard digits '0' through '9'. Formatted value is |
+ * left padded with '0' as necessary to achieve minimum digit count. |
+ * Does not produce any grouping separators or trailing decimal point. |
+ * Calling format to format a value with a particular digit count range |
+ * when canFormat indicates that the same value and digit count range |
+ * cannot be formatted results in undefined behavior. |
+ * |
+ * @param positiveValue the value to format |
+ * @param range the acceptable range of digit counts. |
+ */ |
+ static UnicodeString &format( |
+ int32_t positiveValue, |
+ const IntDigitCountRange &range, |
+ UnicodeString &appendTo); |
+ |
+}; |
+ |
+U_NAMESPACE_END |
+ |
+#endif // __SMALLINTFORMATTER_H__ |