ICU 75.1 75.1
Loading...
Searching...
No Matches
simplenumberformatter.h
Go to the documentation of this file.
1// © 2022 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3
4#ifndef __SIMPLENUMBERFORMATTERH__
5#define __SIMPLENUMBERFORMATTERH__
6
7#include "unicode/utypes.h"
8
9#if U_SHOW_CPLUSPLUS_API
10
11#if !UCONFIG_NO_FORMATTING
12
13#include "unicode/dcfmtsym.h"
16
31U_NAMESPACE_BEGIN
32
33/* forward declaration */
34class SimpleDateFormat;
35
36namespace number { // icu::number
37
38
39namespace impl {
40class UFormattedNumberData;
41struct SimpleMicroProps;
42class AdoptingSignumModifierStore;
43} // icu::number::impl
44
45
54 public:
61
70
80
81#ifndef U_HIDE_DRAFT_API
88#endif // U_HIDE_DRAFT_API
89
90#ifndef U_HIDE_DEPRECATED_API
98#endif // U_HIDE_DEPRECATED_API
99
106
113
124
132 SimpleNumber() = default;
133
140 cleanup();
141 }
142
149 fData = other.fData;
150 fSign = other.fSign;
151 other.fData = nullptr;
152 }
153
160 cleanup();
161 fData = other.fData;
162 fSign = other.fSign;
163 other.fData = nullptr;
164 return *this;
165 }
166
167 private:
168 SimpleNumber(impl::UFormattedNumberData* data, UErrorCode& status);
169 SimpleNumber(const SimpleNumber&) = delete;
170 SimpleNumber& operator=(const SimpleNumber&) = delete;
171
172 void cleanup();
173
174 impl::UFormattedNumberData* fData = nullptr;
176
177 friend class SimpleNumberFormatter;
178
179 // Uses the private constructor to avoid a heap allocation
180 friend class icu::SimpleDateFormat;
181};
182
183
195 public:
202 const icu::Locale &locale,
204
211 const icu::Locale &locale,
214
224 const icu::Locale &locale,
225 const DecimalFormatSymbols &symbols,
228
238
247 return format(SimpleNumber::forInt64(value, status), status);
248 }
249
250#ifndef U_HIDE_INTERNAL_API
255 void formatImpl(impl::UFormattedNumberData* data, USimpleNumberSign sign, UErrorCode& status) const;
256#endif // U_HIDE_INTERNAL_API
257
264 cleanup();
265 }
266
273
280 fGroupingStrategy = other.fGroupingStrategy;
281 fOwnedSymbols = other.fOwnedSymbols;
282 fMicros = other.fMicros;
283 fPatternModifier = other.fPatternModifier;
284 other.fOwnedSymbols = nullptr;
285 other.fMicros = nullptr;
286 other.fPatternModifier = nullptr;
287 }
288
295 cleanup();
296 fGroupingStrategy = other.fGroupingStrategy;
297 fOwnedSymbols = other.fOwnedSymbols;
298 fMicros = other.fMicros;
299 fPatternModifier = other.fPatternModifier;
300 other.fOwnedSymbols = nullptr;
301 other.fMicros = nullptr;
302 other.fPatternModifier = nullptr;
303 return *this;
304 }
305
306 private:
307 void initialize(
308 const icu::Locale &locale,
309 const DecimalFormatSymbols &symbols,
312
313 void cleanup();
314
316
317 SimpleNumberFormatter& operator=(const SimpleNumberFormatter&) = delete;
318
320
321 // Owned Pointers:
322 DecimalFormatSymbols* fOwnedSymbols = nullptr; // can be empty
323 impl::SimpleMicroProps* fMicros = nullptr;
324 impl::AdoptingSignumModifierStore* fPatternModifier = nullptr;
325};
326
327
328} // namespace number
329U_NAMESPACE_END
330
331#endif /* #if !UCONFIG_NO_FORMATTING */
332
333#endif /* U_SHOW_CPLUSPLUS_API */
334
335#endif // __SIMPLENUMBERFORMATTERH__
336
This class represents the set of symbols needed by DecimalFormat to format numbers.
Definition dcfmtsym.h:86
"Smart pointer" base class; do not use directly: use LocalPointer etc.
A Locale object represents a specific geographical, political, or cultural region.
Definition locid.h:195
SimpleDateFormat is a concrete class for formatting and parsing dates in a language-independent manne...
Definition smpdtfmt.h:385
UMemory is the common ICU base class.
Definition uobject.h:115
The result of a number formatting operation.
A special NumberFormatter focused on smaller binary size and memory use.
FormattedNumber formatInt64(int64_t value, UErrorCode &status) const
Formats an integer using this SimpleNumberFormatter.
SimpleNumberFormatter(SimpleNumberFormatter &&other) noexcept
SimpleNumberFormatter: Move constructor.
SimpleNumberFormatter & operator=(SimpleNumberFormatter &&other) noexcept
SimpleNumberFormatter: Move assignment.
~SimpleNumberFormatter()
Destruct this SimpleNumberFormatter, cleaning up any memory it might own.
static SimpleNumberFormatter forLocaleAndGroupingStrategy(const icu::Locale &locale, UNumberGroupingStrategy groupingStrategy, UErrorCode &status)
Creates a new SimpleNumberFormatter, overriding the grouping strategy.
void formatImpl(impl::UFormattedNumberData *data, USimpleNumberSign sign, UErrorCode &status) const
Run the formatter with the internal types.
FormattedNumber format(SimpleNumber value, UErrorCode &status) const
Formats a value using this SimpleNumberFormatter.
SimpleNumberFormatter()=default
Creates a shell, initialized but non-functional SimpleNumberFormatter.
static SimpleNumberFormatter forLocale(const icu::Locale &locale, UErrorCode &status)
Creates a new SimpleNumberFormatter with all locale defaults.
static SimpleNumberFormatter forLocaleAndSymbolsAndGroupingStrategy(const icu::Locale &locale, const DecimalFormatSymbols &symbols, UNumberGroupingStrategy groupingStrategy, UErrorCode &status)
Creates a new SimpleNumberFormatter, overriding the grouping strategy and symbols.
An input type for SimpleNumberFormatter.
void setSign(USimpleNumberSign sign, UErrorCode &status)
Sets the sign of the number: an explicit plus sign, explicit minus sign, or no sign.
SimpleNumber & operator=(SimpleNumber &&other) noexcept
SimpleNumber move assignment.
SimpleNumber(SimpleNumber &&other) noexcept
SimpleNumber move constructor.
void setMinimumIntegerDigits(uint32_t minimumIntegerDigits, UErrorCode &status)
Pads the beginning of the number with zeros up to the given minimum number of integer digits.
void setMaximumIntegerDigits(uint32_t maximumIntegerDigits, UErrorCode &status)
Sets the number of integer digits to the given amount, truncating if necessary.
void setMinimumFractionDigits(uint32_t minimumFractionDigits, UErrorCode &status)
Pads the end of the number with zeros up to the given minimum number of fraction digits.
void truncateStart(uint32_t maximumIntegerDigits, UErrorCode &status)
Alias for setMaximumIntegerDigits.
~SimpleNumber()
Destruct this SimpleNumber, cleaning up any memory it might own.
void multiplyByPowerOfTen(int32_t power, UErrorCode &status)
Changes the value of the SimpleNumber by a power of 10.
SimpleNumber()=default
Creates a new, empty SimpleNumber that does not contain a value.
static SimpleNumber forInt64(int64_t value, UErrorCode &status)
Creates a SimpleNumber for an integer.
void roundTo(int32_t power, UNumberFormatRoundingMode roundingMode, UErrorCode &status)
Rounds the value currently stored in the SimpleNumber to the given power of 10, which can be before o...
C++ API: Symbols for formatting numbers.
C API: Formatted number result from various number formatting functions.
UNumberFormatRoundingMode
The possible number format rounding modes.
UNumberGroupingStrategy
An enum declaring the strategy for when and how to display grouping separators (i....
@ UNUM_GROUPING_AUTO
Display grouping using the default strategy for all locales.
C API: Simple number formatting focused on low memory and code size.
USimpleNumberSign
An explicit sign option for a SimpleNumber.
@ UNUM_SIMPLE_NUMBER_NO_SIGN
Render no sign.
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition utypes.h:415
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition utypes.h:301