| // © 2016 and later: Unicode, Inc. and others. |
| // License & terms of use: http://www.unicode.org/copyright.html |
| /* |
| ******************************************************************************* |
| * Copyright (C) 2009-2010, Google, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ******************************************************************************* |
| */ |
| |
| #ifndef __TMUTAMT_H__ |
| #define __TMUTAMT_H__ |
| |
| |
| /** |
| * \file |
| * \brief C++ API: time unit amount object. |
| */ |
| |
| #include "unicode/measure.h" |
| #include "unicode/tmunit.h" |
| |
| #if !UCONFIG_NO_FORMATTING |
| |
| U_NAMESPACE_BEGIN |
| |
| |
| /** |
| * Express a duration as a time unit and number. Patterned after Currency. |
| * @see TimeUnitAmount |
| * @see TimeUnitFormat |
| * @stable ICU 4.2 |
| */ |
| class U_I18N_API TimeUnitAmount: public Measure { |
| public: |
| /** |
| * Construct TimeUnitAmount object with the given number and the |
| * given time unit. |
| * @param number a numeric object; number.isNumeric() must be TRUE |
| * @param timeUnitField the time unit field of a time unit |
| * @param status the input-output error code. |
| * If the number is not numeric or the timeUnitField |
| * is not valid, |
| * then this will be set to a failing value: |
| * U_ILLEGAL_ARGUMENT_ERROR. |
| * @stable ICU 4.2 |
| */ |
| TimeUnitAmount(const Formattable& number, |
| TimeUnit::UTimeUnitFields timeUnitField, |
| UErrorCode& status); |
| |
| /** |
| * Construct TimeUnitAmount object with the given numeric amount and the |
| * given time unit. |
| * @param amount a numeric amount. |
| * @param timeUnitField the time unit field on which a time unit amount |
| * object will be created. |
| * @param status the input-output error code. |
| * If the timeUnitField is not valid, |
| * then this will be set to a failing value: |
| * U_ILLEGAL_ARGUMENT_ERROR. |
| * @stable ICU 4.2 |
| */ |
| TimeUnitAmount(double amount, TimeUnit::UTimeUnitFields timeUnitField, |
| UErrorCode& status); |
| |
| |
| /** |
| * Copy constructor |
| * @stable ICU 4.2 |
| */ |
| TimeUnitAmount(const TimeUnitAmount& other); |
| |
| |
| /** |
| * Assignment operator |
| * @stable ICU 4.2 |
| */ |
| TimeUnitAmount& operator=(const TimeUnitAmount& other); |
| |
| |
| /** |
| * Clone. |
| * @return a polymorphic clone of this object. The result will have the same class as returned by getDynamicClassID(). |
| * @stable ICU 4.2 |
| */ |
| virtual UObject* clone() const; |
| |
| |
| /** |
| * Destructor |
| * @stable ICU 4.2 |
| */ |
| virtual ~TimeUnitAmount(); |
| |
| |
| /** |
| * Equality operator. |
| * @param other the object to compare to. |
| * @return true if this object is equal to the given object. |
| * @stable ICU 4.2 |
| */ |
| virtual UBool operator==(const UObject& other) const; |
| |
| |
| /** |
| * Not-equality operator. |
| * @param other the object to compare to. |
| * @return true if this object is not equal to the given object. |
| * @stable ICU 4.2 |
| */ |
| UBool operator!=(const UObject& other) const; |
| |
| |
| /** |
| * Return the class ID for this class. This is useful only for comparing to |
| * a return value from getDynamicClassID(). For example: |
| * <pre> |
| * . Base* polymorphic_pointer = createPolymorphicObject(); |
| * . if (polymorphic_pointer->getDynamicClassID() == |
| * . erived::getStaticClassID()) ... |
| * </pre> |
| * @return The class ID for all objects of this class. |
| * @stable ICU 4.2 |
| */ |
| static UClassID U_EXPORT2 getStaticClassID(void); |
| |
| |
| /** |
| * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This |
| * method is to implement a simple version of RTTI, since not all C++ |
| * compilers support genuine RTTI. Polymorphic operator==() and clone() |
| * methods call this method. |
| * |
| * @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 4.2 |
| */ |
| virtual UClassID getDynamicClassID(void) const; |
| |
| |
| /** |
| * Get the time unit. |
| * @return time unit object. |
| * @stable ICU 4.2 |
| */ |
| const TimeUnit& getTimeUnit() const; |
| |
| /** |
| * Get the time unit field value. |
| * @return time unit field value. |
| * @stable ICU 4.2 |
| */ |
| TimeUnit::UTimeUnitFields getTimeUnitField() const; |
| }; |
| |
| |
| |
| inline UBool |
| TimeUnitAmount::operator!=(const UObject& other) const { |
| return !operator==(other); |
| } |
| |
| U_NAMESPACE_END |
| |
| #endif /* #if !UCONFIG_NO_FORMATTING */ |
| |
| #endif // __TMUTAMT_H__ |
| //eof |
| // |