Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-22 08:37:11

0001 // © 2016 and later: Unicode, Inc. and others.
0002 // License & terms of use: http://www.unicode.org/copyright.html
0003 /*
0004  *******************************************************************************
0005  * Copyright (C) 2009-2010, Google, International Business Machines Corporation and *
0006  * others. All Rights Reserved.                                                *
0007  *******************************************************************************
0008  */ 
0009 
0010 #ifndef __TMUTAMT_H__
0011 #define __TMUTAMT_H__
0012 
0013 
0014 /**
0015  * \file
0016  * \brief C++ API: time unit amount object.
0017  */
0018 
0019 #include "unicode/utypes.h"
0020 
0021 #if U_SHOW_CPLUSPLUS_API
0022 
0023 #if !UCONFIG_NO_FORMATTING
0024 
0025 #include "unicode/measure.h"
0026 #include "unicode/tmunit.h"
0027 
0028 U_NAMESPACE_BEGIN
0029 
0030 
0031 /**
0032  * Express a duration as a time unit and number. Patterned after Currency.
0033  * @see TimeUnitAmount
0034  * @see TimeUnitFormat
0035  * @stable ICU 4.2
0036  */
0037 class U_I18N_API TimeUnitAmount: public Measure {
0038 public:
0039     /**
0040      * Construct TimeUnitAmount object with the given number and the
0041      * given time unit. 
0042      * @param number        a numeric object; number.isNumeric() must be true
0043      * @param timeUnitField the time unit field of a time unit
0044      * @param status        the input-output error code. 
0045      *                      If the number is not numeric or the timeUnitField
0046      *                      is not valid,
0047      *                      then this will be set to a failing value:
0048      *                      U_ILLEGAL_ARGUMENT_ERROR.
0049      * @stable ICU 4.2
0050      */
0051     TimeUnitAmount(const Formattable& number, 
0052                    TimeUnit::UTimeUnitFields timeUnitField,
0053                    UErrorCode& status);
0054 
0055     /**
0056      * Construct TimeUnitAmount object with the given numeric amount and the
0057      * given time unit. 
0058      * @param amount        a numeric amount.
0059      * @param timeUnitField the time unit field on which a time unit amount
0060      *                      object will be created.
0061      * @param status        the input-output error code. 
0062      *                      If the timeUnitField is not valid,
0063      *                      then this will be set to a failing value:
0064      *                      U_ILLEGAL_ARGUMENT_ERROR.
0065      * @stable ICU 4.2
0066      */
0067     TimeUnitAmount(double amount, TimeUnit::UTimeUnitFields timeUnitField,
0068                    UErrorCode& status);
0069 
0070 
0071     /**
0072      * Copy constructor 
0073      * @stable ICU 4.2
0074      */
0075     TimeUnitAmount(const TimeUnitAmount& other);
0076 
0077 
0078     /**
0079      * Assignment operator
0080      * @stable ICU 4.2
0081      */
0082     TimeUnitAmount& operator=(const TimeUnitAmount& other);
0083 
0084 
0085     /**
0086      * Clone. 
0087      * @return a polymorphic clone of this object. The result will have the same               class as returned by getDynamicClassID().
0088      * @stable ICU 4.2
0089      */
0090     virtual TimeUnitAmount* clone() const override;
0091 
0092     
0093     /**
0094      * Destructor
0095      * @stable ICU 4.2
0096      */
0097     virtual ~TimeUnitAmount();
0098 
0099     
0100     /** 
0101      * Equality operator.  
0102      * @param other  the object to compare to.
0103      * @return       true if this object is equal to the given object.
0104      * @stable ICU 4.2
0105      */
0106     virtual bool operator==(const UObject& other) const;
0107 
0108 
0109     /** 
0110      * Not-equality operator.  
0111      * @param other  the object to compare to.
0112      * @return       true if this object is not equal to the given object.
0113      * @stable ICU 4.2
0114      */
0115     bool operator!=(const UObject& other) const;
0116 
0117 
0118     /**
0119      * Return the class ID for this class. This is useful only for comparing to
0120      * a return value from getDynamicClassID(). For example:
0121      * <pre>
0122      * .   Base* polymorphic_pointer = createPolymorphicObject();
0123      * .   if (polymorphic_pointer->getDynamicClassID() ==
0124      * .       erived::getStaticClassID()) ...
0125      * </pre>
0126      * @return          The class ID for all objects of this class.
0127      * @stable ICU 4.2
0128      */
0129     static UClassID U_EXPORT2 getStaticClassID();
0130 
0131     /**
0132      * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
0133      * method is to implement a simple version of RTTI, since not all C++
0134      * compilers support genuine RTTI. Polymorphic operator==() and clone()
0135      * methods call this method.
0136      *
0137      * @return          The class ID for this object. All objects of a
0138      *                  given class have the same class ID.  Objects of
0139      *                  other classes have different class IDs.
0140      * @stable ICU 4.2
0141      */
0142     virtual UClassID getDynamicClassID() const override;
0143 
0144     /**
0145      * Get the time unit.
0146      * @return time unit object.
0147      * @stable ICU 4.2
0148      */
0149     const TimeUnit& getTimeUnit() const;
0150 
0151     /**
0152      * Get the time unit field value.
0153      * @return time unit field value.
0154      * @stable ICU 4.2
0155      */
0156     TimeUnit::UTimeUnitFields getTimeUnitField() const;
0157 };
0158 
0159 
0160 
0161 inline bool
0162 TimeUnitAmount::operator!=(const UObject& other) const {
0163     return !operator==(other);
0164 }
0165 
0166 U_NAMESPACE_END
0167 
0168 #endif /* #if !UCONFIG_NO_FORMATTING */
0169 
0170 #endif /* U_SHOW_CPLUSPLUS_API */
0171 
0172 #endif // __TMUTAMT_H__
0173 //eof
0174 //