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 <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 }
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
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
00262
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
00673
00674
00675
00676
00677
00678
00679
00680
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
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
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
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
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
03754
03755 private:
03756
03757
03758
03759 MeasureUnitImpl* fImpl;
03760
03761
03762
03763 int16_t fSubTypeId;
03764
03765
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
03788 friend class number::impl::LongNameHandler;
03789 };
03790
03791
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
03804
03805 #endif // __MEASUREUNIT_H__