ICU 76.1: icu::message2::Formattable Class Reference

ICU 76.1 76.1

Public Member Functions | Static Public Member Functions | Friends
icu::message2::Formattable Class Reference

The `Formattable` class represents a typed value that can be formatted, originating either from a message argument or a literal in the code. More...

`#include <messageformat2_formattable.h>`

Inheritance diagram for icu::message2::Formattable:

## Public Member Functions
UFormattableType | getType () const
| Gets the data type of this Formattable object. More...
double | getDouble (UErrorCode &status) const
| Gets the double value of this object. More...
int32_t | getLong (UErrorCode &status) const
| Gets the long value of this object. More...
int64_t | getInt64Value (UErrorCode &status) const
| Gets the int64 value of this object. More...
int64_t | getInt64 (UErrorCode &status) const
| Gets the int64 value of this object. More...
const UnicodeString & | getString (UErrorCode &status) const
| Gets the string value of this object. More...
UDate | getDate (UErrorCode &status) const
| Gets the Date value of this object. More...
UBool | isNumeric () const
| Returns true if the data type of this Formattable object is kDouble. More...
const Formattable * | getArray (int32_t &count, UErrorCode &status) const
| Gets the array value and count of this object. More...
const FormattableObject * | getObject (UErrorCode &status) const
| Returns a pointer to the FormattableObject contained within this formattable, or if this object does not contain a FormattableObject, returns nullptr and sets the error code. More...
| Formattable (const Formattable &)
| Copy constructor. More...
Formattable & | operator= (Formattable) noexcept
| Assignment operator. More...
| Formattable ()
| Default constructor. More...
| Formattable (const UnicodeString &s)
| String constructor. More...
| Formattable (double d)
| Double constructor. More...
| Formattable (int64_t i)
| Int64 constructor. More...
| Formattable (const Formattable *arr, int32_t len)
| Array constructor. More...
| Formattable (const FormattableObject *obj)
| Object constructor. More...
virtual | ~Formattable ()
| Destructor. More...
icu::Formattable | asICUFormattable (UErrorCode &status) const
| Converts the Formattable object to an ICU Formattable object. More...
Public Member Functions inherited from icu::UObject
virtual | ~UObject ()
| Destructor. More...
virtual UClassID | getDynamicClassID () const
| ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class. More...

## Static Public Member Functions
static Formattable | forDate (UDate d)
| Date factory method. More...
static Formattable | forDecimal (std::string_view number, UErrorCode &status)
| Creates a Formattable object of an appropriate numeric type from a a decimal number in string form. More...

## Friends
void | swap (Formattable &f1, Formattable &f2) noexcept
| Non-member swap function. More...

## Detailed Description

The `Formattable` class represents a typed value that can be formatted, originating either from a message argument or a literal in the code.

ICU's Formattable class is not used in MessageFormat 2 because it's unsafe to copy an icu::Formattable value that contains an object. (See ICU-20275).

`Formattable` is immutable (not deeply immutable) and is movable and copyable. (Copying does not do a deep copy when the wrapped value is an array or object. Likewise, while a pointer to a wrapped array or object is `const`, the referents of the pointers may be mutated by other code.)

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 116 of file messageformat2_formattable.h.

## Constructor & Destructor Documentation

## ◆ Formattable() [1/7]

icu::message2::Formattable::Formattable | ( | const Formattable & |  | ) |

Copy constructor.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

## ◆ Formattable() [2/7]

icu::message2::Formattable::Formattable | ( |  | ) |
| inline

Default constructor.

Leaves the Formattable in a valid but undefined state.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 325 of file messageformat2_formattable.h.

## ◆ Formattable() [3/7]

icu::message2::Formattable::Formattable | ( | const UnicodeString & | s | ) |
| inline

String constructor.

Parameters

  s | A string to wrap as a Formattable.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 334 of file messageformat2_formattable.h.

## ◆ Formattable() [4/7]

icu::message2::Formattable::Formattable | ( | double | d | ) |
| inline

Double constructor.

Parameters

  d | A double value to wrap as a Formattable.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 343 of file messageformat2_formattable.h.

## ◆ Formattable() [5/7]

icu::message2::Formattable::Formattable | ( | int64_t | i | ) |
| inline

Int64 constructor.

Parameters

  i | An int64 value to wrap as a Formattable.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 352 of file messageformat2_formattable.h.

## ◆ Formattable() [6/7]

icu::message2::Formattable::Formattable | ( | const Formattable * | arr,
|  | int32_t | len
| ) |  |
| inline

Array constructor.

Parameters

  arr | An array of Formattables, which is adopted.
  len | The length of the array.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 390 of file messageformat2_formattable.h.

## ◆ Formattable() [7/7]

icu::message2::Formattable::Formattable | ( | const FormattableObject * | obj | ) |
| inline

Object constructor.

Parameters

  obj | A FormattableObject (not adopted).

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 399 of file messageformat2_formattable.h.

## ◆ ~Formattable()

virtual icu::message2::Formattable::~Formattable | ( |  | ) |
| virtual

Destructor.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

## Member Function Documentation

## ◆ asICUFormattable()

icu::Formattable icu::message2::Formattable::asICUFormattable | ( | UErrorCode & | status | ) | const

Converts the Formattable object to an ICU Formattable object.

If this has type UFMT_OBJECT or kArray, then `status` is set to U_ILLEGAL_ARGUMENT_ERROR.

Parameters

  status | Input/output error code.

Returns
  An icu::Formattable value with the same value as this.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

## ◆ forDate()

static Formattable icu::message2::Formattable::forDate | ( | UDate | d | ) |
| inlinestatic

Date factory method.

Parameters

  d | A UDate value to wrap as a Formattable.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 360 of file messageformat2_formattable.h.

## ◆ forDecimal()

static Formattable icu::message2::Formattable::forDecimal | ( | std::string_view | number,
|  | UErrorCode & | status
| ) |  |
| static

Creates a Formattable object of an appropriate numeric type from a a decimal number in string form.

The Formattable will retain the full precision of the input in decimal format, even when it exceeds what can be represented by a double or int64_t.

Parameters

  number | the unformatted (not localized) string representation of the Decimal number.
  status | the error code. Possible errors include U_INVALID_FORMAT_ERROR if the format of the string does not conform to that of a decimal number.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

## ◆ getArray()

const Formattable* icu::message2::Formattable::getArray | ( | int32_t & | count,
|  | UErrorCode & | status
| ) |  | const

Gets the array value and count of this object.

If this object is not of type kArray then the result is undefined and the error code is set.

Parameters

  count | fill-in with the count of this object.
  status | Input/output error code.

Returns
  the array value of this object.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

## ◆ getDate()

UDate icu::message2::Formattable::getDate | ( | UErrorCode & | status | ) | const
| inline

Gets the Date value of this object.

If this object is not of type kDate then the result is undefined and the error code is set.

Parameters

  status | Input/output error code.

Returns
  the Date value of this object.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 237 of file messageformat2_formattable.h.

References U_ILLEGAL_ARGUMENT_ERROR, and U_SUCCESS.

## ◆ getDouble()

double icu::message2::Formattable::getDouble | ( | UErrorCode & | status | ) | const
| inline

Gets the double value of this object.

If this object is not of type UFMT_DOUBLE, then the result is undefined and the error code is set.

Parameters

  status | Input/output error code.

Returns
  the double value of this object.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 136 of file messageformat2_formattable.h.

References U_ILLEGAL_ARGUMENT_ERROR, U_SUCCESS, and UFMT_DOUBLE.

## ◆ getInt64()

int64_t icu::message2::Formattable::getInt64 | ( | UErrorCode & | status | ) | const

Gets the int64 value of this object.

If this object is of a numeric type and the magnitude is too large to fit in an int64, then the maximum or minimum int64 value, as appropriate, is returned and the status is set to U_INVALID_FORMAT_ERROR. If the magnitude fits in an int64, then a casting conversion is performed, with truncation of any fractional part. If this object is not a numeric type, then 0 is returned and the status is set to U_INVALID_FORMAT_ERROR.

Parameters

  status | the error code

Returns
  the int64 value of this object.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

## ◆ getInt64Value()

int64_t icu::message2::Formattable::getInt64Value | ( | UErrorCode & | status | ) | const
| inline

Gets the int64 value of this object.

If this object is not of type kInt64 then the result is undefined and the error code is set. If conversion to int64 is desired, call getInt64()

Parameters

  status | Input/output error code.

Returns
  the int64 value of this object.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 181 of file messageformat2_formattable.h.

References U_ILLEGAL_ARGUMENT_ERROR, U_SUCCESS, and UFMT_INT64.

## ◆ getLong()

int32_t icu::message2::Formattable::getLong | ( | UErrorCode & | status | ) | const
| inline

Gets the long value of this object.

If this object is not of type UFMT_LONG then the result is undefined and the error code is set.

Parameters

  status | Input/output error code.

Returns
  the long value of this object.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 158 of file messageformat2_formattable.h.

References U_ILLEGAL_ARGUMENT_ERROR, U_SUCCESS, and UFMT_LONG.

## ◆ getObject()

const FormattableObject* icu::message2::Formattable::getObject | ( | UErrorCode & | status | ) | const
| inline

Returns a pointer to the FormattableObject contained within this formattable, or if this object does not contain a FormattableObject, returns nullptr and sets the error code.

Parameters

  status | Input/output error code.

Returns
  a FormattableObject pointer, or nullptr

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 278 of file messageformat2_formattable.h.

References U_ILLEGAL_ARGUMENT_ERROR, U_SUCCESS, and UFMT_OBJECT.

## ◆ getString()

const UnicodeString& icu::message2::Formattable::getString | ( | UErrorCode & | status | ) | const
| inline

Gets the string value of this object.

If this object is not of type kString then the result is undefined and the error code is set.

Parameters

  status | Input/output error code.

Returns
  A reference to the string value of this object.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 218 of file messageformat2_formattable.h.

References U_ILLEGAL_ARGUMENT_ERROR, and U_SUCCESS.

## ◆ getType()

UFormattableType icu::message2::Formattable::getType | ( |  | ) | const

Gets the data type of this Formattable object.

Returns
  the data type of this Formattable object.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

## ◆ isNumeric()

UBool icu::message2::Formattable::isNumeric | ( |  | ) | const
| inline

Returns true if the data type of this Formattable object is kDouble.

Returns
  true if this is a pure numeric object

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 254 of file messageformat2_formattable.h.

References UFMT_DOUBLE, UFMT_INT64, and UFMT_LONG.

## ◆ operator=()

Formattable& icu::message2::Formattable::operator= | ( | Formattable |  | ) |
| noexcept

Assignment operator.

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

## Friends And Related Function Documentation

## ◆ swap

void swap | ( | Formattable & | f1,
|  | Formattable & | f2
| ) |  |
| friend

Non-member swap function.

Parameters

  f1 | will get f2's contents
  f2 | will get f1's contents

Internal:
  Do not use. This API is for internal use only. ICU 75 technology preview

Deprecated:
  This API is for technology preview only.

Definition at line 298 of file messageformat2_formattable.h.

The documentation for this class was generated from the following file:

- i18n/unicode/messageformat2_formattable.h