ICU 73.2  73.2
measunit.h
Go to the documentation of this file.
00001 // © 2016 and later: Unicode, Inc. and others.
00002 // License & terms of use: http://www.unicode.org/copyright.html
00003 /*
00004 **********************************************************************
00005 * Copyright (c) 2004-2016, International Business Machines
00006 * Corporation and others.  All Rights Reserved.
00007 **********************************************************************
00008 * Author: Alan Liu
00009 * Created: April 26, 2004
00010 * Since: ICU 3.0
00011 **********************************************************************
00012 */
00013 #ifndef __MEASUREUNIT_H__
00014 #define __MEASUREUNIT_H__
00015 
00016 #include "unicode/utypes.h"
00017 
00018 #if U_SHOW_CPLUSPLUS_API
00019 
00020 #if !UCONFIG_NO_FORMATTING
00021 
00022 #include <utility>
00023 #include "unicode/unistr.h"
00024 #include "unicode/localpointer.h"
00025 
00031 U_NAMESPACE_BEGIN
00032 
00033 class StringEnumeration;
00034 class MeasureUnitImpl;
00035 
00036 namespace number {
00037 namespace impl {
00038 class LongNameHandler;
00039 }
00040 } // namespace number
00041 
00057 enum UMeasureUnitComplexity {
00063     UMEASURE_UNIT_SINGLE,
00064 
00070     UMEASURE_UNIT_COMPOUND,
00071 
00077     UMEASURE_UNIT_MIXED
00078 };
00079 
00080 
00091 typedef enum UMeasurePrefix {
00101     UMEASURE_PREFIX_ONE = 30 + 0,
00102 
00108     UMEASURE_PREFIX_YOTTA = UMEASURE_PREFIX_ONE + 24,
00109 
00110 #ifndef U_HIDE_INTERNAL_API
00111 
00116     UMEASURE_PREFIX_INTERNAL_MAX_SI = UMEASURE_PREFIX_YOTTA,
00117 #endif  /* U_HIDE_INTERNAL_API */
00118 
00124     UMEASURE_PREFIX_ZETTA = UMEASURE_PREFIX_ONE + 21,
00125 
00131     UMEASURE_PREFIX_EXA = UMEASURE_PREFIX_ONE + 18,
00132 
00138     UMEASURE_PREFIX_PETA = UMEASURE_PREFIX_ONE + 15,
00139 
00145     UMEASURE_PREFIX_TERA = UMEASURE_PREFIX_ONE + 12,
00146 
00152     UMEASURE_PREFIX_GIGA = UMEASURE_PREFIX_ONE + 9,
00153 
00159     UMEASURE_PREFIX_MEGA = UMEASURE_PREFIX_ONE + 6,
00160 
00166     UMEASURE_PREFIX_KILO = UMEASURE_PREFIX_ONE + 3,
00167 
00173     UMEASURE_PREFIX_HECTO = UMEASURE_PREFIX_ONE + 2,
00174 
00180     UMEASURE_PREFIX_DEKA = UMEASURE_PREFIX_ONE + 1,
00181 
00187     UMEASURE_PREFIX_DECI = UMEASURE_PREFIX_ONE + -1,
00188 
00194     UMEASURE_PREFIX_CENTI = UMEASURE_PREFIX_ONE + -2,
00195 
00201     UMEASURE_PREFIX_MILLI = UMEASURE_PREFIX_ONE + -3,
00202 
00208     UMEASURE_PREFIX_MICRO = UMEASURE_PREFIX_ONE + -6,
00209 
00215     UMEASURE_PREFIX_NANO = UMEASURE_PREFIX_ONE + -9,
00216 
00222     UMEASURE_PREFIX_PICO = UMEASURE_PREFIX_ONE + -12,
00223 
00229     UMEASURE_PREFIX_FEMTO = UMEASURE_PREFIX_ONE + -15,
00230 
00236     UMEASURE_PREFIX_ATTO = UMEASURE_PREFIX_ONE + -18,
00237 
00243     UMEASURE_PREFIX_ZEPTO = UMEASURE_PREFIX_ONE + -21,
00244 
00250     UMEASURE_PREFIX_YOCTO = UMEASURE_PREFIX_ONE + -24,
00251 
00252 #ifndef U_HIDE_INTERNAL_API
00253 
00258     UMEASURE_PREFIX_INTERNAL_MIN_SI = UMEASURE_PREFIX_YOCTO,
00259 #endif  // U_HIDE_INTERNAL_API
00260 
00261     // Cannot conditionalize the following with #ifndef U_HIDE_INTERNAL_API,
00262     // used in definitions of non-internal enum values
00268     UMEASURE_PREFIX_INTERNAL_ONE_BIN = -60,
00269 
00275     UMEASURE_PREFIX_KIBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 1,
00276 
00277 #ifndef U_HIDE_INTERNAL_API
00278 
00283     UMEASURE_PREFIX_INTERNAL_MIN_BIN = UMEASURE_PREFIX_KIBI,
00284 #endif  // U_HIDE_INTERNAL_API
00285 
00291     UMEASURE_PREFIX_MEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 2,
00292 
00298     UMEASURE_PREFIX_GIBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 3,
00299 
00305     UMEASURE_PREFIX_TEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 4,
00306 
00312     UMEASURE_PREFIX_PEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 5,
00313 
00319     UMEASURE_PREFIX_EXBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 6,
00320 
00326     UMEASURE_PREFIX_ZEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 7,
00327 
00333     UMEASURE_PREFIX_YOBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 8,
00334 
00335 #ifndef U_HIDE_INTERNAL_API
00336 
00341     UMEASURE_PREFIX_INTERNAL_MAX_BIN = UMEASURE_PREFIX_YOBI,
00342 #endif  // U_HIDE_INTERNAL_API
00343 } UMeasurePrefix;
00344 
00352 U_CAPI int32_t U_EXPORT2 umeas_getPrefixBase(UMeasurePrefix unitPrefix);
00353 
00360 U_CAPI int32_t U_EXPORT2 umeas_getPrefixPower(UMeasurePrefix unitPrefix);
00361 
00369 class U_I18N_API MeasureUnit: public UObject {
00370  public:
00371 
00377     MeasureUnit();
00378 
00383     MeasureUnit(const MeasureUnit &other);
00384 
00389     MeasureUnit(MeasureUnit &&other) noexcept;
00390 
00404     static MeasureUnit forIdentifier(StringPiece identifier, UErrorCode& status);
00405 
00410     MeasureUnit &operator=(const MeasureUnit &other);
00411 
00416     MeasureUnit &operator=(MeasureUnit &&other) noexcept;
00417 
00423     virtual MeasureUnit* clone() const;
00424 
00429     virtual ~MeasureUnit();
00430 
00436     virtual bool operator==(const UObject& other) const;
00437 
00443     bool operator!=(const UObject& other) const {
00444         return !(*this == other);
00445     }
00446 
00454     const char *getType() const;
00455 
00463     const char *getSubtype() const;
00464 
00471     const char* getIdentifier() const;
00472 
00480     UMeasureUnitComplexity getComplexity(UErrorCode& status) const;
00481 
00496     MeasureUnit withPrefix(UMeasurePrefix prefix, UErrorCode& status) const;
00497 
00512     UMeasurePrefix getPrefix(UErrorCode& status) const;
00513 
00528     MeasureUnit withDimensionality(int32_t dimensionality, UErrorCode& status) const;
00529 
00543     int32_t getDimensionality(UErrorCode& status) const;
00544 
00557     MeasureUnit reciprocal(UErrorCode& status) const;
00558 
00576     MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;
00577 
00593     inline std::pair<LocalArray<MeasureUnit>, int32_t> splitToSingleUnits(UErrorCode& status) const;
00594 
00606     static int32_t getAvailable(
00607             MeasureUnit *destArray,
00608             int32_t destCapacity,
00609             UErrorCode &errorCode);
00610 
00623     static int32_t getAvailable(
00624             const char *type,
00625             MeasureUnit *destArray,
00626             int32_t destCapacity,
00627             UErrorCode &errorCode);
00628 
00637     static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
00638 
00650     static UClassID U_EXPORT2 getStaticClassID(void);
00651 
00663     virtual UClassID getDynamicClassID(void) const override;
00664 
00665 #ifndef U_HIDE_INTERNAL_API
00666 
00671     int32_t getOffset() const;
00672 #endif /* U_HIDE_INTERNAL_API */
00673 
00674 // All code between the "Start generated createXXX methods" comment and
00675 // the "End generated createXXX methods" comment is auto generated code
00676 // and must not be edited manually. For instructions on how to correctly
00677 // update this code, refer to:
00678 // docs/processes/release/tasks/updating-measure-unit.md
00679 //
00680 // Start generated createXXX methods
00681 
00689     static MeasureUnit *createGForce(UErrorCode &status);
00690 
00696     static MeasureUnit getGForce();
00697 
00705     static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
00706 
00712     static MeasureUnit getMeterPerSecondSquared();
00713 
00721     static MeasureUnit *createArcMinute(UErrorCode &status);
00722 
00728     static MeasureUnit getArcMinute();
00729 
00737     static MeasureUnit *createArcSecond(UErrorCode &status);
00738 
00744     static MeasureUnit getArcSecond();
00745 
00753     static MeasureUnit *createDegree(UErrorCode &status);
00754 
00760     static MeasureUnit getDegree();
00761 
00769     static MeasureUnit *createRadian(UErrorCode &status);
00770 
00776     static MeasureUnit getRadian();
00777 
00785     static MeasureUnit *createRevolutionAngle(UErrorCode &status);
00786 
00792     static MeasureUnit getRevolutionAngle();
00793 
00801     static MeasureUnit *createAcre(UErrorCode &status);
00802 
00808     static MeasureUnit getAcre();
00809 
00817     static MeasureUnit *createDunam(UErrorCode &status);
00818 
00824     static MeasureUnit getDunam();
00825 
00833     static MeasureUnit *createHectare(UErrorCode &status);
00834 
00840     static MeasureUnit getHectare();
00841 
00849     static MeasureUnit *createSquareCentimeter(UErrorCode &status);
00850 
00856     static MeasureUnit getSquareCentimeter();
00857 
00865     static MeasureUnit *createSquareFoot(UErrorCode &status);
00866 
00872     static MeasureUnit getSquareFoot();
00873 
00881     static MeasureUnit *createSquareInch(UErrorCode &status);
00882 
00888     static MeasureUnit getSquareInch();
00889 
00897     static MeasureUnit *createSquareKilometer(UErrorCode &status);
00898 
00904     static MeasureUnit getSquareKilometer();
00905 
00913     static MeasureUnit *createSquareMeter(UErrorCode &status);
00914 
00920     static MeasureUnit getSquareMeter();
00921 
00929     static MeasureUnit *createSquareMile(UErrorCode &status);
00930 
00936     static MeasureUnit getSquareMile();
00937 
00945     static MeasureUnit *createSquareYard(UErrorCode &status);
00946 
00952     static MeasureUnit getSquareYard();
00953 
00961     static MeasureUnit *createItem(UErrorCode &status);
00962 
00968     static MeasureUnit getItem();
00969 
00977     static MeasureUnit *createKarat(UErrorCode &status);
00978 
00984     static MeasureUnit getKarat();
00985 
00993     static MeasureUnit *createMilligramOfglucosePerDeciliter(UErrorCode &status);
00994 
01000     static MeasureUnit getMilligramOfglucosePerDeciliter();
01001 
01009     static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
01010 
01016     static MeasureUnit getMilligramPerDeciliter();
01017 
01025     static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
01026 
01032     static MeasureUnit getMillimolePerLiter();
01033 
01041     static MeasureUnit *createMole(UErrorCode &status);
01042 
01048     static MeasureUnit getMole();
01049 
01057     static MeasureUnit *createPercent(UErrorCode &status);
01058 
01064     static MeasureUnit getPercent();
01065 
01073     static MeasureUnit *createPermille(UErrorCode &status);
01074 
01080     static MeasureUnit getPermille();
01081 
01089     static MeasureUnit *createPartPerMillion(UErrorCode &status);
01090 
01096     static MeasureUnit getPartPerMillion();
01097 
01105     static MeasureUnit *createPermyriad(UErrorCode &status);
01106 
01112     static MeasureUnit getPermyriad();
01113 
01121     static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
01122 
01128     static MeasureUnit getLiterPer100Kilometers();
01129 
01137     static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
01138 
01144     static MeasureUnit getLiterPerKilometer();
01145 
01153     static MeasureUnit *createMilePerGallon(UErrorCode &status);
01154 
01160     static MeasureUnit getMilePerGallon();
01161 
01169     static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
01170 
01176     static MeasureUnit getMilePerGallonImperial();
01177 
01185     static MeasureUnit *createBit(UErrorCode &status);
01186 
01192     static MeasureUnit getBit();
01193 
01201     static MeasureUnit *createByte(UErrorCode &status);
01202 
01208     static MeasureUnit getByte();
01209 
01217     static MeasureUnit *createGigabit(UErrorCode &status);
01218 
01224     static MeasureUnit getGigabit();
01225 
01233     static MeasureUnit *createGigabyte(UErrorCode &status);
01234 
01240     static MeasureUnit getGigabyte();
01241 
01249     static MeasureUnit *createKilobit(UErrorCode &status);
01250 
01256     static MeasureUnit getKilobit();
01257 
01265     static MeasureUnit *createKilobyte(UErrorCode &status);
01266 
01272     static MeasureUnit getKilobyte();
01273 
01281     static MeasureUnit *createMegabit(UErrorCode &status);
01282 
01288     static MeasureUnit getMegabit();
01289 
01297     static MeasureUnit *createMegabyte(UErrorCode &status);
01298 
01304     static MeasureUnit getMegabyte();
01305 
01313     static MeasureUnit *createPetabyte(UErrorCode &status);
01314 
01320     static MeasureUnit getPetabyte();
01321 
01329     static MeasureUnit *createTerabit(UErrorCode &status);
01330 
01336     static MeasureUnit getTerabit();
01337 
01345     static MeasureUnit *createTerabyte(UErrorCode &status);
01346 
01352     static MeasureUnit getTerabyte();
01353 
01361     static MeasureUnit *createCentury(UErrorCode &status);
01362 
01368     static MeasureUnit getCentury();
01369 
01377     static MeasureUnit *createDay(UErrorCode &status);
01378 
01384     static MeasureUnit getDay();
01385 
01393     static MeasureUnit *createDayPerson(UErrorCode &status);
01394 
01400     static MeasureUnit getDayPerson();
01401 
01409     static MeasureUnit *createDecade(UErrorCode &status);
01410 
01416     static MeasureUnit getDecade();
01417 
01425     static MeasureUnit *createHour(UErrorCode &status);
01426 
01432     static MeasureUnit getHour();
01433 
01441     static MeasureUnit *createMicrosecond(UErrorCode &status);
01442 
01448     static MeasureUnit getMicrosecond();
01449 
01457     static MeasureUnit *createMillisecond(UErrorCode &status);
01458 
01464     static MeasureUnit getMillisecond();
01465 
01473     static MeasureUnit *createMinute(UErrorCode &status);
01474 
01480     static MeasureUnit getMinute();
01481 
01489     static MeasureUnit *createMonth(UErrorCode &status);
01490 
01496     static MeasureUnit getMonth();
01497 
01505     static MeasureUnit *createMonthPerson(UErrorCode &status);
01506 
01512     static MeasureUnit getMonthPerson();
01513 
01521     static MeasureUnit *createNanosecond(UErrorCode &status);
01522 
01528     static MeasureUnit getNanosecond();
01529 
01530 #ifndef U_HIDE_DRAFT_API
01531 
01538     static MeasureUnit *createQuarter(UErrorCode &status);
01539 
01545     static MeasureUnit getQuarter();
01546 #endif /* U_HIDE_DRAFT_API */
01547 
01555     static MeasureUnit *createSecond(UErrorCode &status);
01556 
01562     static MeasureUnit getSecond();
01563 
01571     static MeasureUnit *createWeek(UErrorCode &status);
01572 
01578     static MeasureUnit getWeek();
01579 
01587     static MeasureUnit *createWeekPerson(UErrorCode &status);
01588 
01594     static MeasureUnit getWeekPerson();
01595 
01603     static MeasureUnit *createYear(UErrorCode &status);
01604 
01610     static MeasureUnit getYear();
01611 
01619     static MeasureUnit *createYearPerson(UErrorCode &status);
01620 
01626     static MeasureUnit getYearPerson();
01627 
01635     static MeasureUnit *createAmpere(UErrorCode &status);
01636 
01642     static MeasureUnit getAmpere();
01643 
01651     static MeasureUnit *createMilliampere(UErrorCode &status);
01652 
01658     static MeasureUnit getMilliampere();
01659 
01667     static MeasureUnit *createOhm(UErrorCode &status);
01668 
01674     static MeasureUnit getOhm();
01675 
01683     static MeasureUnit *createVolt(UErrorCode &status);
01684 
01690     static MeasureUnit getVolt();
01691 
01699     static MeasureUnit *createBritishThermalUnit(UErrorCode &status);
01700 
01706     static MeasureUnit getBritishThermalUnit();
01707 
01715     static MeasureUnit *createCalorie(UErrorCode &status);
01716 
01722     static MeasureUnit getCalorie();
01723 
01731     static MeasureUnit *createElectronvolt(UErrorCode &status);
01732 
01738     static MeasureUnit getElectronvolt();
01739 
01747     static MeasureUnit *createFoodcalorie(UErrorCode &status);
01748 
01754     static MeasureUnit getFoodcalorie();
01755 
01763     static MeasureUnit *createJoule(UErrorCode &status);
01764 
01770     static MeasureUnit getJoule();
01771 
01779     static MeasureUnit *createKilocalorie(UErrorCode &status);
01780 
01786     static MeasureUnit getKilocalorie();
01787 
01795     static MeasureUnit *createKilojoule(UErrorCode &status);
01796 
01802     static MeasureUnit getKilojoule();
01803 
01811     static MeasureUnit *createKilowattHour(UErrorCode &status);
01812 
01818     static MeasureUnit getKilowattHour();
01819 
01827     static MeasureUnit *createThermUs(UErrorCode &status);
01828 
01834     static MeasureUnit getThermUs();
01835 
01843     static MeasureUnit *createKilowattHourPer100Kilometer(UErrorCode &status);
01844 
01850     static MeasureUnit getKilowattHourPer100Kilometer();
01851 
01859     static MeasureUnit *createNewton(UErrorCode &status);
01860 
01866     static MeasureUnit getNewton();
01867 
01875     static MeasureUnit *createPoundForce(UErrorCode &status);
01876 
01882     static MeasureUnit getPoundForce();
01883 
01891     static MeasureUnit *createGigahertz(UErrorCode &status);
01892 
01898     static MeasureUnit getGigahertz();
01899 
01907     static MeasureUnit *createHertz(UErrorCode &status);
01908 
01914     static MeasureUnit getHertz();
01915 
01923     static MeasureUnit *createKilohertz(UErrorCode &status);
01924 
01930     static MeasureUnit getKilohertz();
01931 
01939     static MeasureUnit *createMegahertz(UErrorCode &status);
01940 
01946     static MeasureUnit getMegahertz();
01947 
01955     static MeasureUnit *createDot(UErrorCode &status);
01956 
01962     static MeasureUnit getDot();
01963 
01971     static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
01972 
01978     static MeasureUnit getDotPerCentimeter();
01979 
01987     static MeasureUnit *createDotPerInch(UErrorCode &status);
01988 
01994     static MeasureUnit getDotPerInch();
01995 
02003     static MeasureUnit *createEm(UErrorCode &status);
02004 
02010     static MeasureUnit getEm();
02011 
02019     static MeasureUnit *createMegapixel(UErrorCode &status);
02020 
02026     static MeasureUnit getMegapixel();
02027 
02035     static MeasureUnit *createPixel(UErrorCode &status);
02036 
02042     static MeasureUnit getPixel();
02043 
02051     static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
02052 
02058     static MeasureUnit getPixelPerCentimeter();
02059 
02067     static MeasureUnit *createPixelPerInch(UErrorCode &status);
02068 
02074     static MeasureUnit getPixelPerInch();
02075 
02083     static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
02084 
02090     static MeasureUnit getAstronomicalUnit();
02091 
02099     static MeasureUnit *createCentimeter(UErrorCode &status);
02100 
02106     static MeasureUnit getCentimeter();
02107 
02115     static MeasureUnit *createDecimeter(UErrorCode &status);
02116 
02122     static MeasureUnit getDecimeter();
02123 
02131     static MeasureUnit *createEarthRadius(UErrorCode &status);
02132 
02138     static MeasureUnit getEarthRadius();
02139 
02147     static MeasureUnit *createFathom(UErrorCode &status);
02148 
02154     static MeasureUnit getFathom();
02155 
02163     static MeasureUnit *createFoot(UErrorCode &status);
02164 
02170     static MeasureUnit getFoot();
02171 
02179     static MeasureUnit *createFurlong(UErrorCode &status);
02180 
02186     static MeasureUnit getFurlong();
02187 
02195     static MeasureUnit *createInch(UErrorCode &status);
02196 
02202     static MeasureUnit getInch();
02203 
02211     static MeasureUnit *createKilometer(UErrorCode &status);
02212 
02218     static MeasureUnit getKilometer();
02219 
02227     static MeasureUnit *createLightYear(UErrorCode &status);
02228 
02234     static MeasureUnit getLightYear();
02235 
02243     static MeasureUnit *createMeter(UErrorCode &status);
02244 
02250     static MeasureUnit getMeter();
02251 
02259     static MeasureUnit *createMicrometer(UErrorCode &status);
02260 
02266     static MeasureUnit getMicrometer();
02267 
02275     static MeasureUnit *createMile(UErrorCode &status);
02276 
02282     static MeasureUnit getMile();
02283 
02291     static MeasureUnit *createMileScandinavian(UErrorCode &status);
02292 
02298     static MeasureUnit getMileScandinavian();
02299 
02307     static MeasureUnit *createMillimeter(UErrorCode &status);
02308 
02314     static MeasureUnit getMillimeter();
02315 
02323     static MeasureUnit *createNanometer(UErrorCode &status);
02324 
02330     static MeasureUnit getNanometer();
02331 
02339     static MeasureUnit *createNauticalMile(UErrorCode &status);
02340 
02346     static MeasureUnit getNauticalMile();
02347 
02355     static MeasureUnit *createParsec(UErrorCode &status);
02356 
02362     static MeasureUnit getParsec();
02363 
02371     static MeasureUnit *createPicometer(UErrorCode &status);
02372 
02378     static MeasureUnit getPicometer();
02379 
02387     static MeasureUnit *createPoint(UErrorCode &status);
02388 
02394     static MeasureUnit getPoint();
02395 
02403     static MeasureUnit *createSolarRadius(UErrorCode &status);
02404 
02410     static MeasureUnit getSolarRadius();
02411 
02419     static MeasureUnit *createYard(UErrorCode &status);
02420 
02426     static MeasureUnit getYard();
02427 
02435     static MeasureUnit *createCandela(UErrorCode &status);
02436 
02442     static MeasureUnit getCandela();
02443 
02451     static MeasureUnit *createLumen(UErrorCode &status);
02452 
02458     static MeasureUnit getLumen();
02459 
02467     static MeasureUnit *createLux(UErrorCode &status);
02468 
02474     static MeasureUnit getLux();
02475 
02483     static MeasureUnit *createSolarLuminosity(UErrorCode &status);
02484 
02490     static MeasureUnit getSolarLuminosity();
02491 
02499     static MeasureUnit *createCarat(UErrorCode &status);
02500 
02506     static MeasureUnit getCarat();
02507 
02515     static MeasureUnit *createDalton(UErrorCode &status);
02516 
02522     static MeasureUnit getDalton();
02523 
02531     static MeasureUnit *createEarthMass(UErrorCode &status);
02532 
02538     static MeasureUnit getEarthMass();
02539 
02547     static MeasureUnit *createGrain(UErrorCode &status);
02548 
02554     static MeasureUnit getGrain();
02555 
02563     static MeasureUnit *createGram(UErrorCode &status);
02564 
02570     static MeasureUnit getGram();
02571 
02579     static MeasureUnit *createKilogram(UErrorCode &status);
02580 
02586     static MeasureUnit getKilogram();
02587 
02599     static MeasureUnit *createMetricTon(UErrorCode &status);
02600 
02610     static MeasureUnit getMetricTon();
02611 
02619     static MeasureUnit *createMicrogram(UErrorCode &status);
02620 
02626     static MeasureUnit getMicrogram();
02627 
02635     static MeasureUnit *createMilligram(UErrorCode &status);
02636 
02642     static MeasureUnit getMilligram();
02643 
02651     static MeasureUnit *createOunce(UErrorCode &status);
02652 
02658     static MeasureUnit getOunce();
02659 
02667     static MeasureUnit *createOunceTroy(UErrorCode &status);
02668 
02674     static MeasureUnit getOunceTroy();
02675 
02683     static MeasureUnit *createPound(UErrorCode &status);
02684 
02690     static MeasureUnit getPound();
02691 
02699     static MeasureUnit *createSolarMass(UErrorCode &status);
02700 
02706     static MeasureUnit getSolarMass();
02707 
02715     static MeasureUnit *createStone(UErrorCode &status);
02716 
02722     static MeasureUnit getStone();
02723 
02731     static MeasureUnit *createTon(UErrorCode &status);
02732 
02738     static MeasureUnit getTon();
02739 
02740 #ifndef U_HIDE_DRAFT_API
02741 
02748     static MeasureUnit *createTonne(UErrorCode &status);
02749 
02755     static MeasureUnit getTonne();
02756 #endif /* U_HIDE_DRAFT_API */
02757 
02765     static MeasureUnit *createGigawatt(UErrorCode &status);
02766 
02772     static MeasureUnit getGigawatt();
02773 
02781     static MeasureUnit *createHorsepower(UErrorCode &status);
02782 
02788     static MeasureUnit getHorsepower();
02789 
02797     static MeasureUnit *createKilowatt(UErrorCode &status);
02798 
02804     static MeasureUnit getKilowatt();
02805 
02813     static MeasureUnit *createMegawatt(UErrorCode &status);
02814 
02820     static MeasureUnit getMegawatt();
02821 
02829     static MeasureUnit *createMilliwatt(UErrorCode &status);
02830 
02836     static MeasureUnit getMilliwatt();
02837 
02845     static MeasureUnit *createWatt(UErrorCode &status);
02846 
02852     static MeasureUnit getWatt();
02853 
02861     static MeasureUnit *createAtmosphere(UErrorCode &status);
02862 
02868     static MeasureUnit getAtmosphere();
02869 
02877     static MeasureUnit *createBar(UErrorCode &status);
02878 
02884     static MeasureUnit getBar();
02885 
02893     static MeasureUnit *createHectopascal(UErrorCode &status);
02894 
02900     static MeasureUnit getHectopascal();
02901 
02909     static MeasureUnit *createInchHg(UErrorCode &status);
02910 
02916     static MeasureUnit getInchHg();
02917 
02925     static MeasureUnit *createKilopascal(UErrorCode &status);
02926 
02932     static MeasureUnit getKilopascal();
02933 
02941     static MeasureUnit *createMegapascal(UErrorCode &status);
02942 
02948     static MeasureUnit getMegapascal();
02949 
02957     static MeasureUnit *createMillibar(UErrorCode &status);
02958 
02964     static MeasureUnit getMillibar();
02965 
02973     static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
02974 
02980     static MeasureUnit getMillimeterOfMercury();
02981 
02989     static MeasureUnit *createPascal(UErrorCode &status);
02990 
02996     static MeasureUnit getPascal();
02997 
03005     static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
03006 
03012     static MeasureUnit getPoundPerSquareInch();
03013 
03014 #ifndef U_HIDE_DRAFT_API
03015 
03022     static MeasureUnit *createBeaufort(UErrorCode &status);
03023 
03029     static MeasureUnit getBeaufort();
03030 #endif /* U_HIDE_DRAFT_API */
03031 
03039     static MeasureUnit *createKilometerPerHour(UErrorCode &status);
03040 
03046     static MeasureUnit getKilometerPerHour();
03047 
03055     static MeasureUnit *createKnot(UErrorCode &status);
03056 
03062     static MeasureUnit getKnot();
03063 
03071     static MeasureUnit *createMeterPerSecond(UErrorCode &status);
03072 
03078     static MeasureUnit getMeterPerSecond();
03079 
03087     static MeasureUnit *createMilePerHour(UErrorCode &status);
03088 
03094     static MeasureUnit getMilePerHour();
03095 
03103     static MeasureUnit *createCelsius(UErrorCode &status);
03104 
03110     static MeasureUnit getCelsius();
03111 
03119     static MeasureUnit *createFahrenheit(UErrorCode &status);
03120 
03126     static MeasureUnit getFahrenheit();
03127 
03135     static MeasureUnit *createGenericTemperature(UErrorCode &status);
03136 
03142     static MeasureUnit getGenericTemperature();
03143 
03151     static MeasureUnit *createKelvin(UErrorCode &status);
03152 
03158     static MeasureUnit getKelvin();
03159 
03167     static MeasureUnit *createNewtonMeter(UErrorCode &status);
03168 
03174     static MeasureUnit getNewtonMeter();
03175 
03183     static MeasureUnit *createPoundFoot(UErrorCode &status);
03184 
03190     static MeasureUnit getPoundFoot();
03191 
03199     static MeasureUnit *createAcreFoot(UErrorCode &status);
03200 
03206     static MeasureUnit getAcreFoot();
03207 
03215     static MeasureUnit *createBarrel(UErrorCode &status);
03216 
03222     static MeasureUnit getBarrel();
03223 
03231     static MeasureUnit *createBushel(UErrorCode &status);
03232 
03238     static MeasureUnit getBushel();
03239 
03247     static MeasureUnit *createCentiliter(UErrorCode &status);
03248 
03254     static MeasureUnit getCentiliter();
03255 
03263     static MeasureUnit *createCubicCentimeter(UErrorCode &status);
03264 
03270     static MeasureUnit getCubicCentimeter();
03271 
03279     static MeasureUnit *createCubicFoot(UErrorCode &status);
03280 
03286     static MeasureUnit getCubicFoot();
03287 
03295     static MeasureUnit *createCubicInch(UErrorCode &status);
03296 
03302     static MeasureUnit getCubicInch();
03303 
03311     static MeasureUnit *createCubicKilometer(UErrorCode &status);
03312 
03318     static MeasureUnit getCubicKilometer();
03319 
03327     static MeasureUnit *createCubicMeter(UErrorCode &status);
03328 
03334     static MeasureUnit getCubicMeter();
03335 
03343     static MeasureUnit *createCubicMile(UErrorCode &status);
03344 
03350     static MeasureUnit getCubicMile();
03351 
03359     static MeasureUnit *createCubicYard(UErrorCode &status);
03360 
03366     static MeasureUnit getCubicYard();
03367 
03375     static MeasureUnit *createCup(UErrorCode &status);
03376 
03382     static MeasureUnit getCup();
03383 
03391     static MeasureUnit *createCupMetric(UErrorCode &status);
03392 
03398     static MeasureUnit getCupMetric();
03399 
03407     static MeasureUnit *createDeciliter(UErrorCode &status);
03408 
03414     static MeasureUnit getDeciliter();
03415 
03423     static MeasureUnit *createDessertSpoon(UErrorCode &status);
03424 
03430     static MeasureUnit getDessertSpoon();
03431 
03439     static MeasureUnit *createDessertSpoonImperial(UErrorCode &status);
03440 
03446     static MeasureUnit getDessertSpoonImperial();
03447 
03455     static MeasureUnit *createDram(UErrorCode &status);
03456 
03462     static MeasureUnit getDram();
03463 
03471     static MeasureUnit *createDrop(UErrorCode &status);
03472 
03478     static MeasureUnit getDrop();
03479 
03487     static MeasureUnit *createFluidOunce(UErrorCode &status);
03488 
03494     static MeasureUnit getFluidOunce();
03495 
03503     static MeasureUnit *createFluidOunceImperial(UErrorCode &status);
03504 
03510     static MeasureUnit getFluidOunceImperial();
03511 
03519     static MeasureUnit *createGallon(UErrorCode &status);
03520 
03526     static MeasureUnit getGallon();
03527 
03535     static MeasureUnit *createGallonImperial(UErrorCode &status);
03536 
03542     static MeasureUnit getGallonImperial();
03543 
03551     static MeasureUnit *createHectoliter(UErrorCode &status);
03552 
03558     static MeasureUnit getHectoliter();
03559 
03567     static MeasureUnit *createJigger(UErrorCode &status);
03568 
03574     static MeasureUnit getJigger();
03575 
03583     static MeasureUnit *createLiter(UErrorCode &status);
03584 
03590     static MeasureUnit getLiter();
03591 
03599     static MeasureUnit *createMegaliter(UErrorCode &status);
03600 
03606     static MeasureUnit getMegaliter();
03607 
03615     static MeasureUnit *createMilliliter(UErrorCode &status);
03616 
03622     static MeasureUnit getMilliliter();
03623 
03631     static MeasureUnit *createPinch(UErrorCode &status);
03632 
03638     static MeasureUnit getPinch();
03639 
03647     static MeasureUnit *createPint(UErrorCode &status);
03648 
03654     static MeasureUnit getPint();
03655 
03663     static MeasureUnit *createPintMetric(UErrorCode &status);
03664 
03670     static MeasureUnit getPintMetric();
03671 
03679     static MeasureUnit *createQuart(UErrorCode &status);
03680 
03686     static MeasureUnit getQuart();
03687 
03695     static MeasureUnit *createQuartImperial(UErrorCode &status);
03696 
03702     static MeasureUnit getQuartImperial();
03703 
03711     static MeasureUnit *createTablespoon(UErrorCode &status);
03712 
03718     static MeasureUnit getTablespoon();
03719 
03727     static MeasureUnit *createTeaspoon(UErrorCode &status);
03728 
03734     static MeasureUnit getTeaspoon();
03735 
03736 // End generated createXXX methods
03737 
03738  protected:
03739 
03740 #ifndef U_HIDE_INTERNAL_API
03741 
03745     void initTime(const char *timeId);
03746 
03751     void initCurrency(StringPiece isoCurrency);
03752 
03753 #endif  /* U_HIDE_INTERNAL_API */
03754 
03755 private:
03756 
03757     // Used by new draft APIs in ICU 67. If non-null, fImpl is owned by the
03758     // MeasureUnit.
03759     MeasureUnitImpl* fImpl;
03760 
03761     // An index into a static string list in measunit.cpp. If set to -1, fImpl
03762     // is in use instead of fTypeId and fSubTypeId.
03763     int16_t fSubTypeId;
03764     // An index into a static string list in measunit.cpp. If set to -1, fImpl
03765     // is in use instead of fTypeId and fSubTypeId.
03766     int8_t fTypeId;
03767 
03768     MeasureUnit(int32_t typeId, int32_t subTypeId);
03769     MeasureUnit(MeasureUnitImpl&& impl);
03770     void setTo(int32_t typeId, int32_t subTypeId);
03771     static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
03772 
03780     static bool findBySubType(StringPiece subType, MeasureUnit* output);
03781 
03783     LocalArray<MeasureUnit> splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const;
03784 
03785     friend class MeasureUnitImpl;
03786 
03787     // For access to findBySubType
03788     friend class number::impl::LongNameHandler;
03789 };
03790 
03791 // inline impl of @stable ICU 68 method
03792 inline std::pair<LocalArray<MeasureUnit>, int32_t>
03793 MeasureUnit::splitToSingleUnits(UErrorCode& status) const {
03794     int32_t length;
03795     auto array = splitToSingleUnitsImpl(length, status);
03796     return std::make_pair(std::move(array), length);
03797 }
03798 
03799 U_NAMESPACE_END
03800 
03801 #endif // !UNCONFIG_NO_FORMATTING
03802 
03803 #endif /* U_SHOW_CPLUSPLUS_API */
03804 
03805 #endif // __MEASUREUNIT_H__