1b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru/* 2b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru ******************************************************************************* 350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Copyright (C) 2009-2010, Google, International Business Machines Corporation and * 4b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * others. All Rights Reserved. * 5b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru ******************************************************************************* 6b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 7b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 8b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#ifndef __TMUTAMT_H__ 9b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#define __TMUTAMT_H__ 10b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 11b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 12b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru/** 13b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * \file 14b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * \brief C++ API: time unit amount object. 15b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 16b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 17b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#include "unicode/measure.h" 18b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#include "unicode/tmunit.h" 19b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 20b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 21b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 22b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruU_NAMESPACE_BEGIN 23b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 24b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 25b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru/** 26b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Express a duration as a time unit and number. Patterned after Currency. 27b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @see TimeUnitAmount 28b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @see TimeUnitFormat 2950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 30b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 31b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruclass U_I18N_API TimeUnitAmount: public Measure { 32b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Querupublic: 33b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 34b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Construct TimeUnitAmount object with the given number and the 35b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * given time unit. 36b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param number a numeric object; number.isNumeric() must be TRUE 37b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param timeUnitField the time unit field of a time unit 38b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param status the input-output error code. 39b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * If the number is not numeric or the timeUnitField 40b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * is not valid, 41b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * then this will be set to a failing value: 42b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * U_ILLEGAL_ARGUMENT_ERROR. 4350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 44b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 45b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru TimeUnitAmount(const Formattable& number, 46b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru TimeUnit::UTimeUnitFields timeUnitField, 47b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UErrorCode& status); 48b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 49b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 50b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Construct TimeUnitAmount object with the given numeric amount and the 51b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * given time unit. 52b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param amount a numeric amount. 53b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param timeUnitField the time unit field on which a time unit amount 54b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * object will be created. 55b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param status the input-output error code. 56b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * If the timeUnitField is not valid, 57b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * then this will be set to a failing value: 58b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * U_ILLEGAL_ARGUMENT_ERROR. 5950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 60b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 61b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru TimeUnitAmount(double amount, TimeUnit::UTimeUnitFields timeUnitField, 62b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UErrorCode& status); 63b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 64b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 65b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 66b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Copy constructor 6750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 68b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 69b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru TimeUnitAmount(const TimeUnitAmount& other); 70b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 71b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 72b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 73b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Assignment operator 7450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 75b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 76b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru TimeUnitAmount& operator=(const TimeUnitAmount& other); 77b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 78b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 79b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 80b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Clone. 81b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @return a polymorphic clone of this object. The result will have the same class as returned by getDynamicClassID(). 8250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 83b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 84b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru virtual UObject* clone() const; 85b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 86b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 87b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 88b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Destructor 8950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 90b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 91b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru virtual ~TimeUnitAmount(); 92b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 93b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 94b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 95b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Equality operator. 96b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param other the object to compare to. 97b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @return true if this object is equal to the given object. 9850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 99b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 100b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru virtual UBool operator==(const UObject& other) const; 101b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 102b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 103b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 104b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Not-equality operator. 105b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param other the object to compare to. 106b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @return true if this object is not equal to the given object. 10750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 108b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 109b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UBool operator!=(const UObject& other) const; 110b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 111b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 112b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 113b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Return the class ID for this class. This is useful only for comparing to 114b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * a return value from getDynamicClassID(). For example: 115b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * <pre> 116b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * . Base* polymorphic_pointer = createPolymorphicObject(); 117b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * . if (polymorphic_pointer->getDynamicClassID() == 118b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * . erived::getStaticClassID()) ... 119b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * </pre> 120b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @return The class ID for all objects of this class. 12150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 122b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 123b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru static UClassID U_EXPORT2 getStaticClassID(void); 124b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 125b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 126b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 127b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This 128b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * method is to implement a simple version of RTTI, since not all C++ 129b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * compilers support genuine RTTI. Polymorphic operator==() and clone() 130b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * methods call this method. 131b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * 132b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @return The class ID for this object. All objects of a 133b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * given class have the same class ID. Objects of 134b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * other classes have different class IDs. 13550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 136b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 137b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru virtual UClassID getDynamicClassID(void) const; 138b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 139b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 140b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 141b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Get the time unit. 142b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @return time unit object. 14350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 144b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 145b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru const TimeUnit& getTimeUnit() const; 146b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 147b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 148b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Get the time unit field value. 149b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @return time unit field value. 15050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 151b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 152b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru TimeUnit::UTimeUnitFields getTimeUnitField() const; 153b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru}; 154b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 155b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 156b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 157b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruinline UBool 158b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruTimeUnitAmount::operator!=(const UObject& other) const { 159b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru return !operator==(other); 160b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru} 161b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 162b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruU_NAMESPACE_END 163b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 164b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */ 165b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 166b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#endif // __TMUTAMT_H__ 167b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru//eof 168b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru// 169