ICU 78.2 78.2
Loading...
Searching...
No Matches
formattednumber.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 __FORMATTEDNUMBER_H__
5#define __FORMATTEDNUMBER_H__
6
7#include "unicode/utypes.h"
8
9#if U_SHOW_CPLUSPLUS_API
10
11#if !UCONFIG_NO_FORMATTING
12
13#include "unicode/uobject.h"
15#include "unicode/measunit.h"
17
24
25U_NAMESPACE_BEGIN
26
27class FieldPositionIteratorHandler;
28class SimpleDateFormat;
29
30namespace number { // icu::number
31
32namespace impl {
33class DecimalQuantity;
34class UFormattedNumberData;
35struct UFormattedNumberImpl;
36} // icu::number::impl
37
38
39
49 public:
50
56 : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
57
63
68 virtual ~FormattedNumber() override;
69
72
75
81
82 // Copybrief: this method is older than the parent method
90 UnicodeString toString(UErrorCode& status) const override;
91
92 // Copydoc: this method is new in ICU 64
94 UnicodeString toTempString(UErrorCode& status) const override;
95
96 // Copybrief: this method is older than the parent method
104 Appendable &appendTo(Appendable& appendable, UErrorCode& status) const override;
105
106 // Copydoc: this method is new in ICU 64
108 UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const override;
109
128 template<typename StringClass>
129 inline StringClass toDecimalNumber(UErrorCode& status) const;
130
143
152
153#ifndef U_HIDE_INTERNAL_API
154
159 void getDecimalQuantity(impl::DecimalQuantity& output, UErrorCode& status) const;
160
165 void getAllFieldPositionsImpl(FieldPositionIteratorHandler& fpih, UErrorCode& status) const;
166
167#endif /* U_HIDE_INTERNAL_API */
168
169 private:
170 // Can't use LocalPointer because UFormattedNumberData is forward-declared
171 impl::UFormattedNumberData *fData;
172
173 // Error code for the terminal methods
174 UErrorCode fErrorCode;
175
179 explicit FormattedNumber(impl::UFormattedNumberData *results)
180 : fData(results), fErrorCode(U_ZERO_ERROR) {}
181
182 explicit FormattedNumber(UErrorCode errorCode)
183 : fData(nullptr), fErrorCode(errorCode) {}
184
185 void toDecimalNumber(ByteSink& sink, UErrorCode& status) const;
186
187 // To give LocalizedNumberFormatter format methods access to this class's constructor:
188 friend class LocalizedNumberFormatter;
189 friend class SimpleNumberFormatter;
190
191 // To give C API access to internals
192 friend struct impl::UFormattedNumberImpl;
193
194 // To give access to the data pointer for non-heap allocation
195 friend class icu::SimpleDateFormat;
196};
197
198template<typename StringClass>
200 StringClass result;
201 StringByteSink<StringClass> sink(&result);
202 toDecimalNumber(sink, status);
203 return result;
204}
205
206} // namespace number
207U_NAMESPACE_END
208
209#endif /* #if !UCONFIG_NO_FORMATTING */
210
211#endif /* U_SHOW_CPLUSPLUS_API */
212
213#endif // __FORMATTEDNUMBER_H__
214
A ByteSink can be filled with bytes.
Definition bytestream.h:55
Represents a span of a string containing a given field.
An abstract formatted value: a string with associated field attributes.
A unit such as length, mass, volume, currency, etc.
Definition measunit.h:405
SimpleDateFormat is a concrete class for formatting and parsing dates in a language-independent manne...
Definition smpdtfmt.h:385
Implementation of ByteSink that writes to a "string".
Definition bytestream.h:291
UMemory is the common ICU base class.
Definition uobject.h:115
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition unistr.h:303
The result of a number formatting operation.
void getDecimalQuantity(impl::DecimalQuantity &output, UErrorCode &status) const
Gets the raw DecimalQuantity for plural rule selection.
UDisplayOptionsNounClass getNounClass(UErrorCode &status) const
Gets the noun class of the formatted output.
FormattedNumber & operator=(const FormattedNumber &)=delete
Copying not supported; use move assignment instead.
FormattedNumber(const FormattedNumber &)=delete
Copying not supported; use move constructor instead.
MeasureUnit getOutputUnit(UErrorCode &status) const
Gets the resolved output unit.
FormattedNumber()
Default constructor; makes an empty FormattedNumber.
void getAllFieldPositionsImpl(FieldPositionIteratorHandler &fpih, UErrorCode &status) const
Populates the mutable builder type FieldPositionIteratorHandler.
Appendable & appendTo(Appendable &appendable, UErrorCode &status) const override
Appends the formatted string to an Appendable.
StringClass toDecimalNumber(UErrorCode &status) const
Export the formatted number as a "numeric string" conforming to the syntax defined in the Decimal Ari...
virtual ~FormattedNumber() override
Destruct an instance of FormattedNumber.
UnicodeString toString(UErrorCode &status) const override
Returns the formatted string as a self-contained UnicodeString.
FormattedNumber & operator=(FormattedNumber &&src) noexcept
Move assignment: Leaves the source FormattedNumber in an undefined state.
FormattedNumber(FormattedNumber &&src) noexcept
Move constructor: Leaves the source FormattedNumber in an undefined state.
UBool nextPosition(ConstrainedFieldPosition &cfpos, UErrorCode &status) const override
Iterates over field positions in the FormattedValue.
UnicodeString toTempString(UErrorCode &status) const override
Returns the formatted string as a read-only alias to memory owned by the FormattedValue.
C++ API: Abstract operations for localized strings.
C++ API: A unit for measuring a quantity.
C API: Display options (enum types, values, helper functions).
UDisplayOptionsNounClass
Represents all the grammatical noun classes that are supported by CLDR.
int8_t UBool
The ICU boolean type, a signed-byte integer.
Definition umachine.h:269
C++ API: Common ICU base class UObject.
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition utypes.h:509
@ U_INVALID_STATE_ERROR
Requested operation can not be completed with ICU in its current state.
Definition utypes.h:573
@ U_ZERO_ERROR
No error, no warning.
Definition utypes.h:544
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition utypes.h:316