Spaces:
Sleeping
Sleeping
// © 2016 and later: Unicode, Inc. and others. | |
// License & terms of use: http://www.unicode.org/copyright.html | |
/* | |
********************************************************************** | |
* Copyright (c) 2004-2014, International Business Machines | |
* Corporation and others. All Rights Reserved. | |
********************************************************************** | |
* Author: Alan Liu | |
* Created: April 26, 2004 | |
* Since: ICU 3.0 | |
********************************************************************** | |
*/ | |
/** | |
* \file | |
* \brief C++ API: Currency Unit Information. | |
*/ | |
U_NAMESPACE_BEGIN | |
/** | |
* A unit of currency, such as USD (U.S. dollars) or JPY (Japanese | |
* yen). This class is a thin wrapper over a char16_t string that | |
* subclasses MeasureUnit, for use with Measure and MeasureFormat. | |
* | |
* @author Alan Liu | |
* @stable ICU 3.0 | |
*/ | |
class U_I18N_API CurrencyUnit: public MeasureUnit { | |
public: | |
/** | |
* Default constructor. Initializes currency code to "XXX" (no currency). | |
* @stable ICU 60 | |
*/ | |
CurrencyUnit(); | |
/** | |
* Construct an object with the given ISO currency code. | |
* | |
* @param isoCode the 3-letter ISO 4217 currency code; must have | |
* length 3 and need not be NUL-terminated. If nullptr, the currency | |
* is initialized to the unknown currency XXX. | |
* @param ec input-output error code. If the isoCode is invalid, | |
* then this will be set to a failing value. | |
* @stable ICU 3.0 | |
*/ | |
CurrencyUnit(ConstChar16Ptr isoCode, UErrorCode &ec); | |
/** | |
* Construct an object with the given ISO currency code. | |
* | |
* @param isoCode the 3-letter ISO 4217 currency code; must have | |
* length 3. If invalid, the currency is initialized to XXX. | |
* @param ec input-output error code. If the isoCode is invalid, | |
* then this will be set to a failing value. | |
* @stable ICU 64 | |
*/ | |
CurrencyUnit(StringPiece isoCode, UErrorCode &ec); | |
/** | |
* Copy constructor | |
* @stable ICU 3.0 | |
*/ | |
CurrencyUnit(const CurrencyUnit& other); | |
/** | |
* Copy constructor from MeasureUnit. This constructor allows you to | |
* restore a CurrencyUnit that was sliced to MeasureUnit. | |
* | |
* @param measureUnit The MeasureUnit to copy from. | |
* @param ec Set to a failing value if the MeasureUnit is not a currency. | |
* @stable ICU 60 | |
*/ | |
CurrencyUnit(const MeasureUnit& measureUnit, UErrorCode &ec); | |
/** | |
* Assignment operator | |
* @stable ICU 3.0 | |
*/ | |
CurrencyUnit& operator=(const CurrencyUnit& other); | |
/** | |
* Return a polymorphic clone of this object. The result will | |
* have the same class as returned by getDynamicClassID(). | |
* @stable ICU 3.0 | |
*/ | |
virtual CurrencyUnit* clone() const override; | |
/** | |
* Destructor | |
* @stable ICU 3.0 | |
*/ | |
virtual ~CurrencyUnit(); | |
/** | |
* Returns a unique class ID for this object POLYMORPHICALLY. | |
* This method implements a simple form of RTTI used by ICU. | |
* @return The class ID for this object. All objects of a given | |
* class have the same class ID. Objects of other classes have | |
* different class IDs. | |
* @stable ICU 3.0 | |
*/ | |
virtual UClassID getDynamicClassID() const override; | |
/** | |
* Returns the class ID for this class. This is used to compare to | |
* the return value of getDynamicClassID(). | |
* @return The class ID for all objects of this class. | |
* @stable ICU 3.0 | |
*/ | |
static UClassID U_EXPORT2 getStaticClassID(); | |
/** | |
* Return the ISO currency code of this object. | |
* @stable ICU 3.0 | |
*/ | |
inline const char16_t* getISOCurrency() const; | |
private: | |
/** | |
* The ISO 4217 code of this object. | |
*/ | |
char16_t isoCode[4]; | |
}; | |
inline const char16_t* CurrencyUnit::getISOCurrency() const { | |
return isoCode; | |
} | |
U_NAMESPACE_END | |