Team Ai
Datasetpublic

codekingpro/portable-devtools

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