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 struct MeasureUnitImpl;
00034
00035 #ifndef U_HIDE_DRAFT_API
00036
00051 enum UMeasureUnitComplexity {
00057 UMEASURE_UNIT_SINGLE,
00058
00064 UMEASURE_UNIT_COMPOUND,
00065
00071 UMEASURE_UNIT_MIXED
00072 };
00073
00079 typedef enum UMeasureSIPrefix {
00080
00086 UMEASURE_SI_PREFIX_YOTTA = 24,
00087
00093 UMEASURE_SI_PREFIX_ZETTA = 21,
00094
00100 UMEASURE_SI_PREFIX_EXA = 18,
00101
00107 UMEASURE_SI_PREFIX_PETA = 15,
00108
00114 UMEASURE_SI_PREFIX_TERA = 12,
00115
00121 UMEASURE_SI_PREFIX_GIGA = 9,
00122
00128 UMEASURE_SI_PREFIX_MEGA = 6,
00129
00135 UMEASURE_SI_PREFIX_KILO = 3,
00136
00142 UMEASURE_SI_PREFIX_HECTO = 2,
00143
00149 UMEASURE_SI_PREFIX_DEKA = 1,
00150
00156 UMEASURE_SI_PREFIX_ONE = 0,
00157
00163 UMEASURE_SI_PREFIX_DECI = -1,
00164
00170 UMEASURE_SI_PREFIX_CENTI = -2,
00171
00177 UMEASURE_SI_PREFIX_MILLI = -3,
00178
00184 UMEASURE_SI_PREFIX_MICRO = -6,
00185
00191 UMEASURE_SI_PREFIX_NANO = -9,
00192
00198 UMEASURE_SI_PREFIX_PICO = -12,
00199
00205 UMEASURE_SI_PREFIX_FEMTO = -15,
00206
00212 UMEASURE_SI_PREFIX_ATTO = -18,
00213
00219 UMEASURE_SI_PREFIX_ZEPTO = -21,
00220
00226 UMEASURE_SI_PREFIX_YOCTO = -24
00227 } UMeasureSIPrefix;
00228 #endif // U_HIDE_DRAFT_API
00229
00237 class U_I18N_API MeasureUnit: public UObject {
00238 public:
00239
00245 MeasureUnit();
00246
00251 MeasureUnit(const MeasureUnit &other);
00252
00253 #ifndef U_HIDE_DRAFT_API
00254
00258 MeasureUnit(MeasureUnit &&other) noexcept;
00259
00272 static MeasureUnit forIdentifier(StringPiece identifier, UErrorCode& status);
00273 #endif // U_HIDE_DRAFT_API
00274
00279 MeasureUnit &operator=(const MeasureUnit &other);
00280
00281 #ifndef U_HIDE_DRAFT_API
00282
00286 MeasureUnit &operator=(MeasureUnit &&other) noexcept;
00287 #endif // U_HIDE_DRAFT_API
00288
00294 virtual MeasureUnit* clone() const;
00295
00300 virtual ~MeasureUnit();
00301
00307 virtual UBool operator==(const UObject& other) const;
00308
00314 UBool operator!=(const UObject& other) const {
00315 return !(*this == other);
00316 }
00317
00325 const char *getType() const;
00326
00334 const char *getSubtype() const;
00335
00336 #ifndef U_HIDE_DRAFT_API
00337
00343 const char* getIdentifier() const;
00344
00352 UMeasureUnitComplexity getComplexity(UErrorCode& status) const;
00353
00368 MeasureUnit withSIPrefix(UMeasureSIPrefix prefix, UErrorCode& status) const;
00369
00381 UMeasureSIPrefix getSIPrefix(UErrorCode& status) const;
00382
00397 MeasureUnit withDimensionality(int32_t dimensionality, UErrorCode& status) const;
00398
00412 int32_t getDimensionality(UErrorCode& status) const;
00413
00426 MeasureUnit reciprocal(UErrorCode& status) const;
00427
00445 MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;
00446 #endif // U_HIDE_DRAFT_API
00447
00448 #ifndef U_HIDE_INTERNAL_API
00449
00467 LocalArray<MeasureUnit> splitToSingleUnits(int32_t& outCount, UErrorCode& status) const;
00468 #endif // U_HIDE_INTERNAL_API
00469
00481 static int32_t getAvailable(
00482 MeasureUnit *destArray,
00483 int32_t destCapacity,
00484 UErrorCode &errorCode);
00485
00498 static int32_t getAvailable(
00499 const char *type,
00500 MeasureUnit *destArray,
00501 int32_t destCapacity,
00502 UErrorCode &errorCode);
00503
00512 static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
00513
00525 static UClassID U_EXPORT2 getStaticClassID(void);
00526
00538 virtual UClassID getDynamicClassID(void) const;
00539
00540 #ifndef U_HIDE_INTERNAL_API
00541
00547 int32_t getIndex() const;
00548
00554 static int32_t getIndexCount();
00555
00562 static int32_t internalGetIndexForTypeAndSubtype(const char *type, const char *subtype);
00563
00568 static MeasureUnit resolveUnitPerUnit(
00569 const MeasureUnit &unit, const MeasureUnit &perUnit, bool* isResolved);
00570 #endif
00571
00572
00573
00574
00575
00576
00577
00578
00579
00587 static MeasureUnit *createGForce(UErrorCode &status);
00588
00594 static MeasureUnit getGForce();
00595
00603 static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
00604
00610 static MeasureUnit getMeterPerSecondSquared();
00611
00619 static MeasureUnit *createArcMinute(UErrorCode &status);
00620
00626 static MeasureUnit getArcMinute();
00627
00635 static MeasureUnit *createArcSecond(UErrorCode &status);
00636
00642 static MeasureUnit getArcSecond();
00643
00651 static MeasureUnit *createDegree(UErrorCode &status);
00652
00658 static MeasureUnit getDegree();
00659
00667 static MeasureUnit *createRadian(UErrorCode &status);
00668
00674 static MeasureUnit getRadian();
00675
00683 static MeasureUnit *createRevolutionAngle(UErrorCode &status);
00684
00690 static MeasureUnit getRevolutionAngle();
00691
00699 static MeasureUnit *createAcre(UErrorCode &status);
00700
00706 static MeasureUnit getAcre();
00707
00715 static MeasureUnit *createDunam(UErrorCode &status);
00716
00722 static MeasureUnit getDunam();
00723
00731 static MeasureUnit *createHectare(UErrorCode &status);
00732
00738 static MeasureUnit getHectare();
00739
00747 static MeasureUnit *createSquareCentimeter(UErrorCode &status);
00748
00754 static MeasureUnit getSquareCentimeter();
00755
00763 static MeasureUnit *createSquareFoot(UErrorCode &status);
00764
00770 static MeasureUnit getSquareFoot();
00771
00779 static MeasureUnit *createSquareInch(UErrorCode &status);
00780
00786 static MeasureUnit getSquareInch();
00787
00795 static MeasureUnit *createSquareKilometer(UErrorCode &status);
00796
00802 static MeasureUnit getSquareKilometer();
00803
00811 static MeasureUnit *createSquareMeter(UErrorCode &status);
00812
00818 static MeasureUnit getSquareMeter();
00819
00827 static MeasureUnit *createSquareMile(UErrorCode &status);
00828
00834 static MeasureUnit getSquareMile();
00835
00843 static MeasureUnit *createSquareYard(UErrorCode &status);
00844
00850 static MeasureUnit getSquareYard();
00851
00859 static MeasureUnit *createKarat(UErrorCode &status);
00860
00866 static MeasureUnit getKarat();
00867
00875 static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
00876
00882 static MeasureUnit getMilligramPerDeciliter();
00883
00891 static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
00892
00898 static MeasureUnit getMillimolePerLiter();
00899
00907 static MeasureUnit *createMole(UErrorCode &status);
00908
00914 static MeasureUnit getMole();
00915
00923 static MeasureUnit *createPartPerMillion(UErrorCode &status);
00924
00930 static MeasureUnit getPartPerMillion();
00931
00939 static MeasureUnit *createPercent(UErrorCode &status);
00940
00946 static MeasureUnit getPercent();
00947
00955 static MeasureUnit *createPermille(UErrorCode &status);
00956
00962 static MeasureUnit getPermille();
00963
00971 static MeasureUnit *createPermyriad(UErrorCode &status);
00972
00978 static MeasureUnit getPermyriad();
00979
00987 static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
00988
00994 static MeasureUnit getLiterPer100Kilometers();
00995
01003 static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
01004
01010 static MeasureUnit getLiterPerKilometer();
01011
01019 static MeasureUnit *createMilePerGallon(UErrorCode &status);
01020
01026 static MeasureUnit getMilePerGallon();
01027
01035 static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
01036
01042 static MeasureUnit getMilePerGallonImperial();
01043
01051 static MeasureUnit *createBit(UErrorCode &status);
01052
01058 static MeasureUnit getBit();
01059
01067 static MeasureUnit *createByte(UErrorCode &status);
01068
01074 static MeasureUnit getByte();
01075
01083 static MeasureUnit *createGigabit(UErrorCode &status);
01084
01090 static MeasureUnit getGigabit();
01091
01099 static MeasureUnit *createGigabyte(UErrorCode &status);
01100
01106 static MeasureUnit getGigabyte();
01107
01115 static MeasureUnit *createKilobit(UErrorCode &status);
01116
01122 static MeasureUnit getKilobit();
01123
01131 static MeasureUnit *createKilobyte(UErrorCode &status);
01132
01138 static MeasureUnit getKilobyte();
01139
01147 static MeasureUnit *createMegabit(UErrorCode &status);
01148
01154 static MeasureUnit getMegabit();
01155
01163 static MeasureUnit *createMegabyte(UErrorCode &status);
01164
01170 static MeasureUnit getMegabyte();
01171
01179 static MeasureUnit *createPetabyte(UErrorCode &status);
01180
01186 static MeasureUnit getPetabyte();
01187
01195 static MeasureUnit *createTerabit(UErrorCode &status);
01196
01202 static MeasureUnit getTerabit();
01203
01211 static MeasureUnit *createTerabyte(UErrorCode &status);
01212
01218 static MeasureUnit getTerabyte();
01219
01227 static MeasureUnit *createCentury(UErrorCode &status);
01228
01234 static MeasureUnit getCentury();
01235
01243 static MeasureUnit *createDay(UErrorCode &status);
01244
01250 static MeasureUnit getDay();
01251
01259 static MeasureUnit *createDayPerson(UErrorCode &status);
01260
01266 static MeasureUnit getDayPerson();
01267
01268 #ifndef U_HIDE_DRAFT_API
01269
01276 static MeasureUnit *createDecade(UErrorCode &status);
01277
01283 static MeasureUnit getDecade();
01284 #endif
01285
01293 static MeasureUnit *createHour(UErrorCode &status);
01294
01300 static MeasureUnit getHour();
01301
01309 static MeasureUnit *createMicrosecond(UErrorCode &status);
01310
01316 static MeasureUnit getMicrosecond();
01317
01325 static MeasureUnit *createMillisecond(UErrorCode &status);
01326
01332 static MeasureUnit getMillisecond();
01333
01341 static MeasureUnit *createMinute(UErrorCode &status);
01342
01348 static MeasureUnit getMinute();
01349
01357 static MeasureUnit *createMonth(UErrorCode &status);
01358
01364 static MeasureUnit getMonth();
01365
01373 static MeasureUnit *createMonthPerson(UErrorCode &status);
01374
01380 static MeasureUnit getMonthPerson();
01381
01389 static MeasureUnit *createNanosecond(UErrorCode &status);
01390
01396 static MeasureUnit getNanosecond();
01397
01405 static MeasureUnit *createSecond(UErrorCode &status);
01406
01412 static MeasureUnit getSecond();
01413
01421 static MeasureUnit *createWeek(UErrorCode &status);
01422
01428 static MeasureUnit getWeek();
01429
01437 static MeasureUnit *createWeekPerson(UErrorCode &status);
01438
01444 static MeasureUnit getWeekPerson();
01445
01453 static MeasureUnit *createYear(UErrorCode &status);
01454
01460 static MeasureUnit getYear();
01461
01469 static MeasureUnit *createYearPerson(UErrorCode &status);
01470
01476 static MeasureUnit getYearPerson();
01477
01485 static MeasureUnit *createAmpere(UErrorCode &status);
01486
01492 static MeasureUnit getAmpere();
01493
01501 static MeasureUnit *createMilliampere(UErrorCode &status);
01502
01508 static MeasureUnit getMilliampere();
01509
01517 static MeasureUnit *createOhm(UErrorCode &status);
01518
01524 static MeasureUnit getOhm();
01525
01533 static MeasureUnit *createVolt(UErrorCode &status);
01534
01540 static MeasureUnit getVolt();
01541
01549 static MeasureUnit *createBritishThermalUnit(UErrorCode &status);
01550
01556 static MeasureUnit getBritishThermalUnit();
01557
01565 static MeasureUnit *createCalorie(UErrorCode &status);
01566
01572 static MeasureUnit getCalorie();
01573
01581 static MeasureUnit *createElectronvolt(UErrorCode &status);
01582
01588 static MeasureUnit getElectronvolt();
01589
01597 static MeasureUnit *createFoodcalorie(UErrorCode &status);
01598
01604 static MeasureUnit getFoodcalorie();
01605
01613 static MeasureUnit *createJoule(UErrorCode &status);
01614
01620 static MeasureUnit getJoule();
01621
01629 static MeasureUnit *createKilocalorie(UErrorCode &status);
01630
01636 static MeasureUnit getKilocalorie();
01637
01645 static MeasureUnit *createKilojoule(UErrorCode &status);
01646
01652 static MeasureUnit getKilojoule();
01653
01661 static MeasureUnit *createKilowattHour(UErrorCode &status);
01662
01668 static MeasureUnit getKilowattHour();
01669
01670 #ifndef U_HIDE_DRAFT_API
01671
01678 static MeasureUnit *createThermUs(UErrorCode &status);
01679
01685 static MeasureUnit getThermUs();
01686 #endif
01687
01695 static MeasureUnit *createNewton(UErrorCode &status);
01696
01702 static MeasureUnit getNewton();
01703
01711 static MeasureUnit *createPoundForce(UErrorCode &status);
01712
01718 static MeasureUnit getPoundForce();
01719
01727 static MeasureUnit *createGigahertz(UErrorCode &status);
01728
01734 static MeasureUnit getGigahertz();
01735
01743 static MeasureUnit *createHertz(UErrorCode &status);
01744
01750 static MeasureUnit getHertz();
01751
01759 static MeasureUnit *createKilohertz(UErrorCode &status);
01760
01766 static MeasureUnit getKilohertz();
01767
01775 static MeasureUnit *createMegahertz(UErrorCode &status);
01776
01782 static MeasureUnit getMegahertz();
01783
01784 #ifndef U_HIDE_DRAFT_API
01785
01792 static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
01793
01799 static MeasureUnit getDotPerCentimeter();
01800 #endif
01801
01802 #ifndef U_HIDE_DRAFT_API
01803
01810 static MeasureUnit *createDotPerInch(UErrorCode &status);
01811
01817 static MeasureUnit getDotPerInch();
01818 #endif
01819
01820 #ifndef U_HIDE_DRAFT_API
01821
01828 static MeasureUnit *createEm(UErrorCode &status);
01829
01835 static MeasureUnit getEm();
01836 #endif
01837
01838 #ifndef U_HIDE_DRAFT_API
01839
01846 static MeasureUnit *createMegapixel(UErrorCode &status);
01847
01853 static MeasureUnit getMegapixel();
01854 #endif
01855
01856 #ifndef U_HIDE_DRAFT_API
01857
01864 static MeasureUnit *createPixel(UErrorCode &status);
01865
01871 static MeasureUnit getPixel();
01872 #endif
01873
01874 #ifndef U_HIDE_DRAFT_API
01875
01882 static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
01883
01889 static MeasureUnit getPixelPerCentimeter();
01890 #endif
01891
01892 #ifndef U_HIDE_DRAFT_API
01893
01900 static MeasureUnit *createPixelPerInch(UErrorCode &status);
01901
01907 static MeasureUnit getPixelPerInch();
01908 #endif
01909
01917 static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
01918
01924 static MeasureUnit getAstronomicalUnit();
01925
01933 static MeasureUnit *createCentimeter(UErrorCode &status);
01934
01940 static MeasureUnit getCentimeter();
01941
01949 static MeasureUnit *createDecimeter(UErrorCode &status);
01950
01956 static MeasureUnit getDecimeter();
01957
01965 static MeasureUnit *createFathom(UErrorCode &status);
01966
01972 static MeasureUnit getFathom();
01973
01981 static MeasureUnit *createFoot(UErrorCode &status);
01982
01988 static MeasureUnit getFoot();
01989
01997 static MeasureUnit *createFurlong(UErrorCode &status);
01998
02004 static MeasureUnit getFurlong();
02005
02013 static MeasureUnit *createInch(UErrorCode &status);
02014
02020 static MeasureUnit getInch();
02021
02029 static MeasureUnit *createKilometer(UErrorCode &status);
02030
02036 static MeasureUnit getKilometer();
02037
02045 static MeasureUnit *createLightYear(UErrorCode &status);
02046
02052 static MeasureUnit getLightYear();
02053
02061 static MeasureUnit *createMeter(UErrorCode &status);
02062
02068 static MeasureUnit getMeter();
02069
02077 static MeasureUnit *createMicrometer(UErrorCode &status);
02078
02084 static MeasureUnit getMicrometer();
02085
02093 static MeasureUnit *createMile(UErrorCode &status);
02094
02100 static MeasureUnit getMile();
02101
02109 static MeasureUnit *createMileScandinavian(UErrorCode &status);
02110
02116 static MeasureUnit getMileScandinavian();
02117
02125 static MeasureUnit *createMillimeter(UErrorCode &status);
02126
02132 static MeasureUnit getMillimeter();
02133
02141 static MeasureUnit *createNanometer(UErrorCode &status);
02142
02148 static MeasureUnit getNanometer();
02149
02157 static MeasureUnit *createNauticalMile(UErrorCode &status);
02158
02164 static MeasureUnit getNauticalMile();
02165
02173 static MeasureUnit *createParsec(UErrorCode &status);
02174
02180 static MeasureUnit getParsec();
02181
02189 static MeasureUnit *createPicometer(UErrorCode &status);
02190
02196 static MeasureUnit getPicometer();
02197
02205 static MeasureUnit *createPoint(UErrorCode &status);
02206
02212 static MeasureUnit getPoint();
02213
02221 static MeasureUnit *createSolarRadius(UErrorCode &status);
02222
02228 static MeasureUnit getSolarRadius();
02229
02237 static MeasureUnit *createYard(UErrorCode &status);
02238
02244 static MeasureUnit getYard();
02245
02253 static MeasureUnit *createLux(UErrorCode &status);
02254
02260 static MeasureUnit getLux();
02261
02269 static MeasureUnit *createSolarLuminosity(UErrorCode &status);
02270
02276 static MeasureUnit getSolarLuminosity();
02277
02285 static MeasureUnit *createCarat(UErrorCode &status);
02286
02292 static MeasureUnit getCarat();
02293
02301 static MeasureUnit *createDalton(UErrorCode &status);
02302
02308 static MeasureUnit getDalton();
02309
02317 static MeasureUnit *createEarthMass(UErrorCode &status);
02318
02324 static MeasureUnit getEarthMass();
02325
02333 static MeasureUnit *createGram(UErrorCode &status);
02334
02340 static MeasureUnit getGram();
02341
02349 static MeasureUnit *createKilogram(UErrorCode &status);
02350
02356 static MeasureUnit getKilogram();
02357
02365 static MeasureUnit *createMetricTon(UErrorCode &status);
02366
02372 static MeasureUnit getMetricTon();
02373
02381 static MeasureUnit *createMicrogram(UErrorCode &status);
02382
02388 static MeasureUnit getMicrogram();
02389
02397 static MeasureUnit *createMilligram(UErrorCode &status);
02398
02404 static MeasureUnit getMilligram();
02405
02413 static MeasureUnit *createOunce(UErrorCode &status);
02414
02420 static MeasureUnit getOunce();
02421
02429 static MeasureUnit *createOunceTroy(UErrorCode &status);
02430
02436 static MeasureUnit getOunceTroy();
02437
02445 static MeasureUnit *createPound(UErrorCode &status);
02446
02452 static MeasureUnit getPound();
02453
02461 static MeasureUnit *createSolarMass(UErrorCode &status);
02462
02468 static MeasureUnit getSolarMass();
02469
02477 static MeasureUnit *createStone(UErrorCode &status);
02478
02484 static MeasureUnit getStone();
02485
02493 static MeasureUnit *createTon(UErrorCode &status);
02494
02500 static MeasureUnit getTon();
02501
02509 static MeasureUnit *createGigawatt(UErrorCode &status);
02510
02516 static MeasureUnit getGigawatt();
02517
02525 static MeasureUnit *createHorsepower(UErrorCode &status);
02526
02532 static MeasureUnit getHorsepower();
02533
02541 static MeasureUnit *createKilowatt(UErrorCode &status);
02542
02548 static MeasureUnit getKilowatt();
02549
02557 static MeasureUnit *createMegawatt(UErrorCode &status);
02558
02564 static MeasureUnit getMegawatt();
02565
02573 static MeasureUnit *createMilliwatt(UErrorCode &status);
02574
02580 static MeasureUnit getMilliwatt();
02581
02589 static MeasureUnit *createWatt(UErrorCode &status);
02590
02596 static MeasureUnit getWatt();
02597
02605 static MeasureUnit *createAtmosphere(UErrorCode &status);
02606
02612 static MeasureUnit getAtmosphere();
02613
02614 #ifndef U_HIDE_DRAFT_API
02615
02622 static MeasureUnit *createBar(UErrorCode &status);
02623
02629 static MeasureUnit getBar();
02630 #endif
02631
02639 static MeasureUnit *createHectopascal(UErrorCode &status);
02640
02646 static MeasureUnit getHectopascal();
02647
02655 static MeasureUnit *createInchHg(UErrorCode &status);
02656
02662 static MeasureUnit getInchHg();
02663
02671 static MeasureUnit *createKilopascal(UErrorCode &status);
02672
02678 static MeasureUnit getKilopascal();
02679
02687 static MeasureUnit *createMegapascal(UErrorCode &status);
02688
02694 static MeasureUnit getMegapascal();
02695
02703 static MeasureUnit *createMillibar(UErrorCode &status);
02704
02710 static MeasureUnit getMillibar();
02711
02719 static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
02720
02726 static MeasureUnit getMillimeterOfMercury();
02727
02728 #ifndef U_HIDE_DRAFT_API
02729
02736 static MeasureUnit *createPascal(UErrorCode &status);
02737
02743 static MeasureUnit getPascal();
02744 #endif
02745
02753 static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
02754
02760 static MeasureUnit getPoundPerSquareInch();
02761
02769 static MeasureUnit *createKilometerPerHour(UErrorCode &status);
02770
02776 static MeasureUnit getKilometerPerHour();
02777
02785 static MeasureUnit *createKnot(UErrorCode &status);
02786
02792 static MeasureUnit getKnot();
02793
02801 static MeasureUnit *createMeterPerSecond(UErrorCode &status);
02802
02808 static MeasureUnit getMeterPerSecond();
02809
02817 static MeasureUnit *createMilePerHour(UErrorCode &status);
02818
02824 static MeasureUnit getMilePerHour();
02825
02833 static MeasureUnit *createCelsius(UErrorCode &status);
02834
02840 static MeasureUnit getCelsius();
02841
02849 static MeasureUnit *createFahrenheit(UErrorCode &status);
02850
02856 static MeasureUnit getFahrenheit();
02857
02865 static MeasureUnit *createGenericTemperature(UErrorCode &status);
02866
02872 static MeasureUnit getGenericTemperature();
02873
02881 static MeasureUnit *createKelvin(UErrorCode &status);
02882
02888 static MeasureUnit getKelvin();
02889
02897 static MeasureUnit *createNewtonMeter(UErrorCode &status);
02898
02904 static MeasureUnit getNewtonMeter();
02905
02913 static MeasureUnit *createPoundFoot(UErrorCode &status);
02914
02920 static MeasureUnit getPoundFoot();
02921
02929 static MeasureUnit *createAcreFoot(UErrorCode &status);
02930
02936 static MeasureUnit getAcreFoot();
02937
02945 static MeasureUnit *createBarrel(UErrorCode &status);
02946
02952 static MeasureUnit getBarrel();
02953
02961 static MeasureUnit *createBushel(UErrorCode &status);
02962
02968 static MeasureUnit getBushel();
02969
02977 static MeasureUnit *createCentiliter(UErrorCode &status);
02978
02984 static MeasureUnit getCentiliter();
02985
02993 static MeasureUnit *createCubicCentimeter(UErrorCode &status);
02994
03000 static MeasureUnit getCubicCentimeter();
03001
03009 static MeasureUnit *createCubicFoot(UErrorCode &status);
03010
03016 static MeasureUnit getCubicFoot();
03017
03025 static MeasureUnit *createCubicInch(UErrorCode &status);
03026
03032 static MeasureUnit getCubicInch();
03033
03041 static MeasureUnit *createCubicKilometer(UErrorCode &status);
03042
03048 static MeasureUnit getCubicKilometer();
03049
03057 static MeasureUnit *createCubicMeter(UErrorCode &status);
03058
03064 static MeasureUnit getCubicMeter();
03065
03073 static MeasureUnit *createCubicMile(UErrorCode &status);
03074
03080 static MeasureUnit getCubicMile();
03081
03089 static MeasureUnit *createCubicYard(UErrorCode &status);
03090
03096 static MeasureUnit getCubicYard();
03097
03105 static MeasureUnit *createCup(UErrorCode &status);
03106
03112 static MeasureUnit getCup();
03113
03121 static MeasureUnit *createCupMetric(UErrorCode &status);
03122
03128 static MeasureUnit getCupMetric();
03129
03137 static MeasureUnit *createDeciliter(UErrorCode &status);
03138
03144 static MeasureUnit getDeciliter();
03145
03153 static MeasureUnit *createFluidOunce(UErrorCode &status);
03154
03160 static MeasureUnit getFluidOunce();
03161
03169 static MeasureUnit *createFluidOunceImperial(UErrorCode &status);
03170
03176 static MeasureUnit getFluidOunceImperial();
03177
03185 static MeasureUnit *createGallon(UErrorCode &status);
03186
03192 static MeasureUnit getGallon();
03193
03201 static MeasureUnit *createGallonImperial(UErrorCode &status);
03202
03208 static MeasureUnit getGallonImperial();
03209
03217 static MeasureUnit *createHectoliter(UErrorCode &status);
03218
03224 static MeasureUnit getHectoliter();
03225
03233 static MeasureUnit *createLiter(UErrorCode &status);
03234
03240 static MeasureUnit getLiter();
03241
03249 static MeasureUnit *createMegaliter(UErrorCode &status);
03250
03256 static MeasureUnit getMegaliter();
03257
03265 static MeasureUnit *createMilliliter(UErrorCode &status);
03266
03272 static MeasureUnit getMilliliter();
03273
03281 static MeasureUnit *createPint(UErrorCode &status);
03282
03288 static MeasureUnit getPint();
03289
03297 static MeasureUnit *createPintMetric(UErrorCode &status);
03298
03304 static MeasureUnit getPintMetric();
03305
03313 static MeasureUnit *createQuart(UErrorCode &status);
03314
03320 static MeasureUnit getQuart();
03321
03329 static MeasureUnit *createTablespoon(UErrorCode &status);
03330
03336 static MeasureUnit getTablespoon();
03337
03345 static MeasureUnit *createTeaspoon(UErrorCode &status);
03346
03352 static MeasureUnit getTeaspoon();
03353
03354
03355
03356
03357 protected:
03358
03359 #ifndef U_HIDE_INTERNAL_API
03360
03364 void initTime(const char *timeId);
03365
03370 void initCurrency(StringPiece isoCurrency);
03371
03376 void initNoUnit(const char *subtype);
03377
03378 #endif
03379
03380 private:
03381
03382
03383
03384 MeasureUnitImpl* fImpl;
03385
03386
03387
03388 int16_t fSubTypeId;
03389
03390
03391 int8_t fTypeId;
03392
03393 MeasureUnit(int32_t typeId, int32_t subTypeId);
03394 MeasureUnit(MeasureUnitImpl&& impl);
03395 void setTo(int32_t typeId, int32_t subTypeId);
03396 int32_t getOffset() const;
03397 static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
03398
03406 static bool findBySubType(StringPiece subType, MeasureUnit* output);
03407
03408 friend struct MeasureUnitImpl;
03409 };
03410
03411 U_NAMESPACE_END
03412
03413 #endif // !UNCONFIG_NO_FORMATTING
03414
03415 #endif
03416
03417 #endif // __MEASUREUNIT_H__