]> git.saurik.com Git - apple/icu.git/blame - icuSources/i18n/smallintformatter.h
ICU-62107.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / smallintformatter.h
CommitLineData
f3c0d7a5
A
1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
2ca993e8
A
3/*
4*******************************************************************************
5* Copyright (C) 2015, International Business Machines
6* Corporation and others. All Rights Reserved.
7*******************************************************************************
8* smallintformatter.h
9*
10* created on: 2015jan06
11* created by: Travis Keep
12*/
13
14#ifndef __SMALLINTFORMATTER_H__
15#define __SMALLINTFORMATTER_H__
16
17#include "unicode/uobject.h"
18#include "unicode/utypes.h"
19
20U_NAMESPACE_BEGIN
21
22class UnicodeString;
23
24/**
25 * A representation an acceptable range of digit counts for integers.
26 */
27class U_I18N_API IntDigitCountRange : public UMemory {
28public:
29 /**
30 * No constraints: 0 up to INT32_MAX
31 */
32 IntDigitCountRange() : fMin(0), fMax(INT32_MAX) { }
33 IntDigitCountRange(int32_t min, int32_t max);
34 int32_t pin(int32_t digitCount) const;
35 int32_t getMax() const { return fMax; }
36 int32_t getMin() const { return fMin; }
37private:
38 int32_t fMin;
39 int32_t fMax;
40};
41
42
43/**
44 * A formatter for small, positive integers.
45 */
46class U_I18N_API SmallIntFormatter : public UMemory {
47public:
48 /**
49 * Estimates the actual digit count needed to format positiveValue
50 * using the given range of digit counts.
51 * Returns a value that is at least the actual digit count needed.
52 *
53 * @param positiveValue the value to format
54 * @param range the acceptable range of digit counts.
55 */
56 static int32_t estimateDigitCount(
57 int32_t positiveValue, const IntDigitCountRange &range);
58
59 /**
60 * Returns TRUE if this class can format positiveValue using
61 * the given range of digit counts.
62 *
63 * @param positiveValue the value to format
64 * @param range the acceptable range of digit counts.
65 */
66 static UBool canFormat(
67 int32_t positiveValue, const IntDigitCountRange &range);
68
69 /**
70 * Formats positiveValue using the given range of digit counts.
71 * Always uses standard digits '0' through '9'. Formatted value is
72 * left padded with '0' as necessary to achieve minimum digit count.
73 * Does not produce any grouping separators or trailing decimal point.
74 * Calling format to format a value with a particular digit count range
75 * when canFormat indicates that the same value and digit count range
76 * cannot be formatted results in undefined behavior.
77 *
78 * @param positiveValue the value to format
79 * @param range the acceptable range of digit counts.
80 */
81 static UnicodeString &format(
82 int32_t positiveValue,
83 const IntDigitCountRange &range,
84 UnicodeString &appendTo);
85
86};
87
88U_NAMESPACE_END
89
90#endif // __SMALLINTFORMATTER_H__