ICU 77.1  77.1
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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 
25 U_NAMESPACE_BEGIN
26 
27 // Forward declaration:
28 namespace number::impl {
29 class SimpleModifier;
30 }
31 
60 class U_COMMON_API SimpleFormatter final : public UMemory {
61 public:
66  SimpleFormatter() : compiledPattern(static_cast<char16_t>(0)) {}
67 
77  SimpleFormatter(const UnicodeString& pattern, UErrorCode &errorCode) {
78  applyPattern(pattern, errorCode);
79  }
80 
95  SimpleFormatter(const UnicodeString& pattern, int32_t min, int32_t max,
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 
155  int32_t getArgumentLimit() const {
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 
233  const UnicodeString *const *values, int32_t valuesLength,
234  UnicodeString &appendTo,
235  int32_t *offsets, int32_t offsetsLength, UErrorCode &errorCode) const;
236 
259  const UnicodeString *const *values, int32_t valuesLength,
260  UnicodeString &result,
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
292  UnicodeString getTextWithNoArguments(int32_t *offsets, int32_t offsetsLength) const {
293  return getTextWithNoArguments(
294  compiledPattern.getBuffer(),
295  compiledPattern.length(),
296  offsets,
297  offsetsLength);
298  }
299 #endif // U_HIDE_INTERNAL_API
300 
301 private:
311  UnicodeString compiledPattern;
312 
313  static inline int32_t getArgumentLimit(const char16_t *compiledPattern,
314  int32_t compiledPatternLength) {
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 
335 U_NAMESPACE_END
336 
337 #endif /* U_SHOW_CPLUSPLUS_API */
338 
339 #endif // __SIMPLEFORMATTER_H__
Formats simple patterns like "{1} was born in {0}".
UnicodeString getTextWithNoArguments() const
Returns the pattern text with none of the arguments.
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.
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
UnicodeString & format(const UnicodeString &value0, const UnicodeString &value1, UnicodeString &appendTo, UErrorCode &errorCode) const
Formats the given values, appending to the appendTo builder.
~SimpleFormatter()
Destructor.
UnicodeString & format(const UnicodeString &value0, UnicodeString &appendTo, UErrorCode &errorCode) const
Formats the given value, appending to the appendTo builder.
SimpleFormatter()
Default constructor.
SimpleFormatter & operator=(const SimpleFormatter &other)
Assignment operator.
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.
UBool applyPattern(const UnicodeString &pattern, UErrorCode &errorCode)
Changes this object according to the new pattern.
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.
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:430
#define U_COMMON_API
Set to export library symbols from inside the common library, and to import them from outside.
Definition: utypes.h:315