1 // © 2016 and later: Unicode, Inc. and others. 2 // License & terms of use: http://www.unicode.org/copyright.html 4 ******************************************************************************** 5 * Copyright (C) 1997-2014, International Business Machines 6 * Corporation and others. All Rights Reserved. 7 ******************************************************************************** 11 * Modification History: 13 * Date Name Description 14 * 02/29/97 aliu Creation. 15 ******************************************************************************** 22 #if U_SHOW_CPLUSPLUS_API 29 #if !UCONFIG_NO_FORMATTING 39 namespacenumber::impl {
111 #if !UCONFIG_NO_CONVERSION 314 int32_t
getLong()
const{
returnstatic_cast<int32_t
>(fValue.fInt64); }
385 { result=*fValue.fString;
return result; }
443 { count=fValue.fArrayAndCount.fCount;
return fValue.fArrayAndCount.fArray; }
632 #ifndef U_HIDE_DEPRECATED_API 639 inline int32_t getLong(
UErrorCode* status)
const;
640 #endif/* U_HIDE_DEPRECATED_API */ 642 #ifndef U_HIDE_INTERNAL_API 675 #endif/* U_HIDE_INTERNAL_API */ 703 FixedString* fDecimalStr;
705 number::impl::DecimalQuantity *fDecimalQuantity;
708 UnicodeString fBogus;
// Bogus string when it's needed. 712 if (fType != kDate) {
722 return *fValue.fString;
726 return *fValue.fString;
729 #ifndef U_HIDE_DEPRECATED_API 730 inline int32_t Formattable::getLong(
UErrorCode* status)
const{
731 return getLong(*status);
733 #endif/* U_HIDE_DEPRECATED_API */ 753 #endif/* #if !UCONFIG_NO_FORMATTING */ 755 #endif/* U_SHOW_CPLUSPLUS_API */ Formattable objects can be passed to the Format class or its subclasses for formatting.
void setDecimalNumber(StringPiece numberString, UErrorCode &status)
Sets the numeric value from a decimal number string, and changes the type to to a numeric type approp...
Formattable(StringPiece number, UErrorCode &status)
Creates a Formattable object of an appropriate numeric type from a a decimal number in string form.
Formattable & operator=(const Formattable &rhs)
Assignment operator.
Formattable(UnicodeString *strToAdopt)
Creates a Formattable object with a UnicodeString object to adopt from.
Formattable * clone() const
Clone this object.
Type getType() const
Gets the data type of this Formattable object.
Formattable & operator[](int32_t index)
Accesses the specified element in the array value of this Formattable object.
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
void setArray(const Formattable *array, int32_t count)
Sets the array value and count of this object and changes the type to kArray.
void setString(const UnicodeString &stringToCopy)
Sets the string value of this object and changes the type to kString.
UBool isNumeric() const
Returns true if the data type of this Formattable object is kDouble, kLong, or kInt64.
UnicodeString & getString(UErrorCode &status)
Gets a reference to the string value of this object.
void adoptString(UnicodeString *stringToAdopt)
Sets and adopts the string value and count of this object and changes the type to kArray.
Formattable(UObject *objectToAdopt)
Creates a Formattable object that adopts the given UObject.
const UObject * getObject() const
Returns a pointer to the UObject contained within this formattable, or nullptr if this object does no...
void setInt64(int64_t ll)
Sets the int64 value of this object and changes the type to kInt64.
Formattable(double d)
Creates a Formattable object with a double number.
number::impl::DecimalQuantity * getDecimalQuantity() const
Internal function, do not use.
FixedString * internalGetFixedString(UErrorCode &status)
Internal function to return the FixedString pointer.
Formattable()
Default constructor.
void setDouble(double d)
Sets the double value of this object and changes the type to kDouble.
int32_t getLong() const
Gets the long value of this object.
Formattable(const UnicodeString &strToCopy)
Creates a Formattable object with a UnicodeString object to copy from.
void adoptDecimalQuantity(number::impl::DecimalQuantity *dq)
Adopt, and set value from, a DecimalQuantity Internal Function, do not use.
void setLong(int32_t l)
Sets the long value of this object and changes the type to kLong.
Type
Selector for flavor of data type contained within a Formattable object.
@ kDouble
Selector indicating a double value.
@ kArray
Selector indicating an array of Formattables.
@ kLong
Selector indicating a 32-bit integer value.
@ kInt64
Selector indicating a 64-bit integer value.
@ kString
Selector indicating a UnicodeString value.
@ kDate
Selector indicating a UDate value.
void setDate(UDate d)
Sets the Date value of this object and changes the type to kDate.
const Formattable * getArray(int32_t &count) const
Gets the array value and count of this object.
double getDouble(UErrorCode &status) const
Gets the double value of this object.
Formattable(const char *strToCopy)
Creates a Formattable object with a char string pointer.
Formattable(UDate d, ISDATE flag)
Creates a Formattable object with a UDate instance.
void adoptArray(Formattable *array, int32_t count)
Sets and adopts the array value and count of this object and changes the type to kArray.
void adoptObject(UObject *objectToAdopt)
Sets and adopts the UObject value of this object and changes the type to kObject.
bool operator==(const Formattable &other) const
Equality comparison.
const UnicodeString & getString(UErrorCode &status) const
Gets a const reference to the string value of this object.
double getDouble() const
Gets the double value of this object.
UnicodeString & getString(UnicodeString &result, UErrorCode &status) const
Gets the string value of this object.
Formattable(const Formattable *arrayToCopy, int32_t count)
Creates a Formattable object with an array of Formattable objects.
int64_t getInt64() const
Gets the int64 value of this object.
Formattable(const Formattable &)
Copy constructor.
Formattable(int32_t l)
Creates a Formattable object with a long number.
StringPiece getDecimalNumber(UErrorCode &status)
Returns a numeric string representation of the number contained within this formattable,...
UnicodeString & getString(UnicodeString &result) const
Gets the string value of this object.
virtual ~Formattable()
Destructor.
ISDATE
This enum is only used to let callers distinguish between the Formattable(UDate) constructor and the ...
bool operator!=(const Formattable &other) const
Equality operator.
void populateDecimalQuantity(number::impl::DecimalQuantity &output, UErrorCode &status) const
Export the value of this Formattable to a DecimalQuantity.
UDate getDate() const
Gets the Date value of this object.
int32_t getLong(UErrorCode &status) const
Gets the long value of this object.
const Formattable * getArray(int32_t &count, UErrorCode &status) const
Gets the array value and count of this object.
Formattable(int64_t ll)
Creates a Formattable object with an int64_t number.
int64_t getInt64(UErrorCode &status) const
Gets the int64 value of this object.
virtual UClassID getDynamicClassID() const override
ICU "poor man's RTTI", returns a UClassID for the actual class.
A string-like object that points to a sized piece of memory.
UObject is the common ICU "boilerplate" class.
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
U_COMMON_API UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
C++ API: StringPiece: Read-only byte string wrapper class.
C API: UFormattable is a thin wrapper for primitive types used for formatting and parsing.
void * UFormattable
Opaque type representing various types of data which may be used for formatting and parsing operation...
int8_t UBool
The ICU boolean type, a signed-byte integer.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
@ U_INVALID_FORMAT_ERROR
Data format is not what is expected.
#define U_SUCCESS(x)
Does the error code indicate success?
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
double UDate
Date and Time data type.