]>
Commit | Line | Data |
---|---|---|
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 | ||
20 | U_NAMESPACE_BEGIN | |
21 | ||
22 | class UnicodeString; | |
23 | ||
24 | /** | |
25 | * A representation an acceptable range of digit counts for integers. | |
26 | */ | |
27 | class U_I18N_API IntDigitCountRange : public UMemory { | |
28 | public: | |
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; } | |
37 | private: | |
38 | int32_t fMin; | |
39 | int32_t fMax; | |
40 | }; | |
41 | ||
42 | ||
43 | /** | |
44 | * A formatter for small, positive integers. | |
45 | */ | |
46 | class U_I18N_API SmallIntFormatter : public UMemory { | |
47 | public: | |
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 | ||
88 | U_NAMESPACE_END | |
89 | ||
90 | #endif // __SMALLINTFORMATTER_H__ |