2017-01-20 00:20:31 +00:00
|
|
|
// © 2016 and later: Unicode, Inc. and others.
|
2016-06-15 18:58:17 +00:00
|
|
|
// License & terms of use: http://www.unicode.org/copyright.html
|
2015-08-25 23:31:01 +00:00
|
|
|
/*
|
|
|
|
*******************************************************************************
|
2016-05-31 21:45:07 +00:00
|
|
|
* Copyright (C) 2015, International Business Machines
|
|
|
|
* Corporation and others. All Rights Reserved.
|
2015-08-25 23:31:01 +00:00
|
|
|
*******************************************************************************
|
|
|
|
* 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__
|