ICU 66.1 66.1
formattedvalue.h
Go to the documentation of this file.
1// © 2018 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3
4#ifndef __FORMATTEDVALUE_H__
5#define __FORMATTEDVALUE_H__
6
7#include "unicode/utypes.h"
8
9#if U_SHOW_CPLUSPLUS_API
10
11#if !UCONFIG_NO_FORMATTING
12
13#include "unicode/appendable.h"
14#include "unicode/fpositer.h"
15#include "unicode/unistr.h"
17
18U_NAMESPACE_BEGIN
19
29// The following cannot have #ifndef U_HIDE_DRAFT_API because
30// class FormattedValue depends on it, and FormattedValue cannot be
31// hidden becauseclass FormattedNumber (stable ICU 60) depends on it.
32#ifndef U_FORCE_HIDE_DRAFT_API
47 public:
48
57
60
61#ifndef U_HIDE_DRAFT_API
70 void reset();
71
94 void constrainCategory(int32_t category);
95
119 void constrainField(int32_t category, int32_t field);
120
130 inline int32_t getCategory() const {
131 return fCategory;
132 }
133
143 inline int32_t getField() const {
144 return fField;
145 }
146
155 inline int32_t getStart() const {
156 return fStart;
157 }
158
167 inline int32_t getLimit() const {
168 return fLimit;
169 }
170
175
186 inline int64_t getInt64IterationContext() const {
187 return fContext;
188 }
189
198 void setInt64IterationContext(int64_t context);
199
210 UBool matchesField(int32_t category, int32_t field) const;
211
227 int32_t category,
228 int32_t field,
229 int32_t start,
230 int32_t limit);
231#endif /* U_HIDE_DRAFT_API */
232
233 private:
234 int64_t fContext = 0LL;
235 int32_t fField = 0;
236 int32_t fStart = 0;
237 int32_t fLimit = 0;
238#ifndef U_HIDE_DRAFT_API
239 int32_t fCategory = UFIELD_CATEGORY_UNDEFINED;
240#else /* U_HIDE_DRAFT_API */
241 int32_t fCategory = 0;
242#endif /* U_HIDE_DRAFT_API */
243 int8_t fConstraint = 0;
244};
245
246// The following cannot have #ifndef U_HIDE_DRAFT_API because
247// class FormattedNumber (stable ICU 60) depends on it.
254class U_I18N_API FormattedValue /* not : public UObject because this is an interface/mixin class */ {
255 public:
258
269 virtual UnicodeString toString(UErrorCode& status) const = 0;
270
285 virtual UnicodeString toTempString(UErrorCode& status) const = 0;
286
298 virtual Appendable& appendTo(Appendable& appendable, UErrorCode& status) const = 0;
299
322 virtual UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const = 0;
323};
324#endif // U_FORCE_HIDE_DRAFT_API
325
326U_NAMESPACE_END
327
328#endif /* #if !UCONFIG_NO_FORMATTING */
329
330#endif /* U_SHOW_CPLUSPLUS_API */
331
332#endif // __FORMATTEDVALUE_H__
C++ API: Appendable class: Sink for Unicode code points and 16-bit code units (char16_ts).
Base class for objects to which Unicode characters and strings can be appended.
Definition: appendable.h:54
Represents a span of a string containing a given field.
void reset()
Resets this ConstrainedFieldPosition to its initial state, as if it were newly created:
void constrainField(int32_t category, int32_t field)
Sets a constraint on the category and field.
void setState(int32_t category, int32_t field, int32_t start, int32_t limit)
Sets new values for the primary public getters.
int32_t getStart() const
Gets the INCLUSIVE start index for the current position.
void constrainCategory(int32_t category)
Sets a constraint on the field category.
int32_t getCategory() const
Gets the field category for the current position.
int32_t getLimit() const
Gets the EXCLUSIVE end index stored for the current position.
ConstrainedFieldPosition()
Initializes a ConstrainedFieldPosition.
void setInt64IterationContext(int64_t context)
Sets an int64 that FormattedValue implementations may use for storage.
int64_t getInt64IterationContext() const
Gets an int64 that FormattedValue implementations may use for storage.
int32_t getField() const
Gets the field for the current position.
UBool matchesField(int32_t category, int32_t field) const
Determines whether a given field should be included given the constraints.
An abstract formatted value: a string with associated field attributes.
virtual UBool nextPosition(ConstrainedFieldPosition &cfpos, UErrorCode &status) const =0
Iterates over field positions in the FormattedValue.
virtual Appendable & appendTo(Appendable &appendable, UErrorCode &status) const =0
Appends the formatted string to an Appendable.
virtual UnicodeString toString(UErrorCode &status) const =0
Returns the formatted string as a self-contained UnicodeString.
virtual UnicodeString toTempString(UErrorCode &status) const =0
Returns the formatted string as a read-only alias to memory owned by the FormattedValue.
virtual ~FormattedValue()
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:295
C++ API: FieldPosition Iterator.
C API: Abstract operations for localized strings.
@ UFIELD_CATEGORY_UNDEFINED
For an undefined field category.
int8_t UBool
The ICU boolean type.
Definition: umachine.h:261
C++ API: Unicode String.
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