00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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 "unicode/unistr.h"
00023 #include "unicode/localpointer.h"
00024
00030 U_NAMESPACE_BEGIN
00031
00032 class StringEnumeration;
00033 class MeasureUnitImpl;
00034
00035 namespace number {
00036 namespace impl {
00037 class LongNameHandler;
00038 }
00039 }
00040
00056 enum UMeasureUnitComplexity {
00062 UMEASURE_UNIT_SINGLE,
00063
00069 UMEASURE_UNIT_COMPOUND,
00070
00076 UMEASURE_UNIT_MIXED
00077 };
00078
00079
00090 typedef enum UMeasurePrefix {
00100 UMEASURE_PREFIX_ONE = 30 + 0,
00101
00107 UMEASURE_PREFIX_YOTTA = UMEASURE_PREFIX_ONE + 24,
00108
00109 #ifndef U_HIDE_INTERNAL_API
00110
00115 UMEASURE_PREFIX_INTERNAL_MAX_SI = UMEASURE_PREFIX_YOTTA,
00116 #endif
00117
00123 UMEASURE_PREFIX_ZETTA = UMEASURE_PREFIX_ONE + 21,
00124
00130 UMEASURE_PREFIX_EXA = UMEASURE_PREFIX_ONE + 18,
00131
00137 UMEASURE_PREFIX_PETA = UMEASURE_PREFIX_ONE + 15,
00138
00144 UMEASURE_PREFIX_TERA = UMEASURE_PREFIX_ONE + 12,
00145
00151 UMEASURE_PREFIX_GIGA = UMEASURE_PREFIX_ONE + 9,
00152
00158 UMEASURE_PREFIX_MEGA = UMEASURE_PREFIX_ONE + 6,
00159
00165 UMEASURE_PREFIX_KILO = UMEASURE_PREFIX_ONE + 3,
00166
00172 UMEASURE_PREFIX_HECTO = UMEASURE_PREFIX_ONE + 2,
00173
00179 UMEASURE_PREFIX_DEKA = UMEASURE_PREFIX_ONE + 1,
00180
00186 UMEASURE_PREFIX_DECI = UMEASURE_PREFIX_ONE + -1,
00187
00193 UMEASURE_PREFIX_CENTI = UMEASURE_PREFIX_ONE + -2,
00194
00200 UMEASURE_PREFIX_MILLI = UMEASURE_PREFIX_ONE + -3,
00201
00207 UMEASURE_PREFIX_MICRO = UMEASURE_PREFIX_ONE + -6,
00208
00214 UMEASURE_PREFIX_NANO = UMEASURE_PREFIX_ONE + -9,
00215
00221 UMEASURE_PREFIX_PICO = UMEASURE_PREFIX_ONE + -12,
00222
00228 UMEASURE_PREFIX_FEMTO = UMEASURE_PREFIX_ONE + -15,
00229
00235 UMEASURE_PREFIX_ATTO = UMEASURE_PREFIX_ONE + -18,
00236
00242 UMEASURE_PREFIX_ZEPTO = UMEASURE_PREFIX_ONE + -21,
00243
00249 UMEASURE_PREFIX_YOCTO = UMEASURE_PREFIX_ONE + -24,
00250
00251 #ifndef U_HIDE_INTERNAL_API
00252
00257 UMEASURE_PREFIX_INTERNAL_MIN_SI = UMEASURE_PREFIX_YOCTO,
00258 #endif // U_HIDE_INTERNAL_API
00259
00260
00261
00267 UMEASURE_PREFIX_INTERNAL_ONE_BIN = -60,
00268
00274 UMEASURE_PREFIX_KIBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 1,
00275
00276 #ifndef U_HIDE_INTERNAL_API
00277
00282 UMEASURE_PREFIX_INTERNAL_MIN_BIN = UMEASURE_PREFIX_KIBI,
00283 #endif // U_HIDE_INTERNAL_API
00284
00290 UMEASURE_PREFIX_MEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 2,
00291
00297 UMEASURE_PREFIX_GIBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 3,
00298
00304 UMEASURE_PREFIX_TEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 4,
00305
00311 UMEASURE_PREFIX_PEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 5,
00312
00318 UMEASURE_PREFIX_EXBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 6,
00319
00325 UMEASURE_PREFIX_ZEBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 7,
00326
00332 UMEASURE_PREFIX_YOBI = UMEASURE_PREFIX_INTERNAL_ONE_BIN + 8,
00333
00334 #ifndef U_HIDE_INTERNAL_API
00335
00340 UMEASURE_PREFIX_INTERNAL_MAX_BIN = UMEASURE_PREFIX_YOBI,
00341 #endif // U_HIDE_INTERNAL_API
00342 } UMeasurePrefix;
00343
00351 U_CAPI int32_t U_EXPORT2 umeas_getPrefixBase(UMeasurePrefix unitPrefix);
00352
00359 U_CAPI int32_t U_EXPORT2 umeas_getPrefixPower(UMeasurePrefix unitPrefix);
00360
00368 class U_I18N_API MeasureUnit: public UObject {
00369 public:
00370
00376 MeasureUnit();
00377
00382 MeasureUnit(const MeasureUnit &other);
00383
00388 MeasureUnit(MeasureUnit &&other) noexcept;
00389
00403 static MeasureUnit forIdentifier(StringPiece identifier, UErrorCode& status);
00404
00409 MeasureUnit &operator=(const MeasureUnit &other);
00410
00415 MeasureUnit &operator=(MeasureUnit &&other) noexcept;
00416
00422 virtual MeasureUnit* clone() const;
00423
00428 virtual ~MeasureUnit();
00429
00435 virtual bool operator==(const UObject& other) const;
00436
00442 bool operator!=(const UObject& other) const {
00443 return !(*this == other);
00444 }
00445
00453 const char *getType() const;
00454
00462 const char *getSubtype() const;
00463
00470 const char* getIdentifier() const;
00471
00479 UMeasureUnitComplexity getComplexity(UErrorCode& status) const;
00480
00495 MeasureUnit withPrefix(UMeasurePrefix prefix, UErrorCode& status) const;
00496
00511 UMeasurePrefix getPrefix(UErrorCode& status) const;
00512
00527 MeasureUnit withDimensionality(int32_t dimensionality, UErrorCode& status) const;
00528
00542 int32_t getDimensionality(UErrorCode& status) const;
00543
00556 MeasureUnit reciprocal(UErrorCode& status) const;
00557
00575 MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;
00576
00592 inline std::pair<LocalArray<MeasureUnit>, int32_t> splitToSingleUnits(UErrorCode& status) const;
00593
00605 static int32_t getAvailable(
00606 MeasureUnit *destArray,
00607 int32_t destCapacity,
00608 UErrorCode &errorCode);
00609
00622 static int32_t getAvailable(
00623 const char *type,
00624 MeasureUnit *destArray,
00625 int32_t destCapacity,
00626 UErrorCode &errorCode);
00627
00636 static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
00637
00649 static UClassID U_EXPORT2 getStaticClassID(void);
00650
00662 virtual UClassID getDynamicClassID(void) const override;
00663
00664 #ifndef U_HIDE_INTERNAL_API
00665
00670 int32_t getOffset() const;
00671 #endif
00672
00673
00674
00675
00676
00677
00678
00679
00680
00688 static MeasureUnit *createGForce(UErrorCode &status);
00689
00695 static MeasureUnit getGForce();
00696
00704 static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
00705
00711 static MeasureUnit getMeterPerSecondSquared();
00712
00720 static MeasureUnit *createArcMinute(UErrorCode &status);
00721
00727 static MeasureUnit getArcMinute();
00728
00736 static MeasureUnit *createArcSecond(UErrorCode &status);
00737
00743 static MeasureUnit getArcSecond();
00744
00752 static MeasureUnit *createDegree(UErrorCode &status);
00753
00759 static MeasureUnit getDegree();
00760
00768 static MeasureUnit *createRadian(UErrorCode &status);
00769
00775 static MeasureUnit getRadian();
00776
00784 static MeasureUnit *createRevolutionAngle(UErrorCode &status);
00785
00791 static MeasureUnit getRevolutionAngle();
00792
00800 static MeasureUnit *createAcre(UErrorCode &status);
00801
00807 static MeasureUnit getAcre();
00808
00816 static MeasureUnit *createDunam(UErrorCode &status);
00817
00823 static MeasureUnit getDunam();
00824
00832 static MeasureUnit *createHectare(UErrorCode &status);
00833
00839 static MeasureUnit getHectare();
00840
00848 static MeasureUnit *createSquareCentimeter(UErrorCode &status);
00849
00855 static MeasureUnit getSquareCentimeter();
00856
00864 static MeasureUnit *createSquareFoot(UErrorCode &status);
00865
00871 static MeasureUnit getSquareFoot();
00872
00880 static MeasureUnit *createSquareInch(UErrorCode &status);
00881
00887 static MeasureUnit getSquareInch();
00888
00896 static MeasureUnit *createSquareKilometer(UErrorCode &status);
00897
00903 static MeasureUnit getSquareKilometer();
00904
00912 static MeasureUnit *createSquareMeter(UErrorCode &status);
00913
00919 static MeasureUnit getSquareMeter();
00920
00928 static MeasureUnit *createSquareMile(UErrorCode &status);
00929
00935 static MeasureUnit getSquareMile();
00936
00944 static MeasureUnit *createSquareYard(UErrorCode &status);
00945
00951 static MeasureUnit getSquareYard();
00952
00953 #ifndef U_HIDE_DRAFT_API
00954
00961 static MeasureUnit *createItem(UErrorCode &status);
00962
00968 static MeasureUnit getItem();
00969 #endif
00970
00978 static MeasureUnit *createKarat(UErrorCode &status);
00979
00985 static MeasureUnit getKarat();
00986
00994 static MeasureUnit *createMilligramOfglucosePerDeciliter(UErrorCode &status);
00995
01001 static MeasureUnit getMilligramOfglucosePerDeciliter();
01002
01010 static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
01011
01017 static MeasureUnit getMilligramPerDeciliter();
01018
01026 static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
01027
01033 static MeasureUnit getMillimolePerLiter();
01034
01042 static MeasureUnit *createMole(UErrorCode &status);
01043
01049 static MeasureUnit getMole();
01050
01058 static MeasureUnit *createPercent(UErrorCode &status);
01059
01065 static MeasureUnit getPercent();
01066
01074 static MeasureUnit *createPermille(UErrorCode &status);
01075
01081 static MeasureUnit getPermille();
01082
01090 static MeasureUnit *createPartPerMillion(UErrorCode &status);
01091
01097 static MeasureUnit getPartPerMillion();
01098
01106 static MeasureUnit *createPermyriad(UErrorCode &status);
01107
01113 static MeasureUnit getPermyriad();
01114
01122 static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
01123
01129 static MeasureUnit getLiterPer100Kilometers();
01130
01138 static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
01139
01145 static MeasureUnit getLiterPerKilometer();
01146
01154 static MeasureUnit *createMilePerGallon(UErrorCode &status);
01155
01161 static MeasureUnit getMilePerGallon();
01162
01170 static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
01171
01177 static MeasureUnit getMilePerGallonImperial();
01178
01186 static MeasureUnit *createBit(UErrorCode &status);
01187
01193 static MeasureUnit getBit();
01194
01202 static MeasureUnit *createByte(UErrorCode &status);
01203
01209 static MeasureUnit getByte();
01210
01218 static MeasureUnit *createGigabit(UErrorCode &status);
01219
01225 static MeasureUnit getGigabit();
01226
01234 static MeasureUnit *createGigabyte(UErrorCode &status);
01235
01241 static MeasureUnit getGigabyte();
01242
01250 static MeasureUnit *createKilobit(UErrorCode &status);
01251
01257 static MeasureUnit getKilobit();
01258
01266 static MeasureUnit *createKilobyte(UErrorCode &status);
01267
01273 static MeasureUnit getKilobyte();
01274
01282 static MeasureUnit *createMegabit(UErrorCode &status);
01283
01289 static MeasureUnit getMegabit();
01290
01298 static MeasureUnit *createMegabyte(UErrorCode &status);
01299
01305 static MeasureUnit getMegabyte();
01306
01314 static MeasureUnit *createPetabyte(UErrorCode &status);
01315
01321 static MeasureUnit getPetabyte();
01322
01330 static MeasureUnit *createTerabit(UErrorCode &status);
01331
01337 static MeasureUnit getTerabit();
01338
01346 static MeasureUnit *createTerabyte(UErrorCode &status);
01347
01353 static MeasureUnit getTerabyte();
01354
01362 static MeasureUnit *createCentury(UErrorCode &status);
01363
01369 static MeasureUnit getCentury();
01370
01378 static MeasureUnit *createDay(UErrorCode &status);
01379
01385 static MeasureUnit getDay();
01386
01394 static MeasureUnit *createDayPerson(UErrorCode &status);
01395
01401 static MeasureUnit getDayPerson();
01402
01410 static MeasureUnit *createDecade(UErrorCode &status);
01411
01417 static MeasureUnit getDecade();
01418
01426 static MeasureUnit *createHour(UErrorCode &status);
01427
01433 static MeasureUnit getHour();
01434
01442 static MeasureUnit *createMicrosecond(UErrorCode &status);
01443
01449 static MeasureUnit getMicrosecond();
01450
01458 static MeasureUnit *createMillisecond(UErrorCode &status);
01459
01465 static MeasureUnit getMillisecond();
01466
01474 static MeasureUnit *createMinute(UErrorCode &status);
01475
01481 static MeasureUnit getMinute();
01482
01490 static MeasureUnit *createMonth(UErrorCode &status);
01491
01497 static MeasureUnit getMonth();
01498
01506 static MeasureUnit *createMonthPerson(UErrorCode &status);
01507
01513 static MeasureUnit getMonthPerson();
01514
01522 static MeasureUnit *createNanosecond(UErrorCode &status);
01523
01529 static MeasureUnit getNanosecond();
01530
01538 static MeasureUnit *createSecond(UErrorCode &status);
01539
01545 static MeasureUnit getSecond();
01546
01554 static MeasureUnit *createWeek(UErrorCode &status);
01555
01561 static MeasureUnit getWeek();
01562
01570 static MeasureUnit *createWeekPerson(UErrorCode &status);
01571
01577 static MeasureUnit getWeekPerson();
01578
01586 static MeasureUnit *createYear(UErrorCode &status);
01587
01593 static MeasureUnit getYear();
01594
01602 static MeasureUnit *createYearPerson(UErrorCode &status);
01603
01609 static MeasureUnit getYearPerson();
01610
01618 static MeasureUnit *createAmpere(UErrorCode &status);
01619
01625 static MeasureUnit getAmpere();
01626
01634 static MeasureUnit *createMilliampere(UErrorCode &status);
01635
01641 static MeasureUnit getMilliampere();
01642
01650 static MeasureUnit *createOhm(UErrorCode &status);
01651
01657 static MeasureUnit getOhm();
01658
01666 static MeasureUnit *createVolt(UErrorCode &status);
01667
01673 static MeasureUnit getVolt();
01674
01682 static MeasureUnit *createBritishThermalUnit(UErrorCode &status);
01683
01689 static MeasureUnit getBritishThermalUnit();
01690
01698 static MeasureUnit *createCalorie(UErrorCode &status);
01699
01705 static MeasureUnit getCalorie();
01706
01714 static MeasureUnit *createElectronvolt(UErrorCode &status);
01715
01721 static MeasureUnit getElectronvolt();
01722
01730 static MeasureUnit *createFoodcalorie(UErrorCode &status);
01731
01737 static MeasureUnit getFoodcalorie();
01738
01746 static MeasureUnit *createJoule(UErrorCode &status);
01747
01753 static MeasureUnit getJoule();
01754
01762 static MeasureUnit *createKilocalorie(UErrorCode &status);
01763
01769 static MeasureUnit getKilocalorie();
01770
01778 static MeasureUnit *createKilojoule(UErrorCode &status);
01779
01785 static MeasureUnit getKilojoule();
01786
01794 static MeasureUnit *createKilowattHour(UErrorCode &status);
01795
01801 static MeasureUnit getKilowattHour();
01802
01810 static MeasureUnit *createThermUs(UErrorCode &status);
01811
01817 static MeasureUnit getThermUs();
01818
01819 #ifndef U_HIDE_DRAFT_API
01820
01827 static MeasureUnit *createKilowattHourPer100Kilometer(UErrorCode &status);
01828
01834 static MeasureUnit getKilowattHourPer100Kilometer();
01835 #endif
01836
01844 static MeasureUnit *createNewton(UErrorCode &status);
01845
01851 static MeasureUnit getNewton();
01852
01860 static MeasureUnit *createPoundForce(UErrorCode &status);
01861
01867 static MeasureUnit getPoundForce();
01868
01876 static MeasureUnit *createGigahertz(UErrorCode &status);
01877
01883 static MeasureUnit getGigahertz();
01884
01892 static MeasureUnit *createHertz(UErrorCode &status);
01893
01899 static MeasureUnit getHertz();
01900
01908 static MeasureUnit *createKilohertz(UErrorCode &status);
01909
01915 static MeasureUnit getKilohertz();
01916
01924 static MeasureUnit *createMegahertz(UErrorCode &status);
01925
01931 static MeasureUnit getMegahertz();
01932
01940 static MeasureUnit *createDot(UErrorCode &status);
01941
01947 static MeasureUnit getDot();
01948
01956 static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
01957
01963 static MeasureUnit getDotPerCentimeter();
01964
01972 static MeasureUnit *createDotPerInch(UErrorCode &status);
01973
01979 static MeasureUnit getDotPerInch();
01980
01988 static MeasureUnit *createEm(UErrorCode &status);
01989
01995 static MeasureUnit getEm();
01996
02004 static MeasureUnit *createMegapixel(UErrorCode &status);
02005
02011 static MeasureUnit getMegapixel();
02012
02020 static MeasureUnit *createPixel(UErrorCode &status);
02021
02027 static MeasureUnit getPixel();
02028
02036 static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
02037
02043 static MeasureUnit getPixelPerCentimeter();
02044
02052 static MeasureUnit *createPixelPerInch(UErrorCode &status);
02053
02059 static MeasureUnit getPixelPerInch();
02060
02068 static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
02069
02075 static MeasureUnit getAstronomicalUnit();
02076
02084 static MeasureUnit *createCentimeter(UErrorCode &status);
02085
02091 static MeasureUnit getCentimeter();
02092
02100 static MeasureUnit *createDecimeter(UErrorCode &status);
02101
02107 static MeasureUnit getDecimeter();
02108
02116 static MeasureUnit *createEarthRadius(UErrorCode &status);
02117
02123 static MeasureUnit getEarthRadius();
02124
02132 static MeasureUnit *createFathom(UErrorCode &status);
02133
02139 static MeasureUnit getFathom();
02140
02148 static MeasureUnit *createFoot(UErrorCode &status);
02149
02155 static MeasureUnit getFoot();
02156
02164 static MeasureUnit *createFurlong(UErrorCode &status);
02165
02171 static MeasureUnit getFurlong();
02172
02180 static MeasureUnit *createInch(UErrorCode &status);
02181
02187 static MeasureUnit getInch();
02188
02196 static MeasureUnit *createKilometer(UErrorCode &status);
02197
02203 static MeasureUnit getKilometer();
02204
02212 static MeasureUnit *createLightYear(UErrorCode &status);
02213
02219 static MeasureUnit getLightYear();
02220
02228 static MeasureUnit *createMeter(UErrorCode &status);
02229
02235 static MeasureUnit getMeter();
02236
02244 static MeasureUnit *createMicrometer(UErrorCode &status);
02245
02251 static MeasureUnit getMicrometer();
02252
02260 static MeasureUnit *createMile(UErrorCode &status);
02261
02267 static MeasureUnit getMile();
02268
02276 static MeasureUnit *createMileScandinavian(UErrorCode &status);
02277
02283 static MeasureUnit getMileScandinavian();
02284
02292 static MeasureUnit *createMillimeter(UErrorCode &status);
02293
02299 static MeasureUnit getMillimeter();
02300
02308 static MeasureUnit *createNanometer(UErrorCode &status);
02309
02315 static MeasureUnit getNanometer();
02316
02324 static MeasureUnit *createNauticalMile(UErrorCode &status);
02325
02331 static MeasureUnit getNauticalMile();
02332
02340 static MeasureUnit *createParsec(UErrorCode &status);
02341
02347 static MeasureUnit getParsec();
02348
02356 static MeasureUnit *createPicometer(UErrorCode &status);
02357
02363 static MeasureUnit getPicometer();
02364
02372 static MeasureUnit *createPoint(UErrorCode &status);
02373
02379 static MeasureUnit getPoint();
02380
02388 static MeasureUnit *createSolarRadius(UErrorCode &status);
02389
02395 static MeasureUnit getSolarRadius();
02396
02404 static MeasureUnit *createYard(UErrorCode &status);
02405
02411 static MeasureUnit getYard();
02412
02420 static MeasureUnit *createCandela(UErrorCode &status);
02421
02427 static MeasureUnit getCandela();
02428
02436 static MeasureUnit *createLumen(UErrorCode &status);
02437
02443 static MeasureUnit getLumen();
02444
02452 static MeasureUnit *createLux(UErrorCode &status);
02453
02459 static MeasureUnit getLux();
02460
02468 static MeasureUnit *createSolarLuminosity(UErrorCode &status);
02469
02475 static MeasureUnit getSolarLuminosity();
02476
02484 static MeasureUnit *createCarat(UErrorCode &status);
02485
02491 static MeasureUnit getCarat();
02492
02500 static MeasureUnit *createDalton(UErrorCode &status);
02501
02507 static MeasureUnit getDalton();
02508
02516 static MeasureUnit *createEarthMass(UErrorCode &status);
02517
02523 static MeasureUnit getEarthMass();
02524
02532 static MeasureUnit *createGrain(UErrorCode &status);
02533
02539 static MeasureUnit getGrain();
02540
02548 static MeasureUnit *createGram(UErrorCode &status);
02549
02555 static MeasureUnit getGram();
02556
02564 static MeasureUnit *createKilogram(UErrorCode &status);
02565
02571 static MeasureUnit getKilogram();
02572
02580 static MeasureUnit *createMetricTon(UErrorCode &status);
02581
02587 static MeasureUnit getMetricTon();
02588
02596 static MeasureUnit *createMicrogram(UErrorCode &status);
02597
02603 static MeasureUnit getMicrogram();
02604
02612 static MeasureUnit *createMilligram(UErrorCode &status);
02613
02619 static MeasureUnit getMilligram();
02620
02628 static MeasureUnit *createOunce(UErrorCode &status);
02629
02635 static MeasureUnit getOunce();
02636
02644 static MeasureUnit *createOunceTroy(UErrorCode &status);
02645
02651 static MeasureUnit getOunceTroy();
02652
02660 static MeasureUnit *createPound(UErrorCode &status);
02661
02667 static MeasureUnit getPound();
02668
02676 static MeasureUnit *createSolarMass(UErrorCode &status);
02677
02683 static MeasureUnit getSolarMass();
02684
02692 static MeasureUnit *createStone(UErrorCode &status);
02693
02699 static MeasureUnit getStone();
02700
02708 static MeasureUnit *createTon(UErrorCode &status);
02709
02715 static MeasureUnit getTon();
02716
02724 static MeasureUnit *createGigawatt(UErrorCode &status);
02725
02731 static MeasureUnit getGigawatt();
02732
02740 static MeasureUnit *createHorsepower(UErrorCode &status);
02741
02747 static MeasureUnit getHorsepower();
02748
02756 static MeasureUnit *createKilowatt(UErrorCode &status);
02757
02763 static MeasureUnit getKilowatt();
02764
02772 static MeasureUnit *createMegawatt(UErrorCode &status);
02773
02779 static MeasureUnit getMegawatt();
02780
02788 static MeasureUnit *createMilliwatt(UErrorCode &status);
02789
02795 static MeasureUnit getMilliwatt();
02796
02804 static MeasureUnit *createWatt(UErrorCode &status);
02805
02811 static MeasureUnit getWatt();
02812
02820 static MeasureUnit *createAtmosphere(UErrorCode &status);
02821
02827 static MeasureUnit getAtmosphere();
02828
02836 static MeasureUnit *createBar(UErrorCode &status);
02837
02843 static MeasureUnit getBar();
02844
02852 static MeasureUnit *createHectopascal(UErrorCode &status);
02853
02859 static MeasureUnit getHectopascal();
02860
02868 static MeasureUnit *createInchHg(UErrorCode &status);
02869
02875 static MeasureUnit getInchHg();
02876
02884 static MeasureUnit *createKilopascal(UErrorCode &status);
02885
02891 static MeasureUnit getKilopascal();
02892
02900 static MeasureUnit *createMegapascal(UErrorCode &status);
02901
02907 static MeasureUnit getMegapascal();
02908
02916 static MeasureUnit *createMillibar(UErrorCode &status);
02917
02923 static MeasureUnit getMillibar();
02924
02932 static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
02933
02939 static MeasureUnit getMillimeterOfMercury();
02940
02948 static MeasureUnit *createPascal(UErrorCode &status);
02949
02955 static MeasureUnit getPascal();
02956
02964 static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
02965
02971 static MeasureUnit getPoundPerSquareInch();
02972
02980 static MeasureUnit *createKilometerPerHour(UErrorCode &status);
02981
02987 static MeasureUnit getKilometerPerHour();
02988
02996 static MeasureUnit *createKnot(UErrorCode &status);
02997
03003 static MeasureUnit getKnot();
03004
03012 static MeasureUnit *createMeterPerSecond(UErrorCode &status);
03013
03019 static MeasureUnit getMeterPerSecond();
03020
03028 static MeasureUnit *createMilePerHour(UErrorCode &status);
03029
03035 static MeasureUnit getMilePerHour();
03036
03044 static MeasureUnit *createCelsius(UErrorCode &status);
03045
03051 static MeasureUnit getCelsius();
03052
03060 static MeasureUnit *createFahrenheit(UErrorCode &status);
03061
03067 static MeasureUnit getFahrenheit();
03068
03076 static MeasureUnit *createGenericTemperature(UErrorCode &status);
03077
03083 static MeasureUnit getGenericTemperature();
03084
03092 static MeasureUnit *createKelvin(UErrorCode &status);
03093
03099 static MeasureUnit getKelvin();
03100
03108 static MeasureUnit *createNewtonMeter(UErrorCode &status);
03109
03115 static MeasureUnit getNewtonMeter();
03116
03124 static MeasureUnit *createPoundFoot(UErrorCode &status);
03125
03131 static MeasureUnit getPoundFoot();
03132
03140 static MeasureUnit *createAcreFoot(UErrorCode &status);
03141
03147 static MeasureUnit getAcreFoot();
03148
03156 static MeasureUnit *createBarrel(UErrorCode &status);
03157
03163 static MeasureUnit getBarrel();
03164
03172 static MeasureUnit *createBushel(UErrorCode &status);
03173
03179 static MeasureUnit getBushel();
03180
03188 static MeasureUnit *createCentiliter(UErrorCode &status);
03189
03195 static MeasureUnit getCentiliter();
03196
03204 static MeasureUnit *createCubicCentimeter(UErrorCode &status);
03205
03211 static MeasureUnit getCubicCentimeter();
03212
03220 static MeasureUnit *createCubicFoot(UErrorCode &status);
03221
03227 static MeasureUnit getCubicFoot();
03228
03236 static MeasureUnit *createCubicInch(UErrorCode &status);
03237
03243 static MeasureUnit getCubicInch();
03244
03252 static MeasureUnit *createCubicKilometer(UErrorCode &status);
03253
03259 static MeasureUnit getCubicKilometer();
03260
03268 static MeasureUnit *createCubicMeter(UErrorCode &status);
03269
03275 static MeasureUnit getCubicMeter();
03276
03284 static MeasureUnit *createCubicMile(UErrorCode &status);
03285
03291 static MeasureUnit getCubicMile();
03292
03300 static MeasureUnit *createCubicYard(UErrorCode &status);
03301
03307 static MeasureUnit getCubicYard();
03308
03316 static MeasureUnit *createCup(UErrorCode &status);
03317
03323 static MeasureUnit getCup();
03324
03332 static MeasureUnit *createCupMetric(UErrorCode &status);
03333
03339 static MeasureUnit getCupMetric();
03340
03348 static MeasureUnit *createDeciliter(UErrorCode &status);
03349
03355 static MeasureUnit getDeciliter();
03356
03364 static MeasureUnit *createDessertSpoon(UErrorCode &status);
03365
03371 static MeasureUnit getDessertSpoon();
03372
03380 static MeasureUnit *createDessertSpoonImperial(UErrorCode &status);
03381
03387 static MeasureUnit getDessertSpoonImperial();
03388
03396 static MeasureUnit *createDram(UErrorCode &status);
03397
03403 static MeasureUnit getDram();
03404
03412 static MeasureUnit *createDrop(UErrorCode &status);
03413
03419 static MeasureUnit getDrop();
03420
03428 static MeasureUnit *createFluidOunce(UErrorCode &status);
03429
03435 static MeasureUnit getFluidOunce();
03436
03444 static MeasureUnit *createFluidOunceImperial(UErrorCode &status);
03445
03451 static MeasureUnit getFluidOunceImperial();
03452
03460 static MeasureUnit *createGallon(UErrorCode &status);
03461
03467 static MeasureUnit getGallon();
03468
03476 static MeasureUnit *createGallonImperial(UErrorCode &status);
03477
03483 static MeasureUnit getGallonImperial();
03484
03492 static MeasureUnit *createHectoliter(UErrorCode &status);
03493
03499 static MeasureUnit getHectoliter();
03500
03508 static MeasureUnit *createJigger(UErrorCode &status);
03509
03515 static MeasureUnit getJigger();
03516
03524 static MeasureUnit *createLiter(UErrorCode &status);
03525
03531 static MeasureUnit getLiter();
03532
03540 static MeasureUnit *createMegaliter(UErrorCode &status);
03541
03547 static MeasureUnit getMegaliter();
03548
03556 static MeasureUnit *createMilliliter(UErrorCode &status);
03557
03563 static MeasureUnit getMilliliter();
03564
03572 static MeasureUnit *createPinch(UErrorCode &status);
03573
03579 static MeasureUnit getPinch();
03580
03588 static MeasureUnit *createPint(UErrorCode &status);
03589
03595 static MeasureUnit getPint();
03596
03604 static MeasureUnit *createPintMetric(UErrorCode &status);
03605
03611 static MeasureUnit getPintMetric();
03612
03620 static MeasureUnit *createQuart(UErrorCode &status);
03621
03627 static MeasureUnit getQuart();
03628
03636 static MeasureUnit *createQuartImperial(UErrorCode &status);
03637
03643 static MeasureUnit getQuartImperial();
03644
03652 static MeasureUnit *createTablespoon(UErrorCode &status);
03653
03659 static MeasureUnit getTablespoon();
03660
03668 static MeasureUnit *createTeaspoon(UErrorCode &status);
03669
03675 static MeasureUnit getTeaspoon();
03676
03677
03678
03679 protected:
03680
03681 #ifndef U_HIDE_INTERNAL_API
03682
03686 void initTime(const char *timeId);
03687
03692 void initCurrency(StringPiece isoCurrency);
03693
03694 #endif
03695
03696 private:
03697
03698
03699
03700 MeasureUnitImpl* fImpl;
03701
03702
03703
03704 int16_t fSubTypeId;
03705
03706
03707 int8_t fTypeId;
03708
03709 MeasureUnit(int32_t typeId, int32_t subTypeId);
03710 MeasureUnit(MeasureUnitImpl&& impl);
03711 void setTo(int32_t typeId, int32_t subTypeId);
03712 static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
03713
03721 static bool findBySubType(StringPiece subType, MeasureUnit* output);
03722
03724 LocalArray<MeasureUnit> splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const;
03725
03726 friend class MeasureUnitImpl;
03727
03728
03729 friend class number::impl::LongNameHandler;
03730 };
03731
03732
03733 inline std::pair<LocalArray<MeasureUnit>, int32_t>
03734 MeasureUnit::splitToSingleUnits(UErrorCode& status) const {
03735 int32_t length;
03736 auto array = splitToSingleUnitsImpl(length, status);
03737 return std::make_pair(std::move(array), length);
03738 }
03739
03740 U_NAMESPACE_END
03741
03742 #endif // !UNCONFIG_NO_FORMATTING
03743
03744 #endif
03745
03746 #endif // __MEASUREUNIT_H__