Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-07-14 09:08:20

0001 // © 2016 and later: Unicode, Inc. and others.
0002 // License & terms of use: http://www.unicode.org/copyright.html
0003 /*
0004 **********************************************************************
0005 * Copyright (c) 2004-2016, International Business Machines
0006 * Corporation and others.  All Rights Reserved.
0007 **********************************************************************
0008 * Author: Alan Liu
0009 * Created: April 26, 2004
0010 * Since: ICU 3.0
0011 **********************************************************************
0012 */
0013 #ifndef __MEASUREUNIT_H__
0014 #define __MEASUREUNIT_H__
0015 
0016 #include "unicode/utypes.h"
0017 
0018 #if U_SHOW_CPLUSPLUS_API
0019 
0020 #if !UCONFIG_NO_FORMATTING
0021 
0022 #include <utility>
0023 #include "unicode/unistr.h"
0024 #include "unicode/localpointer.h"
0025 
0026 /**
0027  * \file
0028  * \brief C++ API: A unit for measuring a quantity.
0029  */
0030 
0031 U_NAMESPACE_BEGIN
0032 
0033 class StringEnumeration;
0034 class MeasureUnitImpl;
0035 
0036 namespace number {
0037 namespace impl {
0038 class LongNameHandler;
0039 }
0040 } // namespace number
0041 
0042 /**
0043  * Enumeration for unit complexity. There are three levels:
0044  *
0045  * - SINGLE: A single unit, optionally with a power and/or SI or binary prefix.
0046  *           Examples: hectare, square-kilometer, kilojoule, per-second, mebibyte.
0047  * - COMPOUND: A unit composed of the product of multiple single units. Examples:
0048  *             meter-per-second, kilowatt-hour, kilogram-meter-per-square-second.
0049  * - MIXED: A unit composed of the sum of multiple single units. Examples: foot+inch,
0050  *          hour+minute+second, degree+arcminute+arcsecond.
0051  *
0052  * The complexity determines which operations are available. For example, you cannot set the power
0053  * or prefix of a compound unit.
0054  *
0055  * @stable ICU 67
0056  */
0057 enum UMeasureUnitComplexity {
0058     /**
0059      * A single unit, like kilojoule.
0060      *
0061      * @stable ICU 67
0062      */
0063     UMEASURE_UNIT_SINGLE,
0064 
0065     /**
0066      * A compound unit, like meter-per-second.
0067      *
0068      * @stable ICU 67
0069      */
0070     UMEASURE_UNIT_COMPOUND,
0071 
0072     /**
0073      * A mixed unit, like hour+minute.
0074      *
0075      * @stable ICU 67
0076      */
0077     UMEASURE_UNIT_MIXED
0078 };
0079 
0080 
0081 /**
0082  * Enumeration for SI and binary prefixes, e.g. "kilo-", "nano-", "mebi-".
0083  *
0084  * Enum values should be treated as opaque: use umeas_getPrefixPower() and
0085  * umeas_getPrefixBase() to find their corresponding values.
0086  *
0087  * @stable ICU 69
0088  * @see umeas_getPrefixBase
0089  * @see umeas_getPrefixPower
0090  */
0091 typedef enum UMeasurePrefix {
0092     /**
0093      * The absence of an SI or binary prefix.
0094      *
0095      * The integer representation of this enum value is an arbitrary
0096      * implementation detail and should not be relied upon: use
0097      * umeas_getPrefixPower() to obtain meaningful values.
0098      *
0099      * @stable ICU 69
0100      */
0101     UMEASURE_PREFIX_ONE = 30 + 0,
0102 
0103     /**
0104      * SI prefix: yotta, 10^24.
0105      *
0106      * @stable ICU 69
0107      */
0108     UMEASURE_PREFIX_YOTTA = UMEASURE_PREFIX_ONE + 24,
0109 
0110 #ifndef U_HIDE_INTERNAL_API
0111     /**
0112      * ICU use only.
0113      * Used to determine the set of base-10 SI prefixes.
0114      * @internal
0115      */
0116     UMEASURE_PREFIX_INTERNAL_MAX_SI = UMEASURE_PREFIX_YOTTA,
0117 #endif  /* U_HIDE_INTERNAL_API */
0118 
0119     /**
0120      * SI prefix: zetta, 10^21.
0121      *
0122      * @stable ICU 69
0123      */
0124     UMEASURE_PREFIX_ZETTA = UMEASURE_PREFIX_ONE + 21,
0125 
0126     /**
0127      * SI prefix: exa, 10^18.
0128      *
0129      * @stable ICU 69
0130      */
0131     UMEASURE_PREFIX_EXA = UMEASURE_PREFIX_ONE + 18,
0132 
0133     /**
0134      * SI prefix: peta, 10^15.
0135      *
0136      * @stable ICU 69
0137      */
0138     UMEASURE_PREFIX_PETA = UMEASURE_PREFIX_ONE + 15,
0139 
0140     /**
0141      * SI prefix: tera, 10^12.
0142      *
0143      * @stable ICU 69
0144      */
0145     UMEASURE_PREFIX_TERA = UMEASURE_PREFIX_ONE + 12,
0146 
0147     /**
0148      * SI prefix: giga, 10^9.
0149      *
0150      * @stable ICU 69
0151      */
0152     UMEASURE_PREFIX_GIGA = UMEASURE_PREFIX_ONE + 9,
0153 
0154     /**
0155      * SI prefix: mega, 10^6.
0156      *
0157      * @stable ICU 69
0158      */
0159     UMEASURE_PREFIX_MEGA = UMEASURE_PREFIX_ONE + 6,
0160 
0161     /**
0162      * SI prefix: kilo, 10^3.
0163      *
0164      * @stable ICU 69
0165      */
0166     UMEASURE_PREFIX_KILO = UMEASURE_PREFIX_ONE + 3,
0167 
0168     /**
0169      * SI prefix: hecto, 10^2.
0170      *
0171      * @stable ICU 69
0172      */
0173     UMEASURE_PREFIX_HECTO = UMEASURE_PREFIX_ONE + 2,
0174 
0175     /**
0176      * SI prefix: deka, 10^1.
0177      *
0178      * @stable ICU 69
0179      */
0180     UMEASURE_PREFIX_DEKA = UMEASURE_PREFIX_ONE + 1,
0181 
0182     /**
0183      * SI prefix: deci, 10^-1.
0184      *
0185      * @stable ICU 69
0186      */
0187     UMEASURE_PREFIX_DECI = UMEASURE_PREFIX_ONE + -1,
0188 
0189     /**
0190      * SI prefix: centi, 10^-2.
0191      *
0192      * @stable ICU 69
0193      */
0194     UMEASURE_PREFIX_CENTI = UMEASURE_PREFIX_ONE + -2,
0195 
0196     /**
0197      * SI prefix: milli, 10^-3.
0198      *
0199      * @stable ICU 69
0200      */
0201     UMEASURE_PREFIX_MILLI = UMEASURE_PREFIX_ONE + -3,
0202 
0203     /**
0204      * SI prefix: micro, 10^-6.
0205      *
0206      * @stable ICU 69
0207      */
0208     UMEASURE_PREFIX_MICRO = UMEASURE_PREFIX_ONE + -6,
0209 
0210     /**
0211      * SI prefix: nano, 10^-9.
0212      *
0213      * @stable ICU 69
0214      */
0215     UMEASURE_PREFIX_NANO = UMEASURE_PREFIX_ONE + -9,
0216 
0217     /**
0218      * SI prefix: pico, 10^-12.
0219      *
0220      * @stable ICU 69
0221      */
0222     UMEASURE_PREFIX_PICO = UMEASURE_PREFIX_ONE + -12,
0223 
0224     /**
0225      * SI prefix: femto, 10^-15.
0226      *
0227      * @stable ICU 69
0228      */
0229     UMEASURE_PREFIX_FEMTO = UMEASURE_PREFIX_ONE + -15,
0230 
0231     /**
0232      * SI prefix: atto, 10^-18.
0233      *
0234      * @stable ICU 69
0235      */
0236     UMEASURE_PREFIX_ATTO = UMEASURE_PREFIX_ONE + -18,
0237 
0238     /**
0239      * SI prefix: zepto, 10^-21.
0240      *
0241      * @stable ICU 69
0242      */
0243     UMEASURE_PREFIX_ZEPTO = UMEASURE_PREFIX_ONE + -21,
0244 
0245     /**
0246      * SI prefix: yocto, 10^-24.
0247      *
0248      * @stable ICU 69
0249      */
0250     UMEASURE_PREFIX_YOCTO = UMEASURE_PREFIX_ONE + -24,
0251 
0252 #ifndef U_HIDE_INTERNAL_API
0253     /**
0254      * ICU use only.
0255      * Used to determine the set of base-10 SI prefixes.
0256      * @internal
0257      */
0258     UMEASURE_PREFIX_INTERNAL_MIN_SI = UMEASURE_PREFIX_YOCTO,
0259 #endif  // U_HIDE_INTERNAL_API
0260 
0261     // Cannot conditionalize the following with #ifndef U_HIDE_INTERNAL_API,
0262     // used in definitions of non-internal enum values
0263     /**
0264      * ICU use only.
0265      * Sets the arbitrary offset of the base-1024 binary prefixes' enum values.
0266      * @internal
0267      */
0268     UMEASURE_PREFIX_INTERNAL_ONE_BIN = -60,
0269 
0270     /**
0271      * Binary prefix: kibi, 1024^1.
0272      *
0273      * @stable ICU 69
0274      */
0275     UMEASURE_PREFIX_KIBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 1,
0276 
0277 #ifndef U_HIDE_INTERNAL_API
0278     /**
0279      * ICU use only.
0280      * Used to determine the set of base-1024 binary prefixes.
0281      * @internal
0282      */
0283     UMEASURE_PREFIX_INTERNAL_MIN_BIN = UMEASURE_PREFIX_KIBI,
0284 #endif  // U_HIDE_INTERNAL_API
0285 
0286     /**
0287      * Binary prefix: mebi, 1024^2.
0288      *
0289      * @stable ICU 69
0290      */
0291     UMEASURE_PREFIX_MEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 2,
0292 
0293     /**
0294      * Binary prefix: gibi, 1024^3.
0295      *
0296      * @stable ICU 69
0297      */
0298     UMEASURE_PREFIX_GIBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 3,
0299 
0300     /**
0301      * Binary prefix: tebi, 1024^4.
0302      *
0303      * @stable ICU 69
0304      */
0305     UMEASURE_PREFIX_TEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 4,
0306 
0307     /**
0308      * Binary prefix: pebi, 1024^5.
0309      *
0310      * @stable ICU 69
0311      */
0312     UMEASURE_PREFIX_PEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 5,
0313 
0314     /**
0315      * Binary prefix: exbi, 1024^6.
0316      *
0317      * @stable ICU 69
0318      */
0319     UMEASURE_PREFIX_EXBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 6,
0320 
0321     /**
0322      * Binary prefix: zebi, 1024^7.
0323      *
0324      * @stable ICU 69
0325      */
0326     UMEASURE_PREFIX_ZEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 7,
0327 
0328     /**
0329      * Binary prefix: yobi, 1024^8.
0330      *
0331      * @stable ICU 69
0332      */
0333     UMEASURE_PREFIX_YOBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 8,
0334 
0335 #ifndef U_HIDE_INTERNAL_API
0336     /**
0337      * ICU use only.
0338      * Used to determine the set of base-1024 binary prefixes.
0339      * @internal
0340      */
0341     UMEASURE_PREFIX_INTERNAL_MAX_BIN = UMEASURE_PREFIX_YOBI,
0342 #endif  // U_HIDE_INTERNAL_API
0343 } UMeasurePrefix;
0344 
0345 /**
0346  * Returns the base of the factor associated with the given unit prefix: the
0347  * base is 10 for SI prefixes (kilo, micro) and 1024 for binary prefixes (kibi,
0348  * mebi).
0349  *
0350  * @stable ICU 69
0351  */
0352 U_CAPI int32_t U_EXPORT2 umeas_getPrefixBase(UMeasurePrefix unitPrefix);
0353 
0354 /**
0355  * Returns the exponent of the factor associated with the given unit prefix, for
0356  * example 3 for kilo, -6 for micro, 1 for kibi, 2 for mebi, 3 for gibi.
0357  *
0358  * @stable ICU 69
0359  */
0360 U_CAPI int32_t U_EXPORT2 umeas_getPrefixPower(UMeasurePrefix unitPrefix);
0361 
0362 /**
0363  * A unit such as length, mass, volume, currency, etc.  A unit is
0364  * coupled with a numeric amount to produce a Measure.
0365  *
0366  * @author Alan Liu
0367  * @stable ICU 3.0
0368  */
0369 class U_I18N_API MeasureUnit: public UObject {
0370  public:
0371 
0372     /**
0373      * Default constructor.
0374      * Populates the instance with the base dimensionless unit, which means that there will be
0375      * no unit on the formatted number.
0376      * @stable ICU 3.0
0377      */
0378     MeasureUnit();
0379 
0380     /**
0381      * Copy constructor.
0382      * @stable ICU 3.0
0383      */
0384     MeasureUnit(const MeasureUnit &other);
0385 
0386     /**
0387      * Move constructor.
0388      * @stable ICU 67
0389      */
0390     MeasureUnit(MeasureUnit &&other) noexcept;
0391 
0392     /**
0393      * Construct a MeasureUnit from a CLDR Core Unit Identifier, defined in UTS
0394      * 35. (Core unit identifiers and mixed unit identifiers are supported, long
0395      * unit identifiers are not.) Validates and canonicalizes the identifier.
0396      *
0397      * <pre>
0398      * MeasureUnit example = MeasureUnit::forIdentifier("furlong-per-nanosecond")
0399      * </pre>
0400      *
0401      * @param identifier The CLDR Unit Identifier.
0402      * @param status Set if the identifier is invalid.
0403      * @stable ICU 67
0404      */
0405     static MeasureUnit forIdentifier(StringPiece identifier, UErrorCode& status);
0406 
0407     /**
0408      * Copy assignment operator.
0409      * @stable ICU 3.0
0410      */
0411     MeasureUnit &operator=(const MeasureUnit &other);
0412 
0413     /**
0414      * Move assignment operator.
0415      * @stable ICU 67
0416      */
0417     MeasureUnit &operator=(MeasureUnit &&other) noexcept;
0418 
0419     /**
0420      * Returns a polymorphic clone of this object.  The result will
0421      * have the same class as returned by getDynamicClassID().
0422      * @stable ICU 3.0
0423      */
0424     virtual MeasureUnit* clone() const;
0425 
0426     /**
0427      * Destructor
0428      * @stable ICU 3.0
0429      */
0430     virtual ~MeasureUnit();
0431 
0432     /**
0433      * Equality operator.  Return true if this object is equal
0434      * to the given object.
0435      * @stable ICU 3.0
0436      */
0437     virtual bool operator==(const UObject& other) const;
0438 
0439     /**
0440      * Inequality operator.  Return true if this object is not equal
0441      * to the given object.
0442      * @stable ICU 53
0443      */
0444     bool operator!=(const UObject& other) const {
0445         return !(*this == other);
0446     }
0447 
0448     /**
0449      * Get the type.
0450      *
0451      * If the unit does not have a type, the empty string is returned.
0452      *
0453      * @stable ICU 53
0454      */
0455     const char *getType() const;
0456 
0457     /**
0458      * Get the sub type.
0459      *
0460      * If the unit does not have a subtype, the empty string is returned.
0461      *
0462      * @stable ICU 53
0463      */
0464     const char *getSubtype() const;
0465 
0466     /**
0467      * Get CLDR Unit Identifier for this MeasureUnit, as defined in UTS 35.
0468      *
0469      * @return The string form of this unit, owned by this MeasureUnit.
0470      * @stable ICU 67
0471      */
0472     const char* getIdentifier() const;
0473 
0474     /**
0475      * Compute the complexity of the unit. See UMeasureUnitComplexity for more information.
0476      *
0477      * @param status Set if an error occurs.
0478      * @return The unit complexity.
0479      * @stable ICU 67
0480      */
0481     UMeasureUnitComplexity getComplexity(UErrorCode& status) const;
0482 
0483     /**
0484      * Creates a MeasureUnit which is this SINGLE unit augmented with the specified prefix.
0485      * For example, UMEASURE_PREFIX_KILO for "kilo", or UMEASURE_PREFIX_KIBI for "kibi".
0486      *
0487      * There is sufficient locale data to format all standard prefixes.
0488      *
0489      * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an error will
0490      * occur. For more information, see UMeasureUnitComplexity.
0491      *
0492      * @param prefix The prefix, from UMeasurePrefix.
0493      * @param status Set if this is not a SINGLE unit or if another error occurs.
0494      * @return A new SINGLE unit.
0495      * @stable ICU 69
0496      */
0497     MeasureUnit withPrefix(UMeasurePrefix prefix, UErrorCode& status) const;
0498 
0499     /**
0500      * Returns the current SI or binary prefix of this SINGLE unit. For example,
0501      * if the unit has the prefix "kilo", then UMEASURE_PREFIX_KILO is
0502      * returned.
0503      *
0504      * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an error will
0505      * occur. For more information, see UMeasureUnitComplexity.
0506      *
0507      * @param status Set if this is not a SINGLE unit or if another error occurs.
0508      * @return The prefix of this SINGLE unit, from UMeasurePrefix.
0509      * @see umeas_getPrefixBase
0510      * @see umeas_getPrefixPower
0511      * @stable ICU 69
0512      */
0513     UMeasurePrefix getPrefix(UErrorCode& status) const;
0514 
0515     /**
0516      * Creates a MeasureUnit which is this SINGLE unit augmented with the specified dimensionality
0517      * (power). For example, if dimensionality is 2, the unit will be squared.
0518      *
0519      * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an error will
0520      * occur. For more information, see UMeasureUnitComplexity.
0521      *
0522      * For the base dimensionless unit, withDimensionality does nothing.
0523      *
0524      * @param dimensionality The dimensionality (power).
0525      * @param status Set if this is not a SINGLE unit or if another error occurs.
0526      * @return A new SINGLE unit.
0527      * @stable ICU 67
0528      */
0529     MeasureUnit withDimensionality(int32_t dimensionality, UErrorCode& status) const;
0530 
0531     /**
0532      * Gets the dimensionality (power) of this MeasureUnit. For example, if the unit is square,
0533      * then 2 is returned.
0534      *
0535      * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an error will
0536      * occur. For more information, see UMeasureUnitComplexity.
0537      *
0538      * For the base dimensionless unit, getDimensionality returns 0.
0539      *
0540      * @param status Set if this is not a SINGLE unit or if another error occurs.
0541      * @return The dimensionality (power) of this simple unit.
0542      * @stable ICU 67
0543      */
0544     int32_t getDimensionality(UErrorCode& status) const;
0545 
0546     /**
0547      * Gets the reciprocal of this MeasureUnit, with the numerator and denominator flipped.
0548      *
0549      * For example, if the receiver is "meter-per-second", the unit "second-per-meter" is returned.
0550      *
0551      * NOTE: Only works on SINGLE and COMPOUND units. If this is a MIXED unit, an error will
0552      * occur. For more information, see UMeasureUnitComplexity.
0553      *
0554      * @param status Set if this is a MIXED unit or if another error occurs.
0555      * @return The reciprocal of the target unit.
0556      * @stable ICU 67
0557      */
0558     MeasureUnit reciprocal(UErrorCode& status) const;
0559 
0560     /**
0561      * Gets the product of this unit with another unit. This is a way to build units from
0562      * constituent parts.
0563      *
0564      * The numerator and denominator are preserved through this operation.
0565      *
0566      * For example, if the receiver is "kilowatt" and the argument is "hour-per-day", then the
0567      * unit "kilowatt-hour-per-day" is returned.
0568      *
0569      * NOTE: Only works on SINGLE and COMPOUND units. If either unit (receiver and argument) is a
0570      * MIXED unit, an error will occur. For more information, see UMeasureUnitComplexity.
0571      *
0572      * @param other The MeasureUnit to multiply with the target.
0573      * @param status Set if this or other is a MIXED unit or if another error occurs.
0574      * @return The product of the target unit with the provided unit.
0575      * @stable ICU 67
0576      */
0577     MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;
0578 
0579     /**
0580      * Gets the list of SINGLE units contained within a MIXED or COMPOUND unit.
0581      *
0582      * Examples:
0583      * - Given "meter-kilogram-per-second", three units will be returned: "meter",
0584      *   "kilogram", and "per-second".
0585      * - Given "hour+minute+second", three units will be returned: "hour", "minute",
0586      *   and "second".
0587      *
0588      * If this is a SINGLE unit, an array of length 1 will be returned.
0589      *
0590      * @param status Set if an error occurs.
0591      * @return A pair with the list of units as a LocalArray and the number of units in the list.
0592      * @stable ICU 68
0593      */
0594     inline std::pair<LocalArray<MeasureUnit>, int32_t> splitToSingleUnits(UErrorCode& status) const;
0595 
0596     /**
0597      * getAvailable gets all of the available units.
0598      * If there are too many units to fit into destCapacity then the
0599      * error code is set to U_BUFFER_OVERFLOW_ERROR.
0600      *
0601      * @param destArray destination buffer.
0602      * @param destCapacity number of MeasureUnit instances available at dest.
0603      * @param errorCode ICU error code.
0604      * @return number of available units.
0605      * @stable ICU 53
0606      */
0607     static int32_t getAvailable(
0608             MeasureUnit *destArray,
0609             int32_t destCapacity,
0610             UErrorCode &errorCode);
0611 
0612     /**
0613      * getAvailable gets all of the available units for a specific type.
0614      * If there are too many units to fit into destCapacity then the
0615      * error code is set to U_BUFFER_OVERFLOW_ERROR.
0616      *
0617      * @param type the type
0618      * @param destArray destination buffer.
0619      * @param destCapacity number of MeasureUnit instances available at dest.
0620      * @param errorCode ICU error code.
0621      * @return number of available units for type.
0622      * @stable ICU 53
0623      */
0624     static int32_t getAvailable(
0625             const char *type,
0626             MeasureUnit *destArray,
0627             int32_t destCapacity,
0628             UErrorCode &errorCode);
0629 
0630     /**
0631      * getAvailableTypes gets all of the available types. Caller owns the
0632      * returned StringEnumeration and must delete it when finished using it.
0633      *
0634      * @param errorCode ICU error code.
0635      * @return the types.
0636      * @stable ICU 53
0637      */
0638     static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
0639 
0640     /**
0641      * Return the class ID for this class. This is useful only for comparing to
0642      * a return value from getDynamicClassID(). For example:
0643      * <pre>
0644      * .   Base* polymorphic_pointer = createPolymorphicObject();
0645      * .   if (polymorphic_pointer->getDynamicClassID() ==
0646      * .       Derived::getStaticClassID()) ...
0647      * </pre>
0648      * @return          The class ID for all objects of this class.
0649      * @stable ICU 53
0650      */
0651     static UClassID U_EXPORT2 getStaticClassID(void);
0652 
0653     /**
0654      * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
0655      * method is to implement a simple version of RTTI, since not all C++
0656      * compilers support genuine RTTI. Polymorphic operator==() and clone()
0657      * methods call this method.
0658      *
0659      * @return          The class ID for this object. All objects of a
0660      *                  given class have the same class ID.  Objects of
0661      *                  other classes have different class IDs.
0662      * @stable ICU 53
0663      */
0664     virtual UClassID getDynamicClassID(void) const override;
0665 
0666 #ifndef U_HIDE_INTERNAL_API
0667     /**
0668      * ICU use only.
0669      * Returns associated array index for this measure unit.
0670      * @internal
0671      */
0672     int32_t getOffset() const;
0673 #endif /* U_HIDE_INTERNAL_API */
0674 
0675 // All code between the "Start generated createXXX methods" comment and
0676 // the "End generated createXXX methods" comment is auto generated code
0677 // and must not be edited manually. For instructions on how to correctly
0678 // update this code, refer to:
0679 // docs/processes/release/tasks/updating-measure-unit.md
0680 //
0681 // Start generated createXXX methods
0682 
0683     /**
0684      * Returns by pointer, unit of acceleration: g-force.
0685      * Caller owns returned value and must free it.
0686      * Also see {@link #getGForce()}.
0687      * @param status ICU error code.
0688      * @stable ICU 53
0689      */
0690     static MeasureUnit *createGForce(UErrorCode &status);
0691 
0692     /**
0693      * Returns by value, unit of acceleration: g-force.
0694      * Also see {@link #createGForce()}.
0695      * @stable ICU 64
0696      */
0697     static MeasureUnit getGForce();
0698 
0699     /**
0700      * Returns by pointer, unit of acceleration: meter-per-square-second.
0701      * Caller owns returned value and must free it.
0702      * Also see {@link #getMeterPerSecondSquared()}.
0703      * @param status ICU error code.
0704      * @stable ICU 54
0705      */
0706     static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
0707 
0708     /**
0709      * Returns by value, unit of acceleration: meter-per-square-second.
0710      * Also see {@link #createMeterPerSecondSquared()}.
0711      * @stable ICU 64
0712      */
0713     static MeasureUnit getMeterPerSecondSquared();
0714 
0715     /**
0716      * Returns by pointer, unit of angle: arc-minute.
0717      * Caller owns returned value and must free it.
0718      * Also see {@link #getArcMinute()}.
0719      * @param status ICU error code.
0720      * @stable ICU 53
0721      */
0722     static MeasureUnit *createArcMinute(UErrorCode &status);
0723 
0724     /**
0725      * Returns by value, unit of angle: arc-minute.
0726      * Also see {@link #createArcMinute()}.
0727      * @stable ICU 64
0728      */
0729     static MeasureUnit getArcMinute();
0730 
0731     /**
0732      * Returns by pointer, unit of angle: arc-second.
0733      * Caller owns returned value and must free it.
0734      * Also see {@link #getArcSecond()}.
0735      * @param status ICU error code.
0736      * @stable ICU 53
0737      */
0738     static MeasureUnit *createArcSecond(UErrorCode &status);
0739 
0740     /**
0741      * Returns by value, unit of angle: arc-second.
0742      * Also see {@link #createArcSecond()}.
0743      * @stable ICU 64
0744      */
0745     static MeasureUnit getArcSecond();
0746 
0747     /**
0748      * Returns by pointer, unit of angle: degree.
0749      * Caller owns returned value and must free it.
0750      * Also see {@link #getDegree()}.
0751      * @param status ICU error code.
0752      * @stable ICU 53
0753      */
0754     static MeasureUnit *createDegree(UErrorCode &status);
0755 
0756     /**
0757      * Returns by value, unit of angle: degree.
0758      * Also see {@link #createDegree()}.
0759      * @stable ICU 64
0760      */
0761     static MeasureUnit getDegree();
0762 
0763     /**
0764      * Returns by pointer, unit of angle: radian.
0765      * Caller owns returned value and must free it.
0766      * Also see {@link #getRadian()}.
0767      * @param status ICU error code.
0768      * @stable ICU 54
0769      */
0770     static MeasureUnit *createRadian(UErrorCode &status);
0771 
0772     /**
0773      * Returns by value, unit of angle: radian.
0774      * Also see {@link #createRadian()}.
0775      * @stable ICU 64
0776      */
0777     static MeasureUnit getRadian();
0778 
0779     /**
0780      * Returns by pointer, unit of angle: revolution.
0781      * Caller owns returned value and must free it.
0782      * Also see {@link #getRevolutionAngle()}.
0783      * @param status ICU error code.
0784      * @stable ICU 56
0785      */
0786     static MeasureUnit *createRevolutionAngle(UErrorCode &status);
0787 
0788     /**
0789      * Returns by value, unit of angle: revolution.
0790      * Also see {@link #createRevolutionAngle()}.
0791      * @stable ICU 64
0792      */
0793     static MeasureUnit getRevolutionAngle();
0794 
0795     /**
0796      * Returns by pointer, unit of area: acre.
0797      * Caller owns returned value and must free it.
0798      * Also see {@link #getAcre()}.
0799      * @param status ICU error code.
0800      * @stable ICU 53
0801      */
0802     static MeasureUnit *createAcre(UErrorCode &status);
0803 
0804     /**
0805      * Returns by value, unit of area: acre.
0806      * Also see {@link #createAcre()}.
0807      * @stable ICU 64
0808      */
0809     static MeasureUnit getAcre();
0810 
0811     /**
0812      * Returns by pointer, unit of area: dunam.
0813      * Caller owns returned value and must free it.
0814      * Also see {@link #getDunam()}.
0815      * @param status ICU error code.
0816      * @stable ICU 64
0817      */
0818     static MeasureUnit *createDunam(UErrorCode &status);
0819 
0820     /**
0821      * Returns by value, unit of area: dunam.
0822      * Also see {@link #createDunam()}.
0823      * @stable ICU 64
0824      */
0825     static MeasureUnit getDunam();
0826 
0827     /**
0828      * Returns by pointer, unit of area: hectare.
0829      * Caller owns returned value and must free it.
0830      * Also see {@link #getHectare()}.
0831      * @param status ICU error code.
0832      * @stable ICU 53
0833      */
0834     static MeasureUnit *createHectare(UErrorCode &status);
0835 
0836     /**
0837      * Returns by value, unit of area: hectare.
0838      * Also see {@link #createHectare()}.
0839      * @stable ICU 64
0840      */
0841     static MeasureUnit getHectare();
0842 
0843     /**
0844      * Returns by pointer, unit of area: square-centimeter.
0845      * Caller owns returned value and must free it.
0846      * Also see {@link #getSquareCentimeter()}.
0847      * @param status ICU error code.
0848      * @stable ICU 54
0849      */
0850     static MeasureUnit *createSquareCentimeter(UErrorCode &status);
0851 
0852     /**
0853      * Returns by value, unit of area: square-centimeter.
0854      * Also see {@link #createSquareCentimeter()}.
0855      * @stable ICU 64
0856      */
0857     static MeasureUnit getSquareCentimeter();
0858 
0859     /**
0860      * Returns by pointer, unit of area: square-foot.
0861      * Caller owns returned value and must free it.
0862      * Also see {@link #getSquareFoot()}.
0863      * @param status ICU error code.
0864      * @stable ICU 53
0865      */
0866     static MeasureUnit *createSquareFoot(UErrorCode &status);
0867 
0868     /**
0869      * Returns by value, unit of area: square-foot.
0870      * Also see {@link #createSquareFoot()}.
0871      * @stable ICU 64
0872      */
0873     static MeasureUnit getSquareFoot();
0874 
0875     /**
0876      * Returns by pointer, unit of area: square-inch.
0877      * Caller owns returned value and must free it.
0878      * Also see {@link #getSquareInch()}.
0879      * @param status ICU error code.
0880      * @stable ICU 54
0881      */
0882     static MeasureUnit *createSquareInch(UErrorCode &status);
0883 
0884     /**
0885      * Returns by value, unit of area: square-inch.
0886      * Also see {@link #createSquareInch()}.
0887      * @stable ICU 64
0888      */
0889     static MeasureUnit getSquareInch();
0890 
0891     /**
0892      * Returns by pointer, unit of area: square-kilometer.
0893      * Caller owns returned value and must free it.
0894      * Also see {@link #getSquareKilometer()}.
0895      * @param status ICU error code.
0896      * @stable ICU 53
0897      */
0898     static MeasureUnit *createSquareKilometer(UErrorCode &status);
0899 
0900     /**
0901      * Returns by value, unit of area: square-kilometer.
0902      * Also see {@link #createSquareKilometer()}.
0903      * @stable ICU 64
0904      */
0905     static MeasureUnit getSquareKilometer();
0906 
0907     /**
0908      * Returns by pointer, unit of area: square-meter.
0909      * Caller owns returned value and must free it.
0910      * Also see {@link #getSquareMeter()}.
0911      * @param status ICU error code.
0912      * @stable ICU 53
0913      */
0914     static MeasureUnit *createSquareMeter(UErrorCode &status);
0915 
0916     /**
0917      * Returns by value, unit of area: square-meter.
0918      * Also see {@link #createSquareMeter()}.
0919      * @stable ICU 64
0920      */
0921     static MeasureUnit getSquareMeter();
0922 
0923     /**
0924      * Returns by pointer, unit of area: square-mile.
0925      * Caller owns returned value and must free it.
0926      * Also see {@link #getSquareMile()}.
0927      * @param status ICU error code.
0928      * @stable ICU 53
0929      */
0930     static MeasureUnit *createSquareMile(UErrorCode &status);
0931 
0932     /**
0933      * Returns by value, unit of area: square-mile.
0934      * Also see {@link #createSquareMile()}.
0935      * @stable ICU 64
0936      */
0937     static MeasureUnit getSquareMile();
0938 
0939     /**
0940      * Returns by pointer, unit of area: square-yard.
0941      * Caller owns returned value and must free it.
0942      * Also see {@link #getSquareYard()}.
0943      * @param status ICU error code.
0944      * @stable ICU 54
0945      */
0946     static MeasureUnit *createSquareYard(UErrorCode &status);
0947 
0948     /**
0949      * Returns by value, unit of area: square-yard.
0950      * Also see {@link #createSquareYard()}.
0951      * @stable ICU 64
0952      */
0953     static MeasureUnit getSquareYard();
0954 
0955     /**
0956      * Returns by pointer, unit of concentr: item.
0957      * Caller owns returned value and must free it.
0958      * Also see {@link #getItem()}.
0959      * @param status ICU error code.
0960      * @stable ICU 70
0961      */
0962     static MeasureUnit *createItem(UErrorCode &status);
0963 
0964     /**
0965      * Returns by value, unit of concentr: item.
0966      * Also see {@link #createItem()}.
0967      * @stable ICU 70
0968      */
0969     static MeasureUnit getItem();
0970 
0971     /**
0972      * Returns by pointer, unit of concentr: karat.
0973      * Caller owns returned value and must free it.
0974      * Also see {@link #getKarat()}.
0975      * @param status ICU error code.
0976      * @stable ICU 54
0977      */
0978     static MeasureUnit *createKarat(UErrorCode &status);
0979 
0980     /**
0981      * Returns by value, unit of concentr: karat.
0982      * Also see {@link #createKarat()}.
0983      * @stable ICU 64
0984      */
0985     static MeasureUnit getKarat();
0986 
0987     /**
0988      * Returns by pointer, unit of concentr: milligram-ofglucose-per-deciliter.
0989      * Caller owns returned value and must free it.
0990      * Also see {@link #getMilligramOfglucosePerDeciliter()}.
0991      * @param status ICU error code.
0992      * @stable ICU 69
0993      */
0994     static MeasureUnit *createMilligramOfglucosePerDeciliter(UErrorCode &status);
0995 
0996     /**
0997      * Returns by value, unit of concentr: milligram-ofglucose-per-deciliter.
0998      * Also see {@link #createMilligramOfglucosePerDeciliter()}.
0999      * @stable ICU 69
1000      */
1001     static MeasureUnit getMilligramOfglucosePerDeciliter();
1002 
1003     /**
1004      * Returns by pointer, unit of concentr: milligram-per-deciliter.
1005      * Caller owns returned value and must free it.
1006      * Also see {@link #getMilligramPerDeciliter()}.
1007      * @param status ICU error code.
1008      * @stable ICU 57
1009      */
1010     static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
1011 
1012     /**
1013      * Returns by value, unit of concentr: milligram-per-deciliter.
1014      * Also see {@link #createMilligramPerDeciliter()}.
1015      * @stable ICU 64
1016      */
1017     static MeasureUnit getMilligramPerDeciliter();
1018 
1019     /**
1020      * Returns by pointer, unit of concentr: millimole-per-liter.
1021      * Caller owns returned value and must free it.
1022      * Also see {@link #getMillimolePerLiter()}.
1023      * @param status ICU error code.
1024      * @stable ICU 57
1025      */
1026     static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
1027 
1028     /**
1029      * Returns by value, unit of concentr: millimole-per-liter.
1030      * Also see {@link #createMillimolePerLiter()}.
1031      * @stable ICU 64
1032      */
1033     static MeasureUnit getMillimolePerLiter();
1034 
1035     /**
1036      * Returns by pointer, unit of concentr: mole.
1037      * Caller owns returned value and must free it.
1038      * Also see {@link #getMole()}.
1039      * @param status ICU error code.
1040      * @stable ICU 64
1041      */
1042     static MeasureUnit *createMole(UErrorCode &status);
1043 
1044     /**
1045      * Returns by value, unit of concentr: mole.
1046      * Also see {@link #createMole()}.
1047      * @stable ICU 64
1048      */
1049     static MeasureUnit getMole();
1050 
1051     /**
1052      * Returns by pointer, unit of concentr: percent.
1053      * Caller owns returned value and must free it.
1054      * Also see {@link #getPercent()}.
1055      * @param status ICU error code.
1056      * @stable ICU 63
1057      */
1058     static MeasureUnit *createPercent(UErrorCode &status);
1059 
1060     /**
1061      * Returns by value, unit of concentr: percent.
1062      * Also see {@link #createPercent()}.
1063      * @stable ICU 64
1064      */
1065     static MeasureUnit getPercent();
1066 
1067     /**
1068      * Returns by pointer, unit of concentr: permille.
1069      * Caller owns returned value and must free it.
1070      * Also see {@link #getPermille()}.
1071      * @param status ICU error code.
1072      * @stable ICU 63
1073      */
1074     static MeasureUnit *createPermille(UErrorCode &status);
1075 
1076     /**
1077      * Returns by value, unit of concentr: permille.
1078      * Also see {@link #createPermille()}.
1079      * @stable ICU 64
1080      */
1081     static MeasureUnit getPermille();
1082 
1083     /**
1084      * Returns by pointer, unit of concentr: permillion.
1085      * Caller owns returned value and must free it.
1086      * Also see {@link #getPartPerMillion()}.
1087      * @param status ICU error code.
1088      * @stable ICU 57
1089      */
1090     static MeasureUnit *createPartPerMillion(UErrorCode &status);
1091 
1092     /**
1093      * Returns by value, unit of concentr: permillion.
1094      * Also see {@link #createPartPerMillion()}.
1095      * @stable ICU 64
1096      */
1097     static MeasureUnit getPartPerMillion();
1098 
1099     /**
1100      * Returns by pointer, unit of concentr: permyriad.
1101      * Caller owns returned value and must free it.
1102      * Also see {@link #getPermyriad()}.
1103      * @param status ICU error code.
1104      * @stable ICU 64
1105      */
1106     static MeasureUnit *createPermyriad(UErrorCode &status);
1107 
1108     /**
1109      * Returns by value, unit of concentr: permyriad.
1110      * Also see {@link #createPermyriad()}.
1111      * @stable ICU 64
1112      */
1113     static MeasureUnit getPermyriad();
1114 
1115     /**
1116      * Returns by pointer, unit of consumption: liter-per-100-kilometer.
1117      * Caller owns returned value and must free it.
1118      * Also see {@link #getLiterPer100Kilometers()}.
1119      * @param status ICU error code.
1120      * @stable ICU 56
1121      */
1122     static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
1123 
1124     /**
1125      * Returns by value, unit of consumption: liter-per-100-kilometer.
1126      * Also see {@link #createLiterPer100Kilometers()}.
1127      * @stable ICU 64
1128      */
1129     static MeasureUnit getLiterPer100Kilometers();
1130 
1131     /**
1132      * Returns by pointer, unit of consumption: liter-per-kilometer.
1133      * Caller owns returned value and must free it.
1134      * Also see {@link #getLiterPerKilometer()}.
1135      * @param status ICU error code.
1136      * @stable ICU 54
1137      */
1138     static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
1139 
1140     /**
1141      * Returns by value, unit of consumption: liter-per-kilometer.
1142      * Also see {@link #createLiterPerKilometer()}.
1143      * @stable ICU 64
1144      */
1145     static MeasureUnit getLiterPerKilometer();
1146 
1147     /**
1148      * Returns by pointer, unit of consumption: mile-per-gallon.
1149      * Caller owns returned value and must free it.
1150      * Also see {@link #getMilePerGallon()}.
1151      * @param status ICU error code.
1152      * @stable ICU 54
1153      */
1154     static MeasureUnit *createMilePerGallon(UErrorCode &status);
1155 
1156     /**
1157      * Returns by value, unit of consumption: mile-per-gallon.
1158      * Also see {@link #createMilePerGallon()}.
1159      * @stable ICU 64
1160      */
1161     static MeasureUnit getMilePerGallon();
1162 
1163     /**
1164      * Returns by pointer, unit of consumption: mile-per-gallon-imperial.
1165      * Caller owns returned value and must free it.
1166      * Also see {@link #getMilePerGallonImperial()}.
1167      * @param status ICU error code.
1168      * @stable ICU 57
1169      */
1170     static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
1171 
1172     /**
1173      * Returns by value, unit of consumption: mile-per-gallon-imperial.
1174      * Also see {@link #createMilePerGallonImperial()}.
1175      * @stable ICU 64
1176      */
1177     static MeasureUnit getMilePerGallonImperial();
1178 
1179     /**
1180      * Returns by pointer, unit of digital: bit.
1181      * Caller owns returned value and must free it.
1182      * Also see {@link #getBit()}.
1183      * @param status ICU error code.
1184      * @stable ICU 54
1185      */
1186     static MeasureUnit *createBit(UErrorCode &status);
1187 
1188     /**
1189      * Returns by value, unit of digital: bit.
1190      * Also see {@link #createBit()}.
1191      * @stable ICU 64
1192      */
1193     static MeasureUnit getBit();
1194 
1195     /**
1196      * Returns by pointer, unit of digital: byte.
1197      * Caller owns returned value and must free it.
1198      * Also see {@link #getByte()}.
1199      * @param status ICU error code.
1200      * @stable ICU 54
1201      */
1202     static MeasureUnit *createByte(UErrorCode &status);
1203 
1204     /**
1205      * Returns by value, unit of digital: byte.
1206      * Also see {@link #createByte()}.
1207      * @stable ICU 64
1208      */
1209     static MeasureUnit getByte();
1210 
1211     /**
1212      * Returns by pointer, unit of digital: gigabit.
1213      * Caller owns returned value and must free it.
1214      * Also see {@link #getGigabit()}.
1215      * @param status ICU error code.
1216      * @stable ICU 54
1217      */
1218     static MeasureUnit *createGigabit(UErrorCode &status);
1219 
1220     /**
1221      * Returns by value, unit of digital: gigabit.
1222      * Also see {@link #createGigabit()}.
1223      * @stable ICU 64
1224      */
1225     static MeasureUnit getGigabit();
1226 
1227     /**
1228      * Returns by pointer, unit of digital: gigabyte.
1229      * Caller owns returned value and must free it.
1230      * Also see {@link #getGigabyte()}.
1231      * @param status ICU error code.
1232      * @stable ICU 54
1233      */
1234     static MeasureUnit *createGigabyte(UErrorCode &status);
1235 
1236     /**
1237      * Returns by value, unit of digital: gigabyte.
1238      * Also see {@link #createGigabyte()}.
1239      * @stable ICU 64
1240      */
1241     static MeasureUnit getGigabyte();
1242 
1243     /**
1244      * Returns by pointer, unit of digital: kilobit.
1245      * Caller owns returned value and must free it.
1246      * Also see {@link #getKilobit()}.
1247      * @param status ICU error code.
1248      * @stable ICU 54
1249      */
1250     static MeasureUnit *createKilobit(UErrorCode &status);
1251 
1252     /**
1253      * Returns by value, unit of digital: kilobit.
1254      * Also see {@link #createKilobit()}.
1255      * @stable ICU 64
1256      */
1257     static MeasureUnit getKilobit();
1258 
1259     /**
1260      * Returns by pointer, unit of digital: kilobyte.
1261      * Caller owns returned value and must free it.
1262      * Also see {@link #getKilobyte()}.
1263      * @param status ICU error code.
1264      * @stable ICU 54
1265      */
1266     static MeasureUnit *createKilobyte(UErrorCode &status);
1267 
1268     /**
1269      * Returns by value, unit of digital: kilobyte.
1270      * Also see {@link #createKilobyte()}.
1271      * @stable ICU 64
1272      */
1273     static MeasureUnit getKilobyte();
1274 
1275     /**
1276      * Returns by pointer, unit of digital: megabit.
1277      * Caller owns returned value and must free it.
1278      * Also see {@link #getMegabit()}.
1279      * @param status ICU error code.
1280      * @stable ICU 54
1281      */
1282     static MeasureUnit *createMegabit(UErrorCode &status);
1283 
1284     /**
1285      * Returns by value, unit of digital: megabit.
1286      * Also see {@link #createMegabit()}.
1287      * @stable ICU 64
1288      */
1289     static MeasureUnit getMegabit();
1290 
1291     /**
1292      * Returns by pointer, unit of digital: megabyte.
1293      * Caller owns returned value and must free it.
1294      * Also see {@link #getMegabyte()}.
1295      * @param status ICU error code.
1296      * @stable ICU 54
1297      */
1298     static MeasureUnit *createMegabyte(UErrorCode &status);
1299 
1300     /**
1301      * Returns by value, unit of digital: megabyte.
1302      * Also see {@link #createMegabyte()}.
1303      * @stable ICU 64
1304      */
1305     static MeasureUnit getMegabyte();
1306 
1307     /**
1308      * Returns by pointer, unit of digital: petabyte.
1309      * Caller owns returned value and must free it.
1310      * Also see {@link #getPetabyte()}.
1311      * @param status ICU error code.
1312      * @stable ICU 63
1313      */
1314     static MeasureUnit *createPetabyte(UErrorCode &status);
1315 
1316     /**
1317      * Returns by value, unit of digital: petabyte.
1318      * Also see {@link #createPetabyte()}.
1319      * @stable ICU 64
1320      */
1321     static MeasureUnit getPetabyte();
1322 
1323     /**
1324      * Returns by pointer, unit of digital: terabit.
1325      * Caller owns returned value and must free it.
1326      * Also see {@link #getTerabit()}.
1327      * @param status ICU error code.
1328      * @stable ICU 54
1329      */
1330     static MeasureUnit *createTerabit(UErrorCode &status);
1331 
1332     /**
1333      * Returns by value, unit of digital: terabit.
1334      * Also see {@link #createTerabit()}.
1335      * @stable ICU 64
1336      */
1337     static MeasureUnit getTerabit();
1338 
1339     /**
1340      * Returns by pointer, unit of digital: terabyte.
1341      * Caller owns returned value and must free it.
1342      * Also see {@link #getTerabyte()}.
1343      * @param status ICU error code.
1344      * @stable ICU 54
1345      */
1346     static MeasureUnit *createTerabyte(UErrorCode &status);
1347 
1348     /**
1349      * Returns by value, unit of digital: terabyte.
1350      * Also see {@link #createTerabyte()}.
1351      * @stable ICU 64
1352      */
1353     static MeasureUnit getTerabyte();
1354 
1355     /**
1356      * Returns by pointer, unit of duration: century.
1357      * Caller owns returned value and must free it.
1358      * Also see {@link #getCentury()}.
1359      * @param status ICU error code.
1360      * @stable ICU 56
1361      */
1362     static MeasureUnit *createCentury(UErrorCode &status);
1363 
1364     /**
1365      * Returns by value, unit of duration: century.
1366      * Also see {@link #createCentury()}.
1367      * @stable ICU 64
1368      */
1369     static MeasureUnit getCentury();
1370 
1371     /**
1372      * Returns by pointer, unit of duration: day.
1373      * Caller owns returned value and must free it.
1374      * Also see {@link #getDay()}.
1375      * @param status ICU error code.
1376      * @stable ICU 53
1377      */
1378     static MeasureUnit *createDay(UErrorCode &status);
1379 
1380     /**
1381      * Returns by value, unit of duration: day.
1382      * Also see {@link #createDay()}.
1383      * @stable ICU 64
1384      */
1385     static MeasureUnit getDay();
1386 
1387     /**
1388      * Returns by pointer, unit of duration: day-person.
1389      * Caller owns returned value and must free it.
1390      * Also see {@link #getDayPerson()}.
1391      * @param status ICU error code.
1392      * @stable ICU 64
1393      */
1394     static MeasureUnit *createDayPerson(UErrorCode &status);
1395 
1396     /**
1397      * Returns by value, unit of duration: day-person.
1398      * Also see {@link #createDayPerson()}.
1399      * @stable ICU 64
1400      */
1401     static MeasureUnit getDayPerson();
1402 
1403     /**
1404      * Returns by pointer, unit of duration: decade.
1405      * Caller owns returned value and must free it.
1406      * Also see {@link #getDecade()}.
1407      * @param status ICU error code.
1408      * @stable ICU 65
1409      */
1410     static MeasureUnit *createDecade(UErrorCode &status);
1411 
1412     /**
1413      * Returns by value, unit of duration: decade.
1414      * Also see {@link #createDecade()}.
1415      * @stable ICU 65
1416      */
1417     static MeasureUnit getDecade();
1418 
1419     /**
1420      * Returns by pointer, unit of duration: hour.
1421      * Caller owns returned value and must free it.
1422      * Also see {@link #getHour()}.
1423      * @param status ICU error code.
1424      * @stable ICU 53
1425      */
1426     static MeasureUnit *createHour(UErrorCode &status);
1427 
1428     /**
1429      * Returns by value, unit of duration: hour.
1430      * Also see {@link #createHour()}.
1431      * @stable ICU 64
1432      */
1433     static MeasureUnit getHour();
1434 
1435     /**
1436      * Returns by pointer, unit of duration: microsecond.
1437      * Caller owns returned value and must free it.
1438      * Also see {@link #getMicrosecond()}.
1439      * @param status ICU error code.
1440      * @stable ICU 54
1441      */
1442     static MeasureUnit *createMicrosecond(UErrorCode &status);
1443 
1444     /**
1445      * Returns by value, unit of duration: microsecond.
1446      * Also see {@link #createMicrosecond()}.
1447      * @stable ICU 64
1448      */
1449     static MeasureUnit getMicrosecond();
1450 
1451     /**
1452      * Returns by pointer, unit of duration: millisecond.
1453      * Caller owns returned value and must free it.
1454      * Also see {@link #getMillisecond()}.
1455      * @param status ICU error code.
1456      * @stable ICU 53
1457      */
1458     static MeasureUnit *createMillisecond(UErrorCode &status);
1459 
1460     /**
1461      * Returns by value, unit of duration: millisecond.
1462      * Also see {@link #createMillisecond()}.
1463      * @stable ICU 64
1464      */
1465     static MeasureUnit getMillisecond();
1466 
1467     /**
1468      * Returns by pointer, unit of duration: minute.
1469      * Caller owns returned value and must free it.
1470      * Also see {@link #getMinute()}.
1471      * @param status ICU error code.
1472      * @stable ICU 53
1473      */
1474     static MeasureUnit *createMinute(UErrorCode &status);
1475 
1476     /**
1477      * Returns by value, unit of duration: minute.
1478      * Also see {@link #createMinute()}.
1479      * @stable ICU 64
1480      */
1481     static MeasureUnit getMinute();
1482 
1483     /**
1484      * Returns by pointer, unit of duration: month.
1485      * Caller owns returned value and must free it.
1486      * Also see {@link #getMonth()}.
1487      * @param status ICU error code.
1488      * @stable ICU 53
1489      */
1490     static MeasureUnit *createMonth(UErrorCode &status);
1491 
1492     /**
1493      * Returns by value, unit of duration: month.
1494      * Also see {@link #createMonth()}.
1495      * @stable ICU 64
1496      */
1497     static MeasureUnit getMonth();
1498 
1499     /**
1500      * Returns by pointer, unit of duration: month-person.
1501      * Caller owns returned value and must free it.
1502      * Also see {@link #getMonthPerson()}.
1503      * @param status ICU error code.
1504      * @stable ICU 64
1505      */
1506     static MeasureUnit *createMonthPerson(UErrorCode &status);
1507 
1508     /**
1509      * Returns by value, unit of duration: month-person.
1510      * Also see {@link #createMonthPerson()}.
1511      * @stable ICU 64
1512      */
1513     static MeasureUnit getMonthPerson();
1514 
1515     /**
1516      * Returns by pointer, unit of duration: nanosecond.
1517      * Caller owns returned value and must free it.
1518      * Also see {@link #getNanosecond()}.
1519      * @param status ICU error code.
1520      * @stable ICU 54
1521      */
1522     static MeasureUnit *createNanosecond(UErrorCode &status);
1523 
1524     /**
1525      * Returns by value, unit of duration: nanosecond.
1526      * Also see {@link #createNanosecond()}.
1527      * @stable ICU 64
1528      */
1529     static MeasureUnit getNanosecond();
1530 
1531     /**
1532      * Returns by pointer, unit of duration: quarter.
1533      * Caller owns returned value and must free it.
1534      * Also see {@link #getQuarter()}.
1535      * @param status ICU error code.
1536      * @stable ICU 72
1537      */
1538     static MeasureUnit *createQuarter(UErrorCode &status);
1539 
1540     /**
1541      * Returns by value, unit of duration: quarter.
1542      * Also see {@link #createQuarter()}.
1543      * @stable ICU 72
1544      */
1545     static MeasureUnit getQuarter();
1546 
1547     /**
1548      * Returns by pointer, unit of duration: second.
1549      * Caller owns returned value and must free it.
1550      * Also see {@link #getSecond()}.
1551      * @param status ICU error code.
1552      * @stable ICU 53
1553      */
1554     static MeasureUnit *createSecond(UErrorCode &status);
1555 
1556     /**
1557      * Returns by value, unit of duration: second.
1558      * Also see {@link #createSecond()}.
1559      * @stable ICU 64
1560      */
1561     static MeasureUnit getSecond();
1562 
1563     /**
1564      * Returns by pointer, unit of duration: week.
1565      * Caller owns returned value and must free it.
1566      * Also see {@link #getWeek()}.
1567      * @param status ICU error code.
1568      * @stable ICU 53
1569      */
1570     static MeasureUnit *createWeek(UErrorCode &status);
1571 
1572     /**
1573      * Returns by value, unit of duration: week.
1574      * Also see {@link #createWeek()}.
1575      * @stable ICU 64
1576      */
1577     static MeasureUnit getWeek();
1578 
1579     /**
1580      * Returns by pointer, unit of duration: week-person.
1581      * Caller owns returned value and must free it.
1582      * Also see {@link #getWeekPerson()}.
1583      * @param status ICU error code.
1584      * @stable ICU 64
1585      */
1586     static MeasureUnit *createWeekPerson(UErrorCode &status);
1587 
1588     /**
1589      * Returns by value, unit of duration: week-person.
1590      * Also see {@link #createWeekPerson()}.
1591      * @stable ICU 64
1592      */
1593     static MeasureUnit getWeekPerson();
1594 
1595     /**
1596      * Returns by pointer, unit of duration: year.
1597      * Caller owns returned value and must free it.
1598      * Also see {@link #getYear()}.
1599      * @param status ICU error code.
1600      * @stable ICU 53
1601      */
1602     static MeasureUnit *createYear(UErrorCode &status);
1603 
1604     /**
1605      * Returns by value, unit of duration: year.
1606      * Also see {@link #createYear()}.
1607      * @stable ICU 64
1608      */
1609     static MeasureUnit getYear();
1610 
1611     /**
1612      * Returns by pointer, unit of duration: year-person.
1613      * Caller owns returned value and must free it.
1614      * Also see {@link #getYearPerson()}.
1615      * @param status ICU error code.
1616      * @stable ICU 64
1617      */
1618     static MeasureUnit *createYearPerson(UErrorCode &status);
1619 
1620     /**
1621      * Returns by value, unit of duration: year-person.
1622      * Also see {@link #createYearPerson()}.
1623      * @stable ICU 64
1624      */
1625     static MeasureUnit getYearPerson();
1626 
1627     /**
1628      * Returns by pointer, unit of electric: ampere.
1629      * Caller owns returned value and must free it.
1630      * Also see {@link #getAmpere()}.
1631      * @param status ICU error code.
1632      * @stable ICU 54
1633      */
1634     static MeasureUnit *createAmpere(UErrorCode &status);
1635 
1636     /**
1637      * Returns by value, unit of electric: ampere.
1638      * Also see {@link #createAmpere()}.
1639      * @stable ICU 64
1640      */
1641     static MeasureUnit getAmpere();
1642 
1643     /**
1644      * Returns by pointer, unit of electric: milliampere.
1645      * Caller owns returned value and must free it.
1646      * Also see {@link #getMilliampere()}.
1647      * @param status ICU error code.
1648      * @stable ICU 54
1649      */
1650     static MeasureUnit *createMilliampere(UErrorCode &status);
1651 
1652     /**
1653      * Returns by value, unit of electric: milliampere.
1654      * Also see {@link #createMilliampere()}.
1655      * @stable ICU 64
1656      */
1657     static MeasureUnit getMilliampere();
1658 
1659     /**
1660      * Returns by pointer, unit of electric: ohm.
1661      * Caller owns returned value and must free it.
1662      * Also see {@link #getOhm()}.
1663      * @param status ICU error code.
1664      * @stable ICU 54
1665      */
1666     static MeasureUnit *createOhm(UErrorCode &status);
1667 
1668     /**
1669      * Returns by value, unit of electric: ohm.
1670      * Also see {@link #createOhm()}.
1671      * @stable ICU 64
1672      */
1673     static MeasureUnit getOhm();
1674 
1675     /**
1676      * Returns by pointer, unit of electric: volt.
1677      * Caller owns returned value and must free it.
1678      * Also see {@link #getVolt()}.
1679      * @param status ICU error code.
1680      * @stable ICU 54
1681      */
1682     static MeasureUnit *createVolt(UErrorCode &status);
1683 
1684     /**
1685      * Returns by value, unit of electric: volt.
1686      * Also see {@link #createVolt()}.
1687      * @stable ICU 64
1688      */
1689     static MeasureUnit getVolt();
1690 
1691     /**
1692      * Returns by pointer, unit of energy: british-thermal-unit.
1693      * Caller owns returned value and must free it.
1694      * Also see {@link #getBritishThermalUnit()}.
1695      * @param status ICU error code.
1696      * @stable ICU 64
1697      */
1698     static MeasureUnit *createBritishThermalUnit(UErrorCode &status);
1699 
1700     /**
1701      * Returns by value, unit of energy: british-thermal-unit.
1702      * Also see {@link #createBritishThermalUnit()}.
1703      * @stable ICU 64
1704      */
1705     static MeasureUnit getBritishThermalUnit();
1706 
1707     /**
1708      * Returns by pointer, unit of energy: calorie.
1709      * Caller owns returned value and must free it.
1710      * Also see {@link #getCalorie()}.
1711      * @param status ICU error code.
1712      * @stable ICU 54
1713      */
1714     static MeasureUnit *createCalorie(UErrorCode &status);
1715 
1716     /**
1717      * Returns by value, unit of energy: calorie.
1718      * Also see {@link #createCalorie()}.
1719      * @stable ICU 64
1720      */
1721     static MeasureUnit getCalorie();
1722 
1723     /**
1724      * Returns by pointer, unit of energy: electronvolt.
1725      * Caller owns returned value and must free it.
1726      * Also see {@link #getElectronvolt()}.
1727      * @param status ICU error code.
1728      * @stable ICU 64
1729      */
1730     static MeasureUnit *createElectronvolt(UErrorCode &status);
1731 
1732     /**
1733      * Returns by value, unit of energy: electronvolt.
1734      * Also see {@link #createElectronvolt()}.
1735      * @stable ICU 64
1736      */
1737     static MeasureUnit getElectronvolt();
1738 
1739     /**
1740      * Returns by pointer, unit of energy: foodcalorie.
1741      * Caller owns returned value and must free it.
1742      * Also see {@link #getFoodcalorie()}.
1743      * @param status ICU error code.
1744      * @stable ICU 54
1745      */
1746     static MeasureUnit *createFoodcalorie(UErrorCode &status);
1747 
1748     /**
1749      * Returns by value, unit of energy: foodcalorie.
1750      * Also see {@link #createFoodcalorie()}.
1751      * @stable ICU 64
1752      */
1753     static MeasureUnit getFoodcalorie();
1754 
1755     /**
1756      * Returns by pointer, unit of energy: joule.
1757      * Caller owns returned value and must free it.
1758      * Also see {@link #getJoule()}.
1759      * @param status ICU error code.
1760      * @stable ICU 54
1761      */
1762     static MeasureUnit *createJoule(UErrorCode &status);
1763 
1764     /**
1765      * Returns by value, unit of energy: joule.
1766      * Also see {@link #createJoule()}.
1767      * @stable ICU 64
1768      */
1769     static MeasureUnit getJoule();
1770 
1771     /**
1772      * Returns by pointer, unit of energy: kilocalorie.
1773      * Caller owns returned value and must free it.
1774      * Also see {@link #getKilocalorie()}.
1775      * @param status ICU error code.
1776      * @stable ICU 54
1777      */
1778     static MeasureUnit *createKilocalorie(UErrorCode &status);
1779 
1780     /**
1781      * Returns by value, unit of energy: kilocalorie.
1782      * Also see {@link #createKilocalorie()}.
1783      * @stable ICU 64
1784      */
1785     static MeasureUnit getKilocalorie();
1786 
1787     /**
1788      * Returns by pointer, unit of energy: kilojoule.
1789      * Caller owns returned value and must free it.
1790      * Also see {@link #getKilojoule()}.
1791      * @param status ICU error code.
1792      * @stable ICU 54
1793      */
1794     static MeasureUnit *createKilojoule(UErrorCode &status);
1795 
1796     /**
1797      * Returns by value, unit of energy: kilojoule.
1798      * Also see {@link #createKilojoule()}.
1799      * @stable ICU 64
1800      */
1801     static MeasureUnit getKilojoule();
1802 
1803     /**
1804      * Returns by pointer, unit of energy: kilowatt-hour.
1805      * Caller owns returned value and must free it.
1806      * Also see {@link #getKilowattHour()}.
1807      * @param status ICU error code.
1808      * @stable ICU 54
1809      */
1810     static MeasureUnit *createKilowattHour(UErrorCode &status);
1811 
1812     /**
1813      * Returns by value, unit of energy: kilowatt-hour.
1814      * Also see {@link #createKilowattHour()}.
1815      * @stable ICU 64
1816      */
1817     static MeasureUnit getKilowattHour();
1818 
1819     /**
1820      * Returns by pointer, unit of energy: therm-us.
1821      * Caller owns returned value and must free it.
1822      * Also see {@link #getThermUs()}.
1823      * @param status ICU error code.
1824      * @stable ICU 65
1825      */
1826     static MeasureUnit *createThermUs(UErrorCode &status);
1827 
1828     /**
1829      * Returns by value, unit of energy: therm-us.
1830      * Also see {@link #createThermUs()}.
1831      * @stable ICU 65
1832      */
1833     static MeasureUnit getThermUs();
1834 
1835     /**
1836      * Returns by pointer, unit of force: kilowatt-hour-per-100-kilometer.
1837      * Caller owns returned value and must free it.
1838      * Also see {@link #getKilowattHourPer100Kilometer()}.
1839      * @param status ICU error code.
1840      * @stable ICU 70
1841      */
1842     static MeasureUnit *createKilowattHourPer100Kilometer(UErrorCode &status);
1843 
1844     /**
1845      * Returns by value, unit of force: kilowatt-hour-per-100-kilometer.
1846      * Also see {@link #createKilowattHourPer100Kilometer()}.
1847      * @stable ICU 70
1848      */
1849     static MeasureUnit getKilowattHourPer100Kilometer();
1850 
1851     /**
1852      * Returns by pointer, unit of force: newton.
1853      * Caller owns returned value and must free it.
1854      * Also see {@link #getNewton()}.
1855      * @param status ICU error code.
1856      * @stable ICU 64
1857      */
1858     static MeasureUnit *createNewton(UErrorCode &status);
1859 
1860     /**
1861      * Returns by value, unit of force: newton.
1862      * Also see {@link #createNewton()}.
1863      * @stable ICU 64
1864      */
1865     static MeasureUnit getNewton();
1866 
1867     /**
1868      * Returns by pointer, unit of force: pound-force.
1869      * Caller owns returned value and must free it.
1870      * Also see {@link #getPoundForce()}.
1871      * @param status ICU error code.
1872      * @stable ICU 64
1873      */
1874     static MeasureUnit *createPoundForce(UErrorCode &status);
1875 
1876     /**
1877      * Returns by value, unit of force: pound-force.
1878      * Also see {@link #createPoundForce()}.
1879      * @stable ICU 64
1880      */
1881     static MeasureUnit getPoundForce();
1882 
1883     /**
1884      * Returns by pointer, unit of frequency: gigahertz.
1885      * Caller owns returned value and must free it.
1886      * Also see {@link #getGigahertz()}.
1887      * @param status ICU error code.
1888      * @stable ICU 54
1889      */
1890     static MeasureUnit *createGigahertz(UErrorCode &status);
1891 
1892     /**
1893      * Returns by value, unit of frequency: gigahertz.
1894      * Also see {@link #createGigahertz()}.
1895      * @stable ICU 64
1896      */
1897     static MeasureUnit getGigahertz();
1898 
1899     /**
1900      * Returns by pointer, unit of frequency: hertz.
1901      * Caller owns returned value and must free it.
1902      * Also see {@link #getHertz()}.
1903      * @param status ICU error code.
1904      * @stable ICU 54
1905      */
1906     static MeasureUnit *createHertz(UErrorCode &status);
1907 
1908     /**
1909      * Returns by value, unit of frequency: hertz.
1910      * Also see {@link #createHertz()}.
1911      * @stable ICU 64
1912      */
1913     static MeasureUnit getHertz();
1914 
1915     /**
1916      * Returns by pointer, unit of frequency: kilohertz.
1917      * Caller owns returned value and must free it.
1918      * Also see {@link #getKilohertz()}.
1919      * @param status ICU error code.
1920      * @stable ICU 54
1921      */
1922     static MeasureUnit *createKilohertz(UErrorCode &status);
1923 
1924     /**
1925      * Returns by value, unit of frequency: kilohertz.
1926      * Also see {@link #createKilohertz()}.
1927      * @stable ICU 64
1928      */
1929     static MeasureUnit getKilohertz();
1930 
1931     /**
1932      * Returns by pointer, unit of frequency: megahertz.
1933      * Caller owns returned value and must free it.
1934      * Also see {@link #getMegahertz()}.
1935      * @param status ICU error code.
1936      * @stable ICU 54
1937      */
1938     static MeasureUnit *createMegahertz(UErrorCode &status);
1939 
1940     /**
1941      * Returns by value, unit of frequency: megahertz.
1942      * Also see {@link #createMegahertz()}.
1943      * @stable ICU 64
1944      */
1945     static MeasureUnit getMegahertz();
1946 
1947     /**
1948      * Returns by pointer, unit of graphics: dot.
1949      * Caller owns returned value and must free it.
1950      * Also see {@link #getDot()}.
1951      * @param status ICU error code.
1952      * @stable ICU 68
1953      */
1954     static MeasureUnit *createDot(UErrorCode &status);
1955 
1956     /**
1957      * Returns by value, unit of graphics: dot.
1958      * Also see {@link #createDot()}.
1959      * @stable ICU 68
1960      */
1961     static MeasureUnit getDot();
1962 
1963     /**
1964      * Returns by pointer, unit of graphics: dot-per-centimeter.
1965      * Caller owns returned value and must free it.
1966      * Also see {@link #getDotPerCentimeter()}.
1967      * @param status ICU error code.
1968      * @stable ICU 65
1969      */
1970     static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
1971 
1972     /**
1973      * Returns by value, unit of graphics: dot-per-centimeter.
1974      * Also see {@link #createDotPerCentimeter()}.
1975      * @stable ICU 65
1976      */
1977     static MeasureUnit getDotPerCentimeter();
1978 
1979     /**
1980      * Returns by pointer, unit of graphics: dot-per-inch.
1981      * Caller owns returned value and must free it.
1982      * Also see {@link #getDotPerInch()}.
1983      * @param status ICU error code.
1984      * @stable ICU 65
1985      */
1986     static MeasureUnit *createDotPerInch(UErrorCode &status);
1987 
1988     /**
1989      * Returns by value, unit of graphics: dot-per-inch.
1990      * Also see {@link #createDotPerInch()}.
1991      * @stable ICU 65
1992      */
1993     static MeasureUnit getDotPerInch();
1994 
1995     /**
1996      * Returns by pointer, unit of graphics: em.
1997      * Caller owns returned value and must free it.
1998      * Also see {@link #getEm()}.
1999      * @param status ICU error code.
2000      * @stable ICU 65
2001      */
2002     static MeasureUnit *createEm(UErrorCode &status);
2003 
2004     /**
2005      * Returns by value, unit of graphics: em.
2006      * Also see {@link #createEm()}.
2007      * @stable ICU 65
2008      */
2009     static MeasureUnit getEm();
2010 
2011     /**
2012      * Returns by pointer, unit of graphics: megapixel.
2013      * Caller owns returned value and must free it.
2014      * Also see {@link #getMegapixel()}.
2015      * @param status ICU error code.
2016      * @stable ICU 65
2017      */
2018     static MeasureUnit *createMegapixel(UErrorCode &status);
2019 
2020     /**
2021      * Returns by value, unit of graphics: megapixel.
2022      * Also see {@link #createMegapixel()}.
2023      * @stable ICU 65
2024      */
2025     static MeasureUnit getMegapixel();
2026 
2027     /**
2028      * Returns by pointer, unit of graphics: pixel.
2029      * Caller owns returned value and must free it.
2030      * Also see {@link #getPixel()}.
2031      * @param status ICU error code.
2032      * @stable ICU 65
2033      */
2034     static MeasureUnit *createPixel(UErrorCode &status);
2035 
2036     /**
2037      * Returns by value, unit of graphics: pixel.
2038      * Also see {@link #createPixel()}.
2039      * @stable ICU 65
2040      */
2041     static MeasureUnit getPixel();
2042 
2043     /**
2044      * Returns by pointer, unit of graphics: pixel-per-centimeter.
2045      * Caller owns returned value and must free it.
2046      * Also see {@link #getPixelPerCentimeter()}.
2047      * @param status ICU error code.
2048      * @stable ICU 65
2049      */
2050     static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
2051 
2052     /**
2053      * Returns by value, unit of graphics: pixel-per-centimeter.
2054      * Also see {@link #createPixelPerCentimeter()}.
2055      * @stable ICU 65
2056      */
2057     static MeasureUnit getPixelPerCentimeter();
2058 
2059     /**
2060      * Returns by pointer, unit of graphics: pixel-per-inch.
2061      * Caller owns returned value and must free it.
2062      * Also see {@link #getPixelPerInch()}.
2063      * @param status ICU error code.
2064      * @stable ICU 65
2065      */
2066     static MeasureUnit *createPixelPerInch(UErrorCode &status);
2067 
2068     /**
2069      * Returns by value, unit of graphics: pixel-per-inch.
2070      * Also see {@link #createPixelPerInch()}.
2071      * @stable ICU 65
2072      */
2073     static MeasureUnit getPixelPerInch();
2074 
2075     /**
2076      * Returns by pointer, unit of length: astronomical-unit.
2077      * Caller owns returned value and must free it.
2078      * Also see {@link #getAstronomicalUnit()}.
2079      * @param status ICU error code.
2080      * @stable ICU 54
2081      */
2082     static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
2083 
2084     /**
2085      * Returns by value, unit of length: astronomical-unit.
2086      * Also see {@link #createAstronomicalUnit()}.
2087      * @stable ICU 64
2088      */
2089     static MeasureUnit getAstronomicalUnit();
2090 
2091     /**
2092      * Returns by pointer, unit of length: centimeter.
2093      * Caller owns returned value and must free it.
2094      * Also see {@link #getCentimeter()}.
2095      * @param status ICU error code.
2096      * @stable ICU 53
2097      */
2098     static MeasureUnit *createCentimeter(UErrorCode &status);
2099 
2100     /**
2101      * Returns by value, unit of length: centimeter.
2102      * Also see {@link #createCentimeter()}.
2103      * @stable ICU 64
2104      */
2105     static MeasureUnit getCentimeter();
2106 
2107     /**
2108      * Returns by pointer, unit of length: decimeter.
2109      * Caller owns returned value and must free it.
2110      * Also see {@link #getDecimeter()}.
2111      * @param status ICU error code.
2112      * @stable ICU 54
2113      */
2114     static MeasureUnit *createDecimeter(UErrorCode &status);
2115 
2116     /**
2117      * Returns by value, unit of length: decimeter.
2118      * Also see {@link #createDecimeter()}.
2119      * @stable ICU 64
2120      */
2121     static MeasureUnit getDecimeter();
2122 
2123     /**
2124      * Returns by pointer, unit of length: earth-radius.
2125      * Caller owns returned value and must free it.
2126      * Also see {@link #getEarthRadius()}.
2127      * @param status ICU error code.
2128      * @stable ICU 68
2129      */
2130     static MeasureUnit *createEarthRadius(UErrorCode &status);
2131 
2132     /**
2133      * Returns by value, unit of length: earth-radius.
2134      * Also see {@link #createEarthRadius()}.
2135      * @stable ICU 68
2136      */
2137     static MeasureUnit getEarthRadius();
2138 
2139     /**
2140      * Returns by pointer, unit of length: fathom.
2141      * Caller owns returned value and must free it.
2142      * Also see {@link #getFathom()}.
2143      * @param status ICU error code.
2144      * @stable ICU 54
2145      */
2146     static MeasureUnit *createFathom(UErrorCode &status);
2147 
2148     /**
2149      * Returns by value, unit of length: fathom.
2150      * Also see {@link #createFathom()}.
2151      * @stable ICU 64
2152      */
2153     static MeasureUnit getFathom();
2154 
2155     /**
2156      * Returns by pointer, unit of length: foot.
2157      * Caller owns returned value and must free it.
2158      * Also see {@link #getFoot()}.
2159      * @param status ICU error code.
2160      * @stable ICU 53
2161      */
2162     static MeasureUnit *createFoot(UErrorCode &status);
2163 
2164     /**
2165      * Returns by value, unit of length: foot.
2166      * Also see {@link #createFoot()}.
2167      * @stable ICU 64
2168      */
2169     static MeasureUnit getFoot();
2170 
2171     /**
2172      * Returns by pointer, unit of length: furlong.
2173      * Caller owns returned value and must free it.
2174      * Also see {@link #getFurlong()}.
2175      * @param status ICU error code.
2176      * @stable ICU 54
2177      */
2178     static MeasureUnit *createFurlong(UErrorCode &status);
2179 
2180     /**
2181      * Returns by value, unit of length: furlong.
2182      * Also see {@link #createFurlong()}.
2183      * @stable ICU 64
2184      */
2185     static MeasureUnit getFurlong();
2186 
2187     /**
2188      * Returns by pointer, unit of length: inch.
2189      * Caller owns returned value and must free it.
2190      * Also see {@link #getInch()}.
2191      * @param status ICU error code.
2192      * @stable ICU 53
2193      */
2194     static MeasureUnit *createInch(UErrorCode &status);
2195 
2196     /**
2197      * Returns by value, unit of length: inch.
2198      * Also see {@link #createInch()}.
2199      * @stable ICU 64
2200      */
2201     static MeasureUnit getInch();
2202 
2203     /**
2204      * Returns by pointer, unit of length: kilometer.
2205      * Caller owns returned value and must free it.
2206      * Also see {@link #getKilometer()}.
2207      * @param status ICU error code.
2208      * @stable ICU 53
2209      */
2210     static MeasureUnit *createKilometer(UErrorCode &status);
2211 
2212     /**
2213      * Returns by value, unit of length: kilometer.
2214      * Also see {@link #createKilometer()}.
2215      * @stable ICU 64
2216      */
2217     static MeasureUnit getKilometer();
2218 
2219     /**
2220      * Returns by pointer, unit of length: light-year.
2221      * Caller owns returned value and must free it.
2222      * Also see {@link #getLightYear()}.
2223      * @param status ICU error code.
2224      * @stable ICU 53
2225      */
2226     static MeasureUnit *createLightYear(UErrorCode &status);
2227 
2228     /**
2229      * Returns by value, unit of length: light-year.
2230      * Also see {@link #createLightYear()}.
2231      * @stable ICU 64
2232      */
2233     static MeasureUnit getLightYear();
2234 
2235     /**
2236      * Returns by pointer, unit of length: meter.
2237      * Caller owns returned value and must free it.
2238      * Also see {@link #getMeter()}.
2239      * @param status ICU error code.
2240      * @stable ICU 53
2241      */
2242     static MeasureUnit *createMeter(UErrorCode &status);
2243 
2244     /**
2245      * Returns by value, unit of length: meter.
2246      * Also see {@link #createMeter()}.
2247      * @stable ICU 64
2248      */
2249     static MeasureUnit getMeter();
2250 
2251     /**
2252      * Returns by pointer, unit of length: micrometer.
2253      * Caller owns returned value and must free it.
2254      * Also see {@link #getMicrometer()}.
2255      * @param status ICU error code.
2256      * @stable ICU 54
2257      */
2258     static MeasureUnit *createMicrometer(UErrorCode &status);
2259 
2260     /**
2261      * Returns by value, unit of length: micrometer.
2262      * Also see {@link #createMicrometer()}.
2263      * @stable ICU 64
2264      */
2265     static MeasureUnit getMicrometer();
2266 
2267     /**
2268      * Returns by pointer, unit of length: mile.
2269      * Caller owns returned value and must free it.
2270      * Also see {@link #getMile()}.
2271      * @param status ICU error code.
2272      * @stable ICU 53
2273      */
2274     static MeasureUnit *createMile(UErrorCode &status);
2275 
2276     /**
2277      * Returns by value, unit of length: mile.
2278      * Also see {@link #createMile()}.
2279      * @stable ICU 64
2280      */
2281     static MeasureUnit getMile();
2282 
2283     /**
2284      * Returns by pointer, unit of length: mile-scandinavian.
2285      * Caller owns returned value and must free it.
2286      * Also see {@link #getMileScandinavian()}.
2287      * @param status ICU error code.
2288      * @stable ICU 56
2289      */
2290     static MeasureUnit *createMileScandinavian(UErrorCode &status);
2291 
2292     /**
2293      * Returns by value, unit of length: mile-scandinavian.
2294      * Also see {@link #createMileScandinavian()}.
2295      * @stable ICU 64
2296      */
2297     static MeasureUnit getMileScandinavian();
2298 
2299     /**
2300      * Returns by pointer, unit of length: millimeter.
2301      * Caller owns returned value and must free it.
2302      * Also see {@link #getMillimeter()}.
2303      * @param status ICU error code.
2304      * @stable ICU 53
2305      */
2306     static MeasureUnit *createMillimeter(UErrorCode &status);
2307 
2308     /**
2309      * Returns by value, unit of length: millimeter.
2310      * Also see {@link #createMillimeter()}.
2311      * @stable ICU 64
2312      */
2313     static MeasureUnit getMillimeter();
2314 
2315     /**
2316      * Returns by pointer, unit of length: nanometer.
2317      * Caller owns returned value and must free it.
2318      * Also see {@link #getNanometer()}.
2319      * @param status ICU error code.
2320      * @stable ICU 54
2321      */
2322     static MeasureUnit *createNanometer(UErrorCode &status);
2323 
2324     /**
2325      * Returns by value, unit of length: nanometer.
2326      * Also see {@link #createNanometer()}.
2327      * @stable ICU 64
2328      */
2329     static MeasureUnit getNanometer();
2330 
2331     /**
2332      * Returns by pointer, unit of length: nautical-mile.
2333      * Caller owns returned value and must free it.
2334      * Also see {@link #getNauticalMile()}.
2335      * @param status ICU error code.
2336      * @stable ICU 54
2337      */
2338     static MeasureUnit *createNauticalMile(UErrorCode &status);
2339 
2340     /**
2341      * Returns by value, unit of length: nautical-mile.
2342      * Also see {@link #createNauticalMile()}.
2343      * @stable ICU 64
2344      */
2345     static MeasureUnit getNauticalMile();
2346 
2347     /**
2348      * Returns by pointer, unit of length: parsec.
2349      * Caller owns returned value and must free it.
2350      * Also see {@link #getParsec()}.
2351      * @param status ICU error code.
2352      * @stable ICU 54
2353      */
2354     static MeasureUnit *createParsec(UErrorCode &status);
2355 
2356     /**
2357      * Returns by value, unit of length: parsec.
2358      * Also see {@link #createParsec()}.
2359      * @stable ICU 64
2360      */
2361     static MeasureUnit getParsec();
2362 
2363     /**
2364      * Returns by pointer, unit of length: picometer.
2365      * Caller owns returned value and must free it.
2366      * Also see {@link #getPicometer()}.
2367      * @param status ICU error code.
2368      * @stable ICU 53
2369      */
2370     static MeasureUnit *createPicometer(UErrorCode &status);
2371 
2372     /**
2373      * Returns by value, unit of length: picometer.
2374      * Also see {@link #createPicometer()}.
2375      * @stable ICU 64
2376      */
2377     static MeasureUnit getPicometer();
2378 
2379     /**
2380      * Returns by pointer, unit of length: point.
2381      * Caller owns returned value and must free it.
2382      * Also see {@link #getPoint()}.
2383      * @param status ICU error code.
2384      * @stable ICU 59
2385      */
2386     static MeasureUnit *createPoint(UErrorCode &status);
2387 
2388     /**
2389      * Returns by value, unit of length: point.
2390      * Also see {@link #createPoint()}.
2391      * @stable ICU 64
2392      */
2393     static MeasureUnit getPoint();
2394 
2395     /**
2396      * Returns by pointer, unit of length: solar-radius.
2397      * Caller owns returned value and must free it.
2398      * Also see {@link #getSolarRadius()}.
2399      * @param status ICU error code.
2400      * @stable ICU 64
2401      */
2402     static MeasureUnit *createSolarRadius(UErrorCode &status);
2403 
2404     /**
2405      * Returns by value, unit of length: solar-radius.
2406      * Also see {@link #createSolarRadius()}.
2407      * @stable ICU 64
2408      */
2409     static MeasureUnit getSolarRadius();
2410 
2411     /**
2412      * Returns by pointer, unit of length: yard.
2413      * Caller owns returned value and must free it.
2414      * Also see {@link #getYard()}.
2415      * @param status ICU error code.
2416      * @stable ICU 53
2417      */
2418     static MeasureUnit *createYard(UErrorCode &status);
2419 
2420     /**
2421      * Returns by value, unit of length: yard.
2422      * Also see {@link #createYard()}.
2423      * @stable ICU 64
2424      */
2425     static MeasureUnit getYard();
2426 
2427     /**
2428      * Returns by pointer, unit of light: candela.
2429      * Caller owns returned value and must free it.
2430      * Also see {@link #getCandela()}.
2431      * @param status ICU error code.
2432      * @stable ICU 68
2433      */
2434     static MeasureUnit *createCandela(UErrorCode &status);
2435 
2436     /**
2437      * Returns by value, unit of light: candela.
2438      * Also see {@link #createCandela()}.
2439      * @stable ICU 68
2440      */
2441     static MeasureUnit getCandela();
2442 
2443     /**
2444      * Returns by pointer, unit of light: lumen.
2445      * Caller owns returned value and must free it.
2446      * Also see {@link #getLumen()}.
2447      * @param status ICU error code.
2448      * @stable ICU 68
2449      */
2450     static MeasureUnit *createLumen(UErrorCode &status);
2451 
2452     /**
2453      * Returns by value, unit of light: lumen.
2454      * Also see {@link #createLumen()}.
2455      * @stable ICU 68
2456      */
2457     static MeasureUnit getLumen();
2458 
2459     /**
2460      * Returns by pointer, unit of light: lux.
2461      * Caller owns returned value and must free it.
2462      * Also see {@link #getLux()}.
2463      * @param status ICU error code.
2464      * @stable ICU 54
2465      */
2466     static MeasureUnit *createLux(UErrorCode &status);
2467 
2468     /**
2469      * Returns by value, unit of light: lux.
2470      * Also see {@link #createLux()}.
2471      * @stable ICU 64
2472      */
2473     static MeasureUnit getLux();
2474 
2475     /**
2476      * Returns by pointer, unit of light: solar-luminosity.
2477      * Caller owns returned value and must free it.
2478      * Also see {@link #getSolarLuminosity()}.
2479      * @param status ICU error code.
2480      * @stable ICU 64
2481      */
2482     static MeasureUnit *createSolarLuminosity(UErrorCode &status);
2483 
2484     /**
2485      * Returns by value, unit of light: solar-luminosity.
2486      * Also see {@link #createSolarLuminosity()}.
2487      * @stable ICU 64
2488      */
2489     static MeasureUnit getSolarLuminosity();
2490 
2491     /**
2492      * Returns by pointer, unit of mass: carat.
2493      * Caller owns returned value and must free it.
2494      * Also see {@link #getCarat()}.
2495      * @param status ICU error code.
2496      * @stable ICU 54
2497      */
2498     static MeasureUnit *createCarat(UErrorCode &status);
2499 
2500     /**
2501      * Returns by value, unit of mass: carat.
2502      * Also see {@link #createCarat()}.
2503      * @stable ICU 64
2504      */
2505     static MeasureUnit getCarat();
2506 
2507     /**
2508      * Returns by pointer, unit of mass: dalton.
2509      * Caller owns returned value and must free it.
2510      * Also see {@link #getDalton()}.
2511      * @param status ICU error code.
2512      * @stable ICU 64
2513      */
2514     static MeasureUnit *createDalton(UErrorCode &status);
2515 
2516     /**
2517      * Returns by value, unit of mass: dalton.
2518      * Also see {@link #createDalton()}.
2519      * @stable ICU 64
2520      */
2521     static MeasureUnit getDalton();
2522 
2523     /**
2524      * Returns by pointer, unit of mass: earth-mass.
2525      * Caller owns returned value and must free it.
2526      * Also see {@link #getEarthMass()}.
2527      * @param status ICU error code.
2528      * @stable ICU 64
2529      */
2530     static MeasureUnit *createEarthMass(UErrorCode &status);
2531 
2532     /**
2533      * Returns by value, unit of mass: earth-mass.
2534      * Also see {@link #createEarthMass()}.
2535      * @stable ICU 64
2536      */
2537     static MeasureUnit getEarthMass();
2538 
2539     /**
2540      * Returns by pointer, unit of mass: grain.
2541      * Caller owns returned value and must free it.
2542      * Also see {@link #getGrain()}.
2543      * @param status ICU error code.
2544      * @stable ICU 68
2545      */
2546     static MeasureUnit *createGrain(UErrorCode &status);
2547 
2548     /**
2549      * Returns by value, unit of mass: grain.
2550      * Also see {@link #createGrain()}.
2551      * @stable ICU 68
2552      */
2553     static MeasureUnit getGrain();
2554 
2555     /**
2556      * Returns by pointer, unit of mass: gram.
2557      * Caller owns returned value and must free it.
2558      * Also see {@link #getGram()}.
2559      * @param status ICU error code.
2560      * @stable ICU 53
2561      */
2562     static MeasureUnit *createGram(UErrorCode &status);
2563 
2564     /**
2565      * Returns by value, unit of mass: gram.
2566      * Also see {@link #createGram()}.
2567      * @stable ICU 64
2568      */
2569     static MeasureUnit getGram();
2570 
2571     /**
2572      * Returns by pointer, unit of mass: kilogram.
2573      * Caller owns returned value and must free it.
2574      * Also see {@link #getKilogram()}.
2575      * @param status ICU error code.
2576      * @stable ICU 53
2577      */
2578     static MeasureUnit *createKilogram(UErrorCode &status);
2579 
2580     /**
2581      * Returns by value, unit of mass: kilogram.
2582      * Also see {@link #createKilogram()}.
2583      * @stable ICU 64
2584      */
2585     static MeasureUnit getKilogram();
2586 
2587     /**
2588      * Returns by pointer, unit of mass: metric-ton
2589      * (renamed to tonne in CLDR 42 / ICU 72).
2590      * Caller owns returned value and must free it.
2591      * Note: In ICU 74 this will be deprecated in favor of
2592      * createTonne(), which is currently draft but will
2593      * become stable in ICU 74, and which uses the preferred naming.
2594      * Also see {@link #getMetricTon()} and {@link #createTonne()}.
2595      * @param status ICU error code.
2596      * @stable ICU 54
2597      */
2598     static MeasureUnit *createMetricTon(UErrorCode &status);
2599 
2600     /**
2601      * Returns by value, unit of mass: metric-ton
2602      * (renamed to tonne in CLDR 42 / ICU 72).
2603      * Note: In ICU 74 this will be deprecated in favor of
2604      * getTonne(), which is currently draft but will
2605      * become stable in ICU 74, and which uses the preferred naming.
2606      * Also see {@link #createMetricTon()} and {@link #getTonne()}.
2607      * @stable ICU 64
2608      */
2609     static MeasureUnit getMetricTon();
2610 
2611     /**
2612      * Returns by pointer, unit of mass: microgram.
2613      * Caller owns returned value and must free it.
2614      * Also see {@link #getMicrogram()}.
2615      * @param status ICU error code.
2616      * @stable ICU 54
2617      */
2618     static MeasureUnit *createMicrogram(UErrorCode &status);
2619 
2620     /**
2621      * Returns by value, unit of mass: microgram.
2622      * Also see {@link #createMicrogram()}.
2623      * @stable ICU 64
2624      */
2625     static MeasureUnit getMicrogram();
2626 
2627     /**
2628      * Returns by pointer, unit of mass: milligram.
2629      * Caller owns returned value and must free it.
2630      * Also see {@link #getMilligram()}.
2631      * @param status ICU error code.
2632      * @stable ICU 54
2633      */
2634     static MeasureUnit *createMilligram(UErrorCode &status);
2635 
2636     /**
2637      * Returns by value, unit of mass: milligram.
2638      * Also see {@link #createMilligram()}.
2639      * @stable ICU 64
2640      */
2641     static MeasureUnit getMilligram();
2642 
2643     /**
2644      * Returns by pointer, unit of mass: ounce.
2645      * Caller owns returned value and must free it.
2646      * Also see {@link #getOunce()}.
2647      * @param status ICU error code.
2648      * @stable ICU 53
2649      */
2650     static MeasureUnit *createOunce(UErrorCode &status);
2651 
2652     /**
2653      * Returns by value, unit of mass: ounce.
2654      * Also see {@link #createOunce()}.
2655      * @stable ICU 64
2656      */
2657     static MeasureUnit getOunce();
2658 
2659     /**
2660      * Returns by pointer, unit of mass: ounce-troy.
2661      * Caller owns returned value and must free it.
2662      * Also see {@link #getOunceTroy()}.
2663      * @param status ICU error code.
2664      * @stable ICU 54
2665      */
2666     static MeasureUnit *createOunceTroy(UErrorCode &status);
2667 
2668     /**
2669      * Returns by value, unit of mass: ounce-troy.
2670      * Also see {@link #createOunceTroy()}.
2671      * @stable ICU 64
2672      */
2673     static MeasureUnit getOunceTroy();
2674 
2675     /**
2676      * Returns by pointer, unit of mass: pound.
2677      * Caller owns returned value and must free it.
2678      * Also see {@link #getPound()}.
2679      * @param status ICU error code.
2680      * @stable ICU 53
2681      */
2682     static MeasureUnit *createPound(UErrorCode &status);
2683 
2684     /**
2685      * Returns by value, unit of mass: pound.
2686      * Also see {@link #createPound()}.
2687      * @stable ICU 64
2688      */
2689     static MeasureUnit getPound();
2690 
2691     /**
2692      * Returns by pointer, unit of mass: solar-mass.
2693      * Caller owns returned value and must free it.
2694      * Also see {@link #getSolarMass()}.
2695      * @param status ICU error code.
2696      * @stable ICU 64
2697      */
2698     static MeasureUnit *createSolarMass(UErrorCode &status);
2699 
2700     /**
2701      * Returns by value, unit of mass: solar-mass.
2702      * Also see {@link #createSolarMass()}.
2703      * @stable ICU 64
2704      */
2705     static MeasureUnit getSolarMass();
2706 
2707     /**
2708      * Returns by pointer, unit of mass: stone.
2709      * Caller owns returned value and must free it.
2710      * Also see {@link #getStone()}.
2711      * @param status ICU error code.
2712      * @stable ICU 54
2713      */
2714     static MeasureUnit *createStone(UErrorCode &status);
2715 
2716     /**
2717      * Returns by value, unit of mass: stone.
2718      * Also see {@link #createStone()}.
2719      * @stable ICU 64
2720      */
2721     static MeasureUnit getStone();
2722 
2723     /**
2724      * Returns by pointer, unit of mass: ton.
2725      * Caller owns returned value and must free it.
2726      * Also see {@link #getTon()}.
2727      * @param status ICU error code.
2728      * @stable ICU 54
2729      */
2730     static MeasureUnit *createTon(UErrorCode &status);
2731 
2732     /**
2733      * Returns by value, unit of mass: ton.
2734      * Also see {@link #createTon()}.
2735      * @stable ICU 64
2736      */
2737     static MeasureUnit getTon();
2738 
2739     /**
2740      * Returns by pointer, unit of mass: tonne.
2741      * Caller owns returned value and must free it.
2742      * Also see {@link #getTonne()}.
2743      * @param status ICU error code.
2744      * @stable ICU 72
2745      */
2746     static MeasureUnit *createTonne(UErrorCode &status);
2747 
2748     /**
2749      * Returns by value, unit of mass: tonne.
2750      * Also see {@link #createTonne()}.
2751      * @stable ICU 72
2752      */
2753     static MeasureUnit getTonne();
2754 
2755     /**
2756      * Returns by pointer, unit of power: gigawatt.
2757      * Caller owns returned value and must free it.
2758      * Also see {@link #getGigawatt()}.
2759      * @param status ICU error code.
2760      * @stable ICU 54
2761      */
2762     static MeasureUnit *createGigawatt(UErrorCode &status);
2763 
2764     /**
2765      * Returns by value, unit of power: gigawatt.
2766      * Also see {@link #createGigawatt()}.
2767      * @stable ICU 64
2768      */
2769     static MeasureUnit getGigawatt();
2770 
2771     /**
2772      * Returns by pointer, unit of power: horsepower.
2773      * Caller owns returned value and must free it.
2774      * Also see {@link #getHorsepower()}.
2775      * @param status ICU error code.
2776      * @stable ICU 53
2777      */
2778     static MeasureUnit *createHorsepower(UErrorCode &status);
2779 
2780     /**
2781      * Returns by value, unit of power: horsepower.
2782      * Also see {@link #createHorsepower()}.
2783      * @stable ICU 64
2784      */
2785     static MeasureUnit getHorsepower();
2786 
2787     /**
2788      * Returns by pointer, unit of power: kilowatt.
2789      * Caller owns returned value and must free it.
2790      * Also see {@link #getKilowatt()}.
2791      * @param status ICU error code.
2792      * @stable ICU 53
2793      */
2794     static MeasureUnit *createKilowatt(UErrorCode &status);
2795 
2796     /**
2797      * Returns by value, unit of power: kilowatt.
2798      * Also see {@link #createKilowatt()}.
2799      * @stable ICU 64
2800      */
2801     static MeasureUnit getKilowatt();
2802 
2803     /**
2804      * Returns by pointer, unit of power: megawatt.
2805      * Caller owns returned value and must free it.
2806      * Also see {@link #getMegawatt()}.
2807      * @param status ICU error code.
2808      * @stable ICU 54
2809      */
2810     static MeasureUnit *createMegawatt(UErrorCode &status);
2811 
2812     /**
2813      * Returns by value, unit of power: megawatt.
2814      * Also see {@link #createMegawatt()}.
2815      * @stable ICU 64
2816      */
2817     static MeasureUnit getMegawatt();
2818 
2819     /**
2820      * Returns by pointer, unit of power: milliwatt.
2821      * Caller owns returned value and must free it.
2822      * Also see {@link #getMilliwatt()}.
2823      * @param status ICU error code.
2824      * @stable ICU 54
2825      */
2826     static MeasureUnit *createMilliwatt(UErrorCode &status);
2827 
2828     /**
2829      * Returns by value, unit of power: milliwatt.
2830      * Also see {@link #createMilliwatt()}.
2831      * @stable ICU 64
2832      */
2833     static MeasureUnit getMilliwatt();
2834 
2835     /**
2836      * Returns by pointer, unit of power: watt.
2837      * Caller owns returned value and must free it.
2838      * Also see {@link #getWatt()}.
2839      * @param status ICU error code.
2840      * @stable ICU 53
2841      */
2842     static MeasureUnit *createWatt(UErrorCode &status);
2843 
2844     /**
2845      * Returns by value, unit of power: watt.
2846      * Also see {@link #createWatt()}.
2847      * @stable ICU 64
2848      */
2849     static MeasureUnit getWatt();
2850 
2851     /**
2852      * Returns by pointer, unit of pressure: atmosphere.
2853      * Caller owns returned value and must free it.
2854      * Also see {@link #getAtmosphere()}.
2855      * @param status ICU error code.
2856      * @stable ICU 63
2857      */
2858     static MeasureUnit *createAtmosphere(UErrorCode &status);
2859 
2860     /**
2861      * Returns by value, unit of pressure: atmosphere.
2862      * Also see {@link #createAtmosphere()}.
2863      * @stable ICU 64
2864      */
2865     static MeasureUnit getAtmosphere();
2866 
2867     /**
2868      * Returns by pointer, unit of pressure: bar.
2869      * Caller owns returned value and must free it.
2870      * Also see {@link #getBar()}.
2871      * @param status ICU error code.
2872      * @stable ICU 65
2873      */
2874     static MeasureUnit *createBar(UErrorCode &status);
2875 
2876     /**
2877      * Returns by value, unit of pressure: bar.
2878      * Also see {@link #createBar()}.
2879      * @stable ICU 65
2880      */
2881     static MeasureUnit getBar();
2882 
2883 #ifndef U_HIDE_DRAFT_API
2884     /**
2885      * Returns by pointer, unit of pressure: gasoline-energy-density.
2886      * Caller owns returned value and must free it.
2887      * Also see {@link #getGasolineEnergyDensity()}.
2888      * @param status ICU error code.
2889      * @draft ICU 74
2890      */
2891     static MeasureUnit *createGasolineEnergyDensity(UErrorCode &status);
2892 
2893     /**
2894      * Returns by value, unit of pressure: gasoline-energy-density.
2895      * Also see {@link #createGasolineEnergyDensity()}.
2896      * @draft ICU 74
2897      */
2898     static MeasureUnit getGasolineEnergyDensity();
2899 #endif /* U_HIDE_DRAFT_API */
2900 
2901     /**
2902      * Returns by pointer, unit of pressure: hectopascal.
2903      * Caller owns returned value and must free it.
2904      * Also see {@link #getHectopascal()}.
2905      * @param status ICU error code.
2906      * @stable ICU 53
2907      */
2908     static MeasureUnit *createHectopascal(UErrorCode &status);
2909 
2910     /**
2911      * Returns by value, unit of pressure: hectopascal.
2912      * Also see {@link #createHectopascal()}.
2913      * @stable ICU 64
2914      */
2915     static MeasureUnit getHectopascal();
2916 
2917     /**
2918      * Returns by pointer, unit of pressure: inch-ofhg.
2919      * Caller owns returned value and must free it.
2920      * Also see {@link #getInchHg()}.
2921      * @param status ICU error code.
2922      * @stable ICU 53
2923      */
2924     static MeasureUnit *createInchHg(UErrorCode &status);
2925 
2926     /**
2927      * Returns by value, unit of pressure: inch-ofhg.
2928      * Also see {@link #createInchHg()}.
2929      * @stable ICU 64
2930      */
2931     static MeasureUnit getInchHg();
2932 
2933     /**
2934      * Returns by pointer, unit of pressure: kilopascal.
2935      * Caller owns returned value and must free it.
2936      * Also see {@link #getKilopascal()}.
2937      * @param status ICU error code.
2938      * @stable ICU 64
2939      */
2940     static MeasureUnit *createKilopascal(UErrorCode &status);
2941 
2942     /**
2943      * Returns by value, unit of pressure: kilopascal.
2944      * Also see {@link #createKilopascal()}.
2945      * @stable ICU 64
2946      */
2947     static MeasureUnit getKilopascal();
2948 
2949     /**
2950      * Returns by pointer, unit of pressure: megapascal.
2951      * Caller owns returned value and must free it.
2952      * Also see {@link #getMegapascal()}.
2953      * @param status ICU error code.
2954      * @stable ICU 64
2955      */
2956     static MeasureUnit *createMegapascal(UErrorCode &status);
2957 
2958     /**
2959      * Returns by value, unit of pressure: megapascal.
2960      * Also see {@link #createMegapascal()}.
2961      * @stable ICU 64
2962      */
2963     static MeasureUnit getMegapascal();
2964 
2965     /**
2966      * Returns by pointer, unit of pressure: millibar.
2967      * Caller owns returned value and must free it.
2968      * Also see {@link #getMillibar()}.
2969      * @param status ICU error code.
2970      * @stable ICU 53
2971      */
2972     static MeasureUnit *createMillibar(UErrorCode &status);
2973 
2974     /**
2975      * Returns by value, unit of pressure: millibar.
2976      * Also see {@link #createMillibar()}.
2977      * @stable ICU 64
2978      */
2979     static MeasureUnit getMillibar();
2980 
2981     /**
2982      * Returns by pointer, unit of pressure: millimeter-ofhg.
2983      * Caller owns returned value and must free it.
2984      * Also see {@link #getMillimeterOfMercury()}.
2985      * @param status ICU error code.
2986      * @stable ICU 54
2987      */
2988     static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
2989 
2990     /**
2991      * Returns by value, unit of pressure: millimeter-ofhg.
2992      * Also see {@link #createMillimeterOfMercury()}.
2993      * @stable ICU 64
2994      */
2995     static MeasureUnit getMillimeterOfMercury();
2996 
2997     /**
2998      * Returns by pointer, unit of pressure: pascal.
2999      * Caller owns returned value and must free it.
3000      * Also see {@link #getPascal()}.
3001      * @param status ICU error code.
3002      * @stable ICU 65
3003      */
3004     static MeasureUnit *createPascal(UErrorCode &status);
3005 
3006     /**
3007      * Returns by value, unit of pressure: pascal.
3008      * Also see {@link #createPascal()}.
3009      * @stable ICU 65
3010      */
3011     static MeasureUnit getPascal();
3012 
3013     /**
3014      * Returns by pointer, unit of pressure: pound-force-per-square-inch.
3015      * Caller owns returned value and must free it.
3016      * Also see {@link #getPoundPerSquareInch()}.
3017      * @param status ICU error code.
3018      * @stable ICU 54
3019      */
3020     static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
3021 
3022     /**
3023      * Returns by value, unit of pressure: pound-force-per-square-inch.
3024      * Also see {@link #createPoundPerSquareInch()}.
3025      * @stable ICU 64
3026      */
3027     static MeasureUnit getPoundPerSquareInch();
3028 
3029 #ifndef U_HIDE_DRAFT_API
3030     /**
3031      * Returns by pointer, unit of speed: beaufort.
3032      * Caller owns returned value and must free it.
3033      * Also see {@link #getBeaufort()}.
3034      * @param status ICU error code.
3035      * @draft ICU 73
3036      */
3037     static MeasureUnit *createBeaufort(UErrorCode &status);
3038 
3039     /**
3040      * Returns by value, unit of speed: beaufort.
3041      * Also see {@link #createBeaufort()}.
3042      * @draft ICU 73
3043      */
3044     static MeasureUnit getBeaufort();
3045 #endif /* U_HIDE_DRAFT_API */
3046 
3047     /**
3048      * Returns by pointer, unit of speed: kilometer-per-hour.
3049      * Caller owns returned value and must free it.
3050      * Also see {@link #getKilometerPerHour()}.
3051      * @param status ICU error code.
3052      * @stable ICU 53
3053      */
3054     static MeasureUnit *createKilometerPerHour(UErrorCode &status);
3055 
3056     /**
3057      * Returns by value, unit of speed: kilometer-per-hour.
3058      * Also see {@link #createKilometerPerHour()}.
3059      * @stable ICU 64
3060      */
3061     static MeasureUnit getKilometerPerHour();
3062 
3063     /**
3064      * Returns by pointer, unit of speed: knot.
3065      * Caller owns returned value and must free it.
3066      * Also see {@link #getKnot()}.
3067      * @param status ICU error code.
3068      * @stable ICU 56
3069      */
3070     static MeasureUnit *createKnot(UErrorCode &status);
3071 
3072     /**
3073      * Returns by value, unit of speed: knot.
3074      * Also see {@link #createKnot()}.
3075      * @stable ICU 64
3076      */
3077     static MeasureUnit getKnot();
3078 
3079     /**
3080      * Returns by pointer, unit of speed: meter-per-second.
3081      * Caller owns returned value and must free it.
3082      * Also see {@link #getMeterPerSecond()}.
3083      * @param status ICU error code.
3084      * @stable ICU 53
3085      */
3086     static MeasureUnit *createMeterPerSecond(UErrorCode &status);
3087 
3088     /**
3089      * Returns by value, unit of speed: meter-per-second.
3090      * Also see {@link #createMeterPerSecond()}.
3091      * @stable ICU 64
3092      */
3093     static MeasureUnit getMeterPerSecond();
3094 
3095     /**
3096      * Returns by pointer, unit of speed: mile-per-hour.
3097      * Caller owns returned value and must free it.
3098      * Also see {@link #getMilePerHour()}.
3099      * @param status ICU error code.
3100      * @stable ICU 53
3101      */
3102     static MeasureUnit *createMilePerHour(UErrorCode &status);
3103 
3104     /**
3105      * Returns by value, unit of speed: mile-per-hour.
3106      * Also see {@link #createMilePerHour()}.
3107      * @stable ICU 64
3108      */
3109     static MeasureUnit getMilePerHour();
3110 
3111     /**
3112      * Returns by pointer, unit of temperature: celsius.
3113      * Caller owns returned value and must free it.
3114      * Also see {@link #getCelsius()}.
3115      * @param status ICU error code.
3116      * @stable ICU 53
3117      */
3118     static MeasureUnit *createCelsius(UErrorCode &status);
3119 
3120     /**
3121      * Returns by value, unit of temperature: celsius.
3122      * Also see {@link #createCelsius()}.
3123      * @stable ICU 64
3124      */
3125     static MeasureUnit getCelsius();
3126 
3127     /**
3128      * Returns by pointer, unit of temperature: fahrenheit.
3129      * Caller owns returned value and must free it.
3130      * Also see {@link #getFahrenheit()}.
3131      * @param status ICU error code.
3132      * @stable ICU 53
3133      */
3134     static MeasureUnit *createFahrenheit(UErrorCode &status);
3135 
3136     /**
3137      * Returns by value, unit of temperature: fahrenheit.
3138      * Also see {@link #createFahrenheit()}.
3139      * @stable ICU 64
3140      */
3141     static MeasureUnit getFahrenheit();
3142 
3143     /**
3144      * Returns by pointer, unit of temperature: generic.
3145      * Caller owns returned value and must free it.
3146      * Also see {@link #getGenericTemperature()}.
3147      * @param status ICU error code.
3148      * @stable ICU 56
3149      */
3150     static MeasureUnit *createGenericTemperature(UErrorCode &status);
3151 
3152     /**
3153      * Returns by value, unit of temperature: generic.
3154      * Also see {@link #createGenericTemperature()}.
3155      * @stable ICU 64
3156      */
3157     static MeasureUnit getGenericTemperature();
3158 
3159     /**
3160      * Returns by pointer, unit of temperature: kelvin.
3161      * Caller owns returned value and must free it.
3162      * Also see {@link #getKelvin()}.
3163      * @param status ICU error code.
3164      * @stable ICU 54
3165      */
3166     static MeasureUnit *createKelvin(UErrorCode &status);
3167 
3168     /**
3169      * Returns by value, unit of temperature: kelvin.
3170      * Also see {@link #createKelvin()}.
3171      * @stable ICU 64
3172      */
3173     static MeasureUnit getKelvin();
3174 
3175     /**
3176      * Returns by pointer, unit of torque: newton-meter.
3177      * Caller owns returned value and must free it.
3178      * Also see {@link #getNewtonMeter()}.
3179      * @param status ICU error code.
3180      * @stable ICU 64
3181      */
3182     static MeasureUnit *createNewtonMeter(UErrorCode &status);
3183 
3184     /**
3185      * Returns by value, unit of torque: newton-meter.
3186      * Also see {@link #createNewtonMeter()}.
3187      * @stable ICU 64
3188      */
3189     static MeasureUnit getNewtonMeter();
3190 
3191     /**
3192      * Returns by pointer, unit of torque: pound-force-foot.
3193      * Caller owns returned value and must free it.
3194      * Also see {@link #getPoundFoot()}.
3195      * @param status ICU error code.
3196      * @stable ICU 64
3197      */
3198     static MeasureUnit *createPoundFoot(UErrorCode &status);
3199 
3200     /**
3201      * Returns by value, unit of torque: pound-force-foot.
3202      * Also see {@link #createPoundFoot()}.
3203      * @stable ICU 64
3204      */
3205     static MeasureUnit getPoundFoot();
3206 
3207     /**
3208      * Returns by pointer, unit of volume: acre-foot.
3209      * Caller owns returned value and must free it.
3210      * Also see {@link #getAcreFoot()}.
3211      * @param status ICU error code.
3212      * @stable ICU 54
3213      */
3214     static MeasureUnit *createAcreFoot(UErrorCode &status);
3215 
3216     /**
3217      * Returns by value, unit of volume: acre-foot.
3218      * Also see {@link #createAcreFoot()}.
3219      * @stable ICU 64
3220      */
3221     static MeasureUnit getAcreFoot();
3222 
3223     /**
3224      * Returns by pointer, unit of volume: barrel.
3225      * Caller owns returned value and must free it.
3226      * Also see {@link #getBarrel()}.
3227      * @param status ICU error code.
3228      * @stable ICU 64
3229      */
3230     static MeasureUnit *createBarrel(UErrorCode &status);
3231 
3232     /**
3233      * Returns by value, unit of volume: barrel.
3234      * Also see {@link #createBarrel()}.
3235      * @stable ICU 64
3236      */
3237     static MeasureUnit getBarrel();
3238 
3239     /**
3240      * Returns by pointer, unit of volume: bushel.
3241      * Caller owns returned value and must free it.
3242      * Also see {@link #getBushel()}.
3243      * @param status ICU error code.
3244      * @stable ICU 54
3245      */
3246     static MeasureUnit *createBushel(UErrorCode &status);
3247 
3248     /**
3249      * Returns by value, unit of volume: bushel.
3250      * Also see {@link #createBushel()}.
3251      * @stable ICU 64
3252      */
3253     static MeasureUnit getBushel();
3254 
3255     /**
3256      * Returns by pointer, unit of volume: centiliter.
3257      * Caller owns returned value and must free it.
3258      * Also see {@link #getCentiliter()}.
3259      * @param status ICU error code.
3260      * @stable ICU 54
3261      */
3262     static MeasureUnit *createCentiliter(UErrorCode &status);
3263 
3264     /**
3265      * Returns by value, unit of volume: centiliter.
3266      * Also see {@link #createCentiliter()}.
3267      * @stable ICU 64
3268      */
3269     static MeasureUnit getCentiliter();
3270 
3271     /**
3272      * Returns by pointer, unit of volume: cubic-centimeter.
3273      * Caller owns returned value and must free it.
3274      * Also see {@link #getCubicCentimeter()}.
3275      * @param status ICU error code.
3276      * @stable ICU 54
3277      */
3278     static MeasureUnit *createCubicCentimeter(UErrorCode &status);
3279 
3280     /**
3281      * Returns by value, unit of volume: cubic-centimeter.
3282      * Also see {@link #createCubicCentimeter()}.
3283      * @stable ICU 64
3284      */
3285     static MeasureUnit getCubicCentimeter();
3286 
3287     /**
3288      * Returns by pointer, unit of volume: cubic-foot.
3289      * Caller owns returned value and must free it.
3290      * Also see {@link #getCubicFoot()}.
3291      * @param status ICU error code.
3292      * @stable ICU 54
3293      */
3294     static MeasureUnit *createCubicFoot(UErrorCode &status);
3295 
3296     /**
3297      * Returns by value, unit of volume: cubic-foot.
3298      * Also see {@link #createCubicFoot()}.
3299      * @stable ICU 64
3300      */
3301     static MeasureUnit getCubicFoot();
3302 
3303     /**
3304      * Returns by pointer, unit of volume: cubic-inch.
3305      * Caller owns returned value and must free it.
3306      * Also see {@link #getCubicInch()}.
3307      * @param status ICU error code.
3308      * @stable ICU 54
3309      */
3310     static MeasureUnit *createCubicInch(UErrorCode &status);
3311 
3312     /**
3313      * Returns by value, unit of volume: cubic-inch.
3314      * Also see {@link #createCubicInch()}.
3315      * @stable ICU 64
3316      */
3317     static MeasureUnit getCubicInch();
3318 
3319     /**
3320      * Returns by pointer, unit of volume: cubic-kilometer.
3321      * Caller owns returned value and must free it.
3322      * Also see {@link #getCubicKilometer()}.
3323      * @param status ICU error code.
3324      * @stable ICU 53
3325      */
3326     static MeasureUnit *createCubicKilometer(UErrorCode &status);
3327 
3328     /**
3329      * Returns by value, unit of volume: cubic-kilometer.
3330      * Also see {@link #createCubicKilometer()}.
3331      * @stable ICU 64
3332      */
3333     static MeasureUnit getCubicKilometer();
3334 
3335     /**
3336      * Returns by pointer, unit of volume: cubic-meter.
3337      * Caller owns returned value and must free it.
3338      * Also see {@link #getCubicMeter()}.
3339      * @param status ICU error code.
3340      * @stable ICU 54
3341      */
3342     static MeasureUnit *createCubicMeter(UErrorCode &status);
3343 
3344     /**
3345      * Returns by value, unit of volume: cubic-meter.
3346      * Also see {@link #createCubicMeter()}.
3347      * @stable ICU 64
3348      */
3349     static MeasureUnit getCubicMeter();
3350 
3351     /**
3352      * Returns by pointer, unit of volume: cubic-mile.
3353      * Caller owns returned value and must free it.
3354      * Also see {@link #getCubicMile()}.
3355      * @param status ICU error code.
3356      * @stable ICU 53
3357      */
3358     static MeasureUnit *createCubicMile(UErrorCode &status);
3359 
3360     /**
3361      * Returns by value, unit of volume: cubic-mile.
3362      * Also see {@link #createCubicMile()}.
3363      * @stable ICU 64
3364      */
3365     static MeasureUnit getCubicMile();
3366 
3367     /**
3368      * Returns by pointer, unit of volume: cubic-yard.
3369      * Caller owns returned value and must free it.
3370      * Also see {@link #getCubicYard()}.
3371      * @param status ICU error code.
3372      * @stable ICU 54
3373      */
3374     static MeasureUnit *createCubicYard(UErrorCode &status);
3375 
3376     /**
3377      * Returns by value, unit of volume: cubic-yard.
3378      * Also see {@link #createCubicYard()}.
3379      * @stable ICU 64
3380      */
3381     static MeasureUnit getCubicYard();
3382 
3383     /**
3384      * Returns by pointer, unit of volume: cup.
3385      * Caller owns returned value and must free it.
3386      * Also see {@link #getCup()}.
3387      * @param status ICU error code.
3388      * @stable ICU 54
3389      */
3390     static MeasureUnit *createCup(UErrorCode &status);
3391 
3392     /**
3393      * Returns by value, unit of volume: cup.
3394      * Also see {@link #createCup()}.
3395      * @stable ICU 64
3396      */
3397     static MeasureUnit getCup();
3398 
3399     /**
3400      * Returns by pointer, unit of volume: cup-metric.
3401      * Caller owns returned value and must free it.
3402      * Also see {@link #getCupMetric()}.
3403      * @param status ICU error code.
3404      * @stable ICU 56
3405      */
3406     static MeasureUnit *createCupMetric(UErrorCode &status);
3407 
3408     /**
3409      * Returns by value, unit of volume: cup-metric.
3410      * Also see {@link #createCupMetric()}.
3411      * @stable ICU 64
3412      */
3413     static MeasureUnit getCupMetric();
3414 
3415     /**
3416      * Returns by pointer, unit of volume: deciliter.
3417      * Caller owns returned value and must free it.
3418      * Also see {@link #getDeciliter()}.
3419      * @param status ICU error code.
3420      * @stable ICU 54
3421      */
3422     static MeasureUnit *createDeciliter(UErrorCode &status);
3423 
3424     /**
3425      * Returns by value, unit of volume: deciliter.
3426      * Also see {@link #createDeciliter()}.
3427      * @stable ICU 64
3428      */
3429     static MeasureUnit getDeciliter();
3430 
3431     /**
3432      * Returns by pointer, unit of volume: dessert-spoon.
3433      * Caller owns returned value and must free it.
3434      * Also see {@link #getDessertSpoon()}.
3435      * @param status ICU error code.
3436      * @stable ICU 68
3437      */
3438     static MeasureUnit *createDessertSpoon(UErrorCode &status);
3439 
3440     /**
3441      * Returns by value, unit of volume: dessert-spoon.
3442      * Also see {@link #createDessertSpoon()}.
3443      * @stable ICU 68
3444      */
3445     static MeasureUnit getDessertSpoon();
3446 
3447     /**
3448      * Returns by pointer, unit of volume: dessert-spoon-imperial.
3449      * Caller owns returned value and must free it.
3450      * Also see {@link #getDessertSpoonImperial()}.
3451      * @param status ICU error code.
3452      * @stable ICU 68
3453      */
3454     static MeasureUnit *createDessertSpoonImperial(UErrorCode &status);
3455 
3456     /**
3457      * Returns by value, unit of volume: dessert-spoon-imperial.
3458      * Also see {@link #createDessertSpoonImperial()}.
3459      * @stable ICU 68
3460      */
3461     static MeasureUnit getDessertSpoonImperial();
3462 
3463     /**
3464      * Returns by pointer, unit of volume: dram.
3465      * Caller owns returned value and must free it.
3466      * Also see {@link #getDram()}.
3467      * @param status ICU error code.
3468      * @stable ICU 68
3469      */
3470     static MeasureUnit *createDram(UErrorCode &status);
3471 
3472     /**
3473      * Returns by value, unit of volume: dram.
3474      * Also see {@link #createDram()}.
3475      * @stable ICU 68
3476      */
3477     static MeasureUnit getDram();
3478 
3479     /**
3480      * Returns by pointer, unit of volume: drop.
3481      * Caller owns returned value and must free it.
3482      * Also see {@link #getDrop()}.
3483      * @param status ICU error code.
3484      * @stable ICU 68
3485      */
3486     static MeasureUnit *createDrop(UErrorCode &status);
3487 
3488     /**
3489      * Returns by value, unit of volume: drop.
3490      * Also see {@link #createDrop()}.
3491      * @stable ICU 68
3492      */
3493     static MeasureUnit getDrop();
3494 
3495     /**
3496      * Returns by pointer, unit of volume: fluid-ounce.
3497      * Caller owns returned value and must free it.
3498      * Also see {@link #getFluidOunce()}.
3499      * @param status ICU error code.
3500      * @stable ICU 54
3501      */
3502     static MeasureUnit *createFluidOunce(UErrorCode &status);
3503 
3504     /**
3505      * Returns by value, unit of volume: fluid-ounce.
3506      * Also see {@link #createFluidOunce()}.
3507      * @stable ICU 64
3508      */
3509     static MeasureUnit getFluidOunce();
3510 
3511     /**
3512      * Returns by pointer, unit of volume: fluid-ounce-imperial.
3513      * Caller owns returned value and must free it.
3514      * Also see {@link #getFluidOunceImperial()}.
3515      * @param status ICU error code.
3516      * @stable ICU 64
3517      */
3518     static MeasureUnit *createFluidOunceImperial(UErrorCode &status);
3519 
3520     /**
3521      * Returns by value, unit of volume: fluid-ounce-imperial.
3522      * Also see {@link #createFluidOunceImperial()}.
3523      * @stable ICU 64
3524      */
3525     static MeasureUnit getFluidOunceImperial();
3526 
3527     /**
3528      * Returns by pointer, unit of volume: gallon.
3529      * Caller owns returned value and must free it.
3530      * Also see {@link #getGallon()}.
3531      * @param status ICU error code.
3532      * @stable ICU 54
3533      */
3534     static MeasureUnit *createGallon(UErrorCode &status);
3535 
3536     /**
3537      * Returns by value, unit of volume: gallon.
3538      * Also see {@link #createGallon()}.
3539      * @stable ICU 64
3540      */
3541     static MeasureUnit getGallon();
3542 
3543     /**
3544      * Returns by pointer, unit of volume: gallon-imperial.
3545      * Caller owns returned value and must free it.
3546      * Also see {@link #getGallonImperial()}.
3547      * @param status ICU error code.
3548      * @stable ICU 57
3549      */
3550     static MeasureUnit *createGallonImperial(UErrorCode &status);
3551 
3552     /**
3553      * Returns by value, unit of volume: gallon-imperial.
3554      * Also see {@link #createGallonImperial()}.
3555      * @stable ICU 64
3556      */
3557     static MeasureUnit getGallonImperial();
3558 
3559     /**
3560      * Returns by pointer, unit of volume: hectoliter.
3561      * Caller owns returned value and must free it.
3562      * Also see {@link #getHectoliter()}.
3563      * @param status ICU error code.
3564      * @stable ICU 54
3565      */
3566     static MeasureUnit *createHectoliter(UErrorCode &status);
3567 
3568     /**
3569      * Returns by value, unit of volume: hectoliter.
3570      * Also see {@link #createHectoliter()}.
3571      * @stable ICU 64
3572      */
3573     static MeasureUnit getHectoliter();
3574 
3575     /**
3576      * Returns by pointer, unit of volume: jigger.
3577      * Caller owns returned value and must free it.
3578      * Also see {@link #getJigger()}.
3579      * @param status ICU error code.
3580      * @stable ICU 68
3581      */
3582     static MeasureUnit *createJigger(UErrorCode &status);
3583 
3584     /**
3585      * Returns by value, unit of volume: jigger.
3586      * Also see {@link #createJigger()}.
3587      * @stable ICU 68
3588      */
3589     static MeasureUnit getJigger();
3590 
3591     /**
3592      * Returns by pointer, unit of volume: liter.
3593      * Caller owns returned value and must free it.
3594      * Also see {@link #getLiter()}.
3595      * @param status ICU error code.
3596      * @stable ICU 53
3597      */
3598     static MeasureUnit *createLiter(UErrorCode &status);
3599 
3600     /**
3601      * Returns by value, unit of volume: liter.
3602      * Also see {@link #createLiter()}.
3603      * @stable ICU 64
3604      */
3605     static MeasureUnit getLiter();
3606 
3607     /**
3608      * Returns by pointer, unit of volume: megaliter.
3609      * Caller owns returned value and must free it.
3610      * Also see {@link #getMegaliter()}.
3611      * @param status ICU error code.
3612      * @stable ICU 54
3613      */
3614     static MeasureUnit *createMegaliter(UErrorCode &status);
3615 
3616     /**
3617      * Returns by value, unit of volume: megaliter.
3618      * Also see {@link #createMegaliter()}.
3619      * @stable ICU 64
3620      */
3621     static MeasureUnit getMegaliter();
3622 
3623     /**
3624      * Returns by pointer, unit of volume: milliliter.
3625      * Caller owns returned value and must free it.
3626      * Also see {@link #getMilliliter()}.
3627      * @param status ICU error code.
3628      * @stable ICU 54
3629      */
3630     static MeasureUnit *createMilliliter(UErrorCode &status);
3631 
3632     /**
3633      * Returns by value, unit of volume: milliliter.
3634      * Also see {@link #createMilliliter()}.
3635      * @stable ICU 64
3636      */
3637     static MeasureUnit getMilliliter();
3638 
3639     /**
3640      * Returns by pointer, unit of volume: pinch.
3641      * Caller owns returned value and must free it.
3642      * Also see {@link #getPinch()}.
3643      * @param status ICU error code.
3644      * @stable ICU 68
3645      */
3646     static MeasureUnit *createPinch(UErrorCode &status);
3647 
3648     /**
3649      * Returns by value, unit of volume: pinch.
3650      * Also see {@link #createPinch()}.
3651      * @stable ICU 68
3652      */
3653     static MeasureUnit getPinch();
3654 
3655     /**
3656      * Returns by pointer, unit of volume: pint.
3657      * Caller owns returned value and must free it.
3658      * Also see {@link #getPint()}.
3659      * @param status ICU error code.
3660      * @stable ICU 54
3661      */
3662     static MeasureUnit *createPint(UErrorCode &status);
3663 
3664     /**
3665      * Returns by value, unit of volume: pint.
3666      * Also see {@link #createPint()}.
3667      * @stable ICU 64
3668      */
3669     static MeasureUnit getPint();
3670 
3671     /**
3672      * Returns by pointer, unit of volume: pint-metric.
3673      * Caller owns returned value and must free it.
3674      * Also see {@link #getPintMetric()}.
3675      * @param status ICU error code.
3676      * @stable ICU 56
3677      */
3678     static MeasureUnit *createPintMetric(UErrorCode &status);
3679 
3680     /**
3681      * Returns by value, unit of volume: pint-metric.
3682      * Also see {@link #createPintMetric()}.
3683      * @stable ICU 64
3684      */
3685     static MeasureUnit getPintMetric();
3686 
3687     /**
3688      * Returns by pointer, unit of volume: quart.
3689      * Caller owns returned value and must free it.
3690      * Also see {@link #getQuart()}.
3691      * @param status ICU error code.
3692      * @stable ICU 54
3693      */
3694     static MeasureUnit *createQuart(UErrorCode &status);
3695 
3696     /**
3697      * Returns by value, unit of volume: quart.
3698      * Also see {@link #createQuart()}.
3699      * @stable ICU 64
3700      */
3701     static MeasureUnit getQuart();
3702 
3703     /**
3704      * Returns by pointer, unit of volume: quart-imperial.
3705      * Caller owns returned value and must free it.
3706      * Also see {@link #getQuartImperial()}.
3707      * @param status ICU error code.
3708      * @stable ICU 68
3709      */
3710     static MeasureUnit *createQuartImperial(UErrorCode &status);
3711 
3712     /**
3713      * Returns by value, unit of volume: quart-imperial.
3714      * Also see {@link #createQuartImperial()}.
3715      * @stable ICU 68
3716      */
3717     static MeasureUnit getQuartImperial();
3718 
3719     /**
3720      * Returns by pointer, unit of volume: tablespoon.
3721      * Caller owns returned value and must free it.
3722      * Also see {@link #getTablespoon()}.
3723      * @param status ICU error code.
3724      * @stable ICU 54
3725      */
3726     static MeasureUnit *createTablespoon(UErrorCode &status);
3727 
3728     /**
3729      * Returns by value, unit of volume: tablespoon.
3730      * Also see {@link #createTablespoon()}.
3731      * @stable ICU 64
3732      */
3733     static MeasureUnit getTablespoon();
3734 
3735     /**
3736      * Returns by pointer, unit of volume: teaspoon.
3737      * Caller owns returned value and must free it.
3738      * Also see {@link #getTeaspoon()}.
3739      * @param status ICU error code.
3740      * @stable ICU 54
3741      */
3742     static MeasureUnit *createTeaspoon(UErrorCode &status);
3743 
3744     /**
3745      * Returns by value, unit of volume: teaspoon.
3746      * Also see {@link #createTeaspoon()}.
3747      * @stable ICU 64
3748      */
3749     static MeasureUnit getTeaspoon();
3750 
3751 // End generated createXXX methods
3752 
3753  protected:
3754 
3755 #ifndef U_HIDE_INTERNAL_API
3756     /**
3757      * For ICU use only.
3758      * @internal
3759      */
3760     void initTime(const char *timeId);
3761 
3762     /**
3763      * For ICU use only.
3764      * @internal
3765      */
3766     void initCurrency(StringPiece isoCurrency);
3767 
3768 #endif  /* U_HIDE_INTERNAL_API */
3769 
3770 private:
3771 
3772     // Used by new draft APIs in ICU 67. If non-null, fImpl is owned by the
3773     // MeasureUnit.
3774     MeasureUnitImpl* fImpl;
3775 
3776     // An index into a static string list in measunit.cpp. If set to -1, fImpl
3777     // is in use instead of fTypeId and fSubTypeId.
3778     int16_t fSubTypeId;
3779     // An index into a static string list in measunit.cpp. If set to -1, fImpl
3780     // is in use instead of fTypeId and fSubTypeId.
3781     int8_t fTypeId;
3782 
3783     MeasureUnit(int32_t typeId, int32_t subTypeId);
3784     MeasureUnit(MeasureUnitImpl&& impl);
3785     void setTo(int32_t typeId, int32_t subTypeId);
3786     static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
3787 
3788     /**
3789      * Sets output's typeId and subTypeId according to subType, if subType is a
3790      * valid/known identifier.
3791      *
3792      * @return Whether subType is known to ICU. If false, output was not
3793      * modified.
3794      */
3795     static bool findBySubType(StringPiece subType, MeasureUnit* output);
3796 
3797     /** Internal version of public API */
3798     LocalArray<MeasureUnit> splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const;
3799 
3800     friend class MeasureUnitImpl;
3801 
3802     // For access to findBySubType
3803     friend class number::impl::LongNameHandler;
3804 };
3805 
3806 // inline impl of @stable ICU 68 method
3807 inline std::pair<LocalArray<MeasureUnit>, int32_t>
3808 MeasureUnit::splitToSingleUnits(UErrorCode& status) const {
3809     int32_t length;
3810     auto array = splitToSingleUnitsImpl(length, status);
3811     return std::make_pair(std::move(array), length);
3812 }
3813 
3814 U_NAMESPACE_END
3815 
3816 #endif // !UNCONFIG_NO_FORMATTING
3817 
3818 #endif /* U_SHOW_CPLUSPLUS_API */
3819 
3820 #endif // __MEASUREUNIT_H__