|
ICU 73.2
73.2
|
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__
1.7.6.1