ICU 75.1 75.1
Loading...
Searching...
No Matches
simpleformatter.h
Go to the documentation of this file.
1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3/*
4******************************************************************************
5* Copyright (C) 2014-2016, International Business Machines
6* Corporation and others. All Rights Reserved.
7******************************************************************************
8* simpleformatter.h
9*/
10
11#ifndef __SIMPLEFORMATTER_H__
12#define __SIMPLEFORMATTER_H__
13
19#include "unicode/utypes.h"
20
21#if U_SHOW_CPLUSPLUS_API
22
23#include "unicode/unistr.h"
24
25U_NAMESPACE_BEGIN
26
27// Forward declaration:
28namespace number::impl {
29class SimpleModifier;
30}
31
61public:
66 SimpleFormatter() : compiledPattern((char16_t)0) {}
67
77 SimpleFormatter(const UnicodeString& pattern, UErrorCode &errorCode) {
78 applyPattern(pattern, errorCode);
79 }
80
96 UErrorCode &errorCode) {
97 applyPatternMinMaxArguments(pattern, min, max, errorCode);
98 }
99
105 : compiledPattern(other.compiledPattern) {}
106
112
118
129 UBool applyPattern(const UnicodeString &pattern, UErrorCode &errorCode) {
130 return applyPatternMinMaxArguments(pattern, 0, INT32_MAX, errorCode);
131 }
132
149 int32_t min, int32_t max, UErrorCode &errorCode);
150
156 return getArgumentLimit(compiledPattern.getBuffer(), compiledPattern.length());
157 }
158
172 const UnicodeString &value0,
173 UnicodeString &appendTo, UErrorCode &errorCode) const;
174
189 const UnicodeString &value0,
190 const UnicodeString &value1,
191 UnicodeString &appendTo, UErrorCode &errorCode) const;
192
208 const UnicodeString &value0,
209 const UnicodeString &value1,
210 const UnicodeString &value2,
211 UnicodeString &appendTo, UErrorCode &errorCode) const;
212
234 UnicodeString &appendTo,
235 int32_t *offsets, int32_t offsetsLength, UErrorCode &errorCode) const;
236
261 int32_t *offsets, int32_t offsetsLength, UErrorCode &errorCode) const;
262
269 return getTextWithNoArguments(
270 compiledPattern.getBuffer(),
271 compiledPattern.length(),
272 nullptr,
273 0);
274 }
275
276#ifndef U_HIDE_INTERNAL_API
293 return getTextWithNoArguments(
294 compiledPattern.getBuffer(),
295 compiledPattern.length(),
296 offsets,
298 }
299#endif // U_HIDE_INTERNAL_API
300
301private:
311 UnicodeString compiledPattern;
312
313 static inline int32_t getArgumentLimit(const char16_t *compiledPattern,
315 return compiledPatternLength == 0 ? 0 : compiledPattern[0];
316 }
317
318 static UnicodeString getTextWithNoArguments(
319 const char16_t *compiledPattern,
320 int32_t compiledPatternLength,
321 int32_t *offsets,
322 int32_t offsetsLength);
323
324 static UnicodeString &format(
325 const char16_t *compiledPattern, int32_t compiledPatternLength,
326 const UnicodeString *const *values,
327 UnicodeString &result, const UnicodeString *resultCopy, UBool forbidResultAsValue,
328 int32_t *offsets, int32_t offsetsLength,
329 UErrorCode &errorCode);
330
331 // Give access to internals to SimpleModifier for number formatting
332 friend class number::impl::SimpleModifier;
333};
334
335U_NAMESPACE_END
336
337#endif /* U_SHOW_CPLUSPLUS_API */
338
339#endif // __SIMPLEFORMATTER_H__
"Smart pointer" base class; do not use directly: use LocalPointer etc.
Formats simple patterns like "{1} was born in {0}".
UnicodeString getTextWithNoArguments() const
Returns the pattern text with none of the arguments.
UnicodeString & format(const UnicodeString &value0, UnicodeString &appendTo, UErrorCode &errorCode) const
Formats the given value, appending to the appendTo builder.
SimpleFormatter & operator=(const SimpleFormatter &other)
Assignment operator.
UBool applyPatternMinMaxArguments(const UnicodeString &pattern, int32_t min, int32_t max, UErrorCode &errorCode)
Changes this object according to the new pattern.
SimpleFormatter(const UnicodeString &pattern, int32_t min, int32_t max, UErrorCode &errorCode)
Constructs a formatter from the pattern string.
int32_t getArgumentLimit() const
~SimpleFormatter()
Destructor.
SimpleFormatter()
Default constructor.
UnicodeString & formatAndAppend(const UnicodeString *const *values, int32_t valuesLength, UnicodeString &appendTo, int32_t *offsets, int32_t offsetsLength, UErrorCode &errorCode) const
Formats the given values, appending to the appendTo string.
UnicodeString & formatAndReplace(const UnicodeString *const *values, int32_t valuesLength, UnicodeString &result, int32_t *offsets, int32_t offsetsLength, UErrorCode &errorCode) const
Formats the given values, replacing the contents of the result string.
UnicodeString & format(const UnicodeString &value0, const UnicodeString &value1, const UnicodeString &value2, UnicodeString &appendTo, UErrorCode &errorCode) const
Formats the given values, appending to the appendTo builder.
UnicodeString & format(const UnicodeString &value0, const UnicodeString &value1, UnicodeString &appendTo, UErrorCode &errorCode) const
Formats the given values, appending to the appendTo builder.
UBool applyPattern(const UnicodeString &pattern, UErrorCode &errorCode)
Changes this object according to the new pattern.
SimpleFormatter(const SimpleFormatter &other)
Copy constructor.
SimpleFormatter(const UnicodeString &pattern, UErrorCode &errorCode)
Constructs a formatter from the pattern string.
UnicodeString getTextWithNoArguments(int32_t *offsets, int32_t offsetsLength) const
Returns the pattern text with none of the arguments.
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:296
#define INT32_MAX
The largest value a 32 bit signed integer can hold.
Definition umachine.h:186
int8_t UBool
The ICU boolean type, a signed-byte integer.
Definition umachine.h:247
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_COMMON_API
Set to export library symbols from inside the common library, and to import them from outside.
Definition utypes.h:300