X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/374ca955a76ecab1204ca8bfa63ff9238d998416..f3c0d7a59d99c2a94c6b8822291f0e42be3773c9:/icuSources/i18n/unicode/measure.h diff --git a/icuSources/i18n/unicode/measure.h b/icuSources/i18n/unicode/measure.h index 10f6daf8..a5a82f26 100644 --- a/icuSources/i18n/unicode/measure.h +++ b/icuSources/i18n/unicode/measure.h @@ -1,6 +1,8 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html /* ********************************************************************** -* Copyright (c) 2004, International Business Machines +* Copyright (c) 2004-2015, International Business Machines * Corporation and others. All Rights Reserved. ********************************************************************** * Author: Alan Liu @@ -13,10 +15,16 @@ #include "unicode/utypes.h" +/** + * \file + * \brief C++ API: MeasureUnit object. + */ + #if !UCONFIG_NO_FORMATTING #include "unicode/fmtable.h" +#if U_SHOW_CPLUSPLUS_API U_NAMESPACE_BEGIN class MeasureUnit; @@ -24,18 +32,14 @@ class MeasureUnit; /** * An amount of a specified unit, consisting of a number and a Unit. * For example, a length measure consists of a number and a length - * unit, such as feet or meters. This is an abstract class. - * Subclasses specify a concrete Unit type. + * unit, such as feet or meters. * - *

Measure objects are parsed and formatted by subclasses of - * MeasureFormat. + *

Measure objects are formatted by MeasureFormat. * *

Measure objects are immutable. * - *

This is an abstract class. - * * @author Alan Liu - * @draft ICU 3.0 + * @stable ICU 3.0 */ class U_I18N_API Measure: public UObject { public: @@ -47,40 +51,40 @@ class U_I18N_API Measure: public UObject { * @param adoptedUnit the unit object, which must not be NULL * @param ec input-output error code. If the amount or the unit * is invalid, then this will be set to a failing value. - * @draft ICU 3.0 + * @stable ICU 3.0 */ Measure(const Formattable& number, MeasureUnit* adoptedUnit, UErrorCode& ec); /** * Copy constructor - * @draft ICU 3.0 + * @stable ICU 3.0 */ Measure(const Measure& other); /** * Assignment operator - * @draft ICU 3.0 + * @stable ICU 3.0 */ Measure& operator=(const Measure& other); /** * Return a polymorphic clone of this object. The result will * have the same class as returned by getDynamicClassID(). - * @draft ICU 3.0 + * @stable ICU 3.0 */ - virtual UObject* clone() const = 0; + virtual UObject* clone() const; /** * Destructor - * @draft ICU 3.0 + * @stable ICU 3.0 */ virtual ~Measure(); /** * Equality operator. Return true if this object is equal * to the given object. - * @draft ICU 3.0 + * @stable ICU 3.0 */ UBool operator==(const UObject& other) const; @@ -88,20 +92,46 @@ class U_I18N_API Measure: public UObject { * Return a reference to the numeric value of this object. The * numeric value may be of any numeric type supported by * Formattable. - * @draft ICU 3.0 + * @stable ICU 3.0 */ inline const Formattable& getNumber() const; /** * Return a reference to the unit of this object. - * @draft ICU 3.0 + * @stable ICU 3.0 */ inline const MeasureUnit& getUnit() const; + /** + * Return the class ID for this class. This is useful only for comparing to + * a return value from getDynamicClassID(). For example: + *

+     * .   Base* polymorphic_pointer = createPolymorphicObject();
+     * .   if (polymorphic_pointer->getDynamicClassID() ==
+     * .       erived::getStaticClassID()) ...
+     * 
+ * @return The class ID for all objects of this class. + * @stable ICU 53 + */ + 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 53 + */ + virtual UClassID getDynamicClassID(void) const; + protected: /** * Default constructor. - * @draft ICU 3.0 + * @stable ICU 3.0 */ Measure(); @@ -127,6 +157,7 @@ inline const MeasureUnit& Measure::getUnit() const { } U_NAMESPACE_END +#endif // U_SHOW_CPLUSPLUS_API #endif // !UCONFIG_NO_FORMATTING #endif // __MEASURE_H__