ICU 76.1  76.1
measunit.h
Go to the documentation of this file.
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 **********************************************************************
5 * Copyright (c) 2004-2016, International Business Machines
6 * Corporation and others. All Rights Reserved.
7 **********************************************************************
8 * Author: Alan Liu
9 * Created: April 26, 2004
10 * Since: ICU 3.0
11 **********************************************************************
12 */
13 #ifndef __MEASUREUNIT_H__
14 #define __MEASUREUNIT_H__
15 
16 #include "unicode/utypes.h"
17 
18 #if U_SHOW_CPLUSPLUS_API
19 
20 #if !UCONFIG_NO_FORMATTING
21 
22 #include <utility>
23 #include "unicode/unistr.h"
24 #include "unicode/localpointer.h"
25 
31 U_NAMESPACE_BEGIN
32 
33 class StringEnumeration;
34 class MeasureUnitImpl;
35 
36 namespace number::impl {
37 class LongNameHandler;
38 } // namespace number::impl
39 
62 
69 
76 };
77 
78 
89 typedef enum UMeasurePrefix {
100 
107 
108 #ifndef U_HIDE_DRAFT_API
109 
115 
122 #endif /* U_HIDE_DRAFT_API */
123 
124 #ifndef U_HIDE_INTERNAL_API
125 
130 #ifndef U_HIDE_DRAFT_API
132 #else /* U_HIDE_DRAFT_API */
134 #endif /* U_HIDE_DRAFT_API */
135 
136 #endif /* U_HIDE_INTERNAL_API */
137 
144 
151 
158 
165 
172 
179 
186 
193 
200 
207 
214 
221 
228 
235 
242 
249 
256 
263 
270 
271 #ifndef U_HIDE_DRAFT_API
272 
278 
285 #endif /* U_HIDE_DRAFT_API */
286 
287 #ifndef U_HIDE_INTERNAL_API
288 
293 #ifndef U_HIDE_DRAFT_API
295 #else /* U_HIDE_DRAFT_API */
297 #endif /* U_HIDE_DRAFT_API */
298 
299 #endif // U_HIDE_INTERNAL_API
300 
301  // Cannot conditionalize the following with #ifndef U_HIDE_INTERNAL_API,
302  // used in definitions of non-internal enum values
309 
316 
317 #ifndef U_HIDE_INTERNAL_API
318 
324 #endif // U_HIDE_INTERNAL_API
325 
332 
339 
346 
353 
360 
367 
374 
375 #ifndef U_HIDE_INTERNAL_API
376 
382 #endif // U_HIDE_INTERNAL_API
384 
392 U_CAPI int32_t U_EXPORT2 umeas_getPrefixBase(UMeasurePrefix unitPrefix);
393 
400 U_CAPI int32_t U_EXPORT2 umeas_getPrefixPower(UMeasurePrefix unitPrefix);
401 
410  public:
411 
418  MeasureUnit();
419 
424  MeasureUnit(const MeasureUnit &other);
425 
430  MeasureUnit(MeasureUnit &&other) noexcept;
431 
445  static MeasureUnit forIdentifier(StringPiece identifier, UErrorCode& status);
446 
451  MeasureUnit &operator=(const MeasureUnit &other);
452 
457  MeasureUnit &operator=(MeasureUnit &&other) noexcept;
458 
464  virtual MeasureUnit* clone() const;
465 
470  virtual ~MeasureUnit();
471 
477  virtual bool operator==(const UObject& other) const;
478 
484  bool operator!=(const UObject& other) const {
485  return !(*this == other);
486  }
487 
495  const char *getType() const;
496 
504  const char *getSubtype() const;
505 
512  const char* getIdentifier() const;
513 
521  UMeasureUnitComplexity getComplexity(UErrorCode& status) const;
522 
537  MeasureUnit withPrefix(UMeasurePrefix prefix, UErrorCode& status) const;
538 
553  UMeasurePrefix getPrefix(UErrorCode& status) const;
554 
569  MeasureUnit withDimensionality(int32_t dimensionality, UErrorCode& status) const;
570 
584  int32_t getDimensionality(UErrorCode& status) const;
585 
598  MeasureUnit reciprocal(UErrorCode& status) const;
599 
617  MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;
618 
634  inline std::pair<LocalArray<MeasureUnit>, int32_t> splitToSingleUnits(UErrorCode& status) const;
635 
647  static int32_t getAvailable(
648  MeasureUnit *destArray,
649  int32_t destCapacity,
650  UErrorCode &errorCode);
651 
664  static int32_t getAvailable(
665  const char *type,
666  MeasureUnit *destArray,
667  int32_t destCapacity,
668  UErrorCode &errorCode);
669 
678  static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
679 
691  static UClassID U_EXPORT2 getStaticClassID();
692 
704  virtual UClassID getDynamicClassID() const override;
705 
706 #ifndef U_HIDE_INTERNAL_API
707 
712  int32_t getOffset() const;
713 #endif /* U_HIDE_INTERNAL_API */
714 
715 // All code between the "Start generated createXXX methods" comment and
716 // the "End generated createXXX methods" comment is auto generated code
717 // and must not be edited manually. For instructions on how to correctly
718 // update this code, refer to:
719 // docs/processes/release/tasks/updating-measure-unit.md
720 //
721 // Start generated createXXX methods
722 
730  static MeasureUnit *createGForce(UErrorCode &status);
731 
737  static MeasureUnit getGForce();
738 
746  static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
747 
753  static MeasureUnit getMeterPerSecondSquared();
754 
762  static MeasureUnit *createArcMinute(UErrorCode &status);
763 
769  static MeasureUnit getArcMinute();
770 
778  static MeasureUnit *createArcSecond(UErrorCode &status);
779 
785  static MeasureUnit getArcSecond();
786 
794  static MeasureUnit *createDegree(UErrorCode &status);
795 
801  static MeasureUnit getDegree();
802 
810  static MeasureUnit *createRadian(UErrorCode &status);
811 
817  static MeasureUnit getRadian();
818 
826  static MeasureUnit *createRevolutionAngle(UErrorCode &status);
827 
833  static MeasureUnit getRevolutionAngle();
834 
842  static MeasureUnit *createAcre(UErrorCode &status);
843 
849  static MeasureUnit getAcre();
850 
858  static MeasureUnit *createDunam(UErrorCode &status);
859 
865  static MeasureUnit getDunam();
866 
874  static MeasureUnit *createHectare(UErrorCode &status);
875 
881  static MeasureUnit getHectare();
882 
890  static MeasureUnit *createSquareCentimeter(UErrorCode &status);
891 
897  static MeasureUnit getSquareCentimeter();
898 
906  static MeasureUnit *createSquareFoot(UErrorCode &status);
907 
913  static MeasureUnit getSquareFoot();
914 
922  static MeasureUnit *createSquareInch(UErrorCode &status);
923 
929  static MeasureUnit getSquareInch();
930 
938  static MeasureUnit *createSquareKilometer(UErrorCode &status);
939 
945  static MeasureUnit getSquareKilometer();
946 
954  static MeasureUnit *createSquareMeter(UErrorCode &status);
955 
961  static MeasureUnit getSquareMeter();
962 
970  static MeasureUnit *createSquareMile(UErrorCode &status);
971 
977  static MeasureUnit getSquareMile();
978 
986  static MeasureUnit *createSquareYard(UErrorCode &status);
987 
993  static MeasureUnit getSquareYard();
994 
1002  static MeasureUnit *createItem(UErrorCode &status);
1003 
1009  static MeasureUnit getItem();
1010 
1018  static MeasureUnit *createKarat(UErrorCode &status);
1019 
1025  static MeasureUnit getKarat();
1026 
1034  static MeasureUnit *createMilligramOfglucosePerDeciliter(UErrorCode &status);
1035 
1041  static MeasureUnit getMilligramOfglucosePerDeciliter();
1042 
1050  static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
1051 
1057  static MeasureUnit getMilligramPerDeciliter();
1058 
1066  static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
1067 
1073  static MeasureUnit getMillimolePerLiter();
1074 
1082  static MeasureUnit *createMole(UErrorCode &status);
1083 
1089  static MeasureUnit getMole();
1090 
1098  static MeasureUnit *createPercent(UErrorCode &status);
1099 
1105  static MeasureUnit getPercent();
1106 
1114  static MeasureUnit *createPermille(UErrorCode &status);
1115 
1121  static MeasureUnit getPermille();
1122 
1130  static MeasureUnit *createPartPerMillion(UErrorCode &status);
1131 
1137  static MeasureUnit getPartPerMillion();
1138 
1146  static MeasureUnit *createPermyriad(UErrorCode &status);
1147 
1153  static MeasureUnit getPermyriad();
1154 
1162  static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
1163 
1169  static MeasureUnit getLiterPer100Kilometers();
1170 
1178  static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
1179 
1185  static MeasureUnit getLiterPerKilometer();
1186 
1194  static MeasureUnit *createMilePerGallon(UErrorCode &status);
1195 
1201  static MeasureUnit getMilePerGallon();
1202 
1210  static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
1211 
1217  static MeasureUnit getMilePerGallonImperial();
1218 
1226  static MeasureUnit *createBit(UErrorCode &status);
1227 
1233  static MeasureUnit getBit();
1234 
1242  static MeasureUnit *createByte(UErrorCode &status);
1243 
1249  static MeasureUnit getByte();
1250 
1258  static MeasureUnit *createGigabit(UErrorCode &status);
1259 
1265  static MeasureUnit getGigabit();
1266 
1274  static MeasureUnit *createGigabyte(UErrorCode &status);
1275 
1281  static MeasureUnit getGigabyte();
1282 
1290  static MeasureUnit *createKilobit(UErrorCode &status);
1291 
1297  static MeasureUnit getKilobit();
1298 
1306  static MeasureUnit *createKilobyte(UErrorCode &status);
1307 
1313  static MeasureUnit getKilobyte();
1314 
1322  static MeasureUnit *createMegabit(UErrorCode &status);
1323 
1329  static MeasureUnit getMegabit();
1330 
1338  static MeasureUnit *createMegabyte(UErrorCode &status);
1339 
1345  static MeasureUnit getMegabyte();
1346 
1354  static MeasureUnit *createPetabyte(UErrorCode &status);
1355 
1361  static MeasureUnit getPetabyte();
1362 
1370  static MeasureUnit *createTerabit(UErrorCode &status);
1371 
1377  static MeasureUnit getTerabit();
1378 
1386  static MeasureUnit *createTerabyte(UErrorCode &status);
1387 
1393  static MeasureUnit getTerabyte();
1394 
1402  static MeasureUnit *createCentury(UErrorCode &status);
1403 
1409  static MeasureUnit getCentury();
1410 
1418  static MeasureUnit *createDay(UErrorCode &status);
1419 
1425  static MeasureUnit getDay();
1426 
1434  static MeasureUnit *createDayPerson(UErrorCode &status);
1435 
1441  static MeasureUnit getDayPerson();
1442 
1450  static MeasureUnit *createDecade(UErrorCode &status);
1451 
1457  static MeasureUnit getDecade();
1458 
1466  static MeasureUnit *createHour(UErrorCode &status);
1467 
1473  static MeasureUnit getHour();
1474 
1482  static MeasureUnit *createMicrosecond(UErrorCode &status);
1483 
1489  static MeasureUnit getMicrosecond();
1490 
1498  static MeasureUnit *createMillisecond(UErrorCode &status);
1499 
1505  static MeasureUnit getMillisecond();
1506 
1514  static MeasureUnit *createMinute(UErrorCode &status);
1515 
1521  static MeasureUnit getMinute();
1522 
1530  static MeasureUnit *createMonth(UErrorCode &status);
1531 
1537  static MeasureUnit getMonth();
1538 
1546  static MeasureUnit *createMonthPerson(UErrorCode &status);
1547 
1553  static MeasureUnit getMonthPerson();
1554 
1562  static MeasureUnit *createNanosecond(UErrorCode &status);
1563 
1569  static MeasureUnit getNanosecond();
1570 
1571 #ifndef U_HIDE_DRAFT_API
1572 
1579  static MeasureUnit *createNight(UErrorCode &status);
1580 
1586  static MeasureUnit getNight();
1587 #endif /* U_HIDE_DRAFT_API */
1588 
1596  static MeasureUnit *createQuarter(UErrorCode &status);
1597 
1603  static MeasureUnit getQuarter();
1604 
1612  static MeasureUnit *createSecond(UErrorCode &status);
1613 
1619  static MeasureUnit getSecond();
1620 
1628  static MeasureUnit *createWeek(UErrorCode &status);
1629 
1635  static MeasureUnit getWeek();
1636 
1644  static MeasureUnit *createWeekPerson(UErrorCode &status);
1645 
1651  static MeasureUnit getWeekPerson();
1652 
1660  static MeasureUnit *createYear(UErrorCode &status);
1661 
1667  static MeasureUnit getYear();
1668 
1676  static MeasureUnit *createYearPerson(UErrorCode &status);
1677 
1683  static MeasureUnit getYearPerson();
1684 
1692  static MeasureUnit *createAmpere(UErrorCode &status);
1693 
1699  static MeasureUnit getAmpere();
1700 
1708  static MeasureUnit *createMilliampere(UErrorCode &status);
1709 
1715  static MeasureUnit getMilliampere();
1716 
1724  static MeasureUnit *createOhm(UErrorCode &status);
1725 
1731  static MeasureUnit getOhm();
1732 
1740  static MeasureUnit *createVolt(UErrorCode &status);
1741 
1747  static MeasureUnit getVolt();
1748 
1756  static MeasureUnit *createBritishThermalUnit(UErrorCode &status);
1757 
1763  static MeasureUnit getBritishThermalUnit();
1764 
1772  static MeasureUnit *createCalorie(UErrorCode &status);
1773 
1779  static MeasureUnit getCalorie();
1780 
1788  static MeasureUnit *createElectronvolt(UErrorCode &status);
1789 
1795  static MeasureUnit getElectronvolt();
1796 
1804  static MeasureUnit *createFoodcalorie(UErrorCode &status);
1805 
1811  static MeasureUnit getFoodcalorie();
1812 
1820  static MeasureUnit *createJoule(UErrorCode &status);
1821 
1827  static MeasureUnit getJoule();
1828 
1836  static MeasureUnit *createKilocalorie(UErrorCode &status);
1837 
1843  static MeasureUnit getKilocalorie();
1844 
1852  static MeasureUnit *createKilojoule(UErrorCode &status);
1853 
1859  static MeasureUnit getKilojoule();
1860 
1868  static MeasureUnit *createKilowattHour(UErrorCode &status);
1869 
1875  static MeasureUnit getKilowattHour();
1876 
1884  static MeasureUnit *createThermUs(UErrorCode &status);
1885 
1891  static MeasureUnit getThermUs();
1892 
1900  static MeasureUnit *createKilowattHourPer100Kilometer(UErrorCode &status);
1901 
1907  static MeasureUnit getKilowattHourPer100Kilometer();
1908 
1916  static MeasureUnit *createNewton(UErrorCode &status);
1917 
1923  static MeasureUnit getNewton();
1924 
1932  static MeasureUnit *createPoundForce(UErrorCode &status);
1933 
1939  static MeasureUnit getPoundForce();
1940 
1948  static MeasureUnit *createGigahertz(UErrorCode &status);
1949 
1955  static MeasureUnit getGigahertz();
1956 
1964  static MeasureUnit *createHertz(UErrorCode &status);
1965 
1971  static MeasureUnit getHertz();
1972 
1980  static MeasureUnit *createKilohertz(UErrorCode &status);
1981 
1987  static MeasureUnit getKilohertz();
1988 
1996  static MeasureUnit *createMegahertz(UErrorCode &status);
1997 
2003  static MeasureUnit getMegahertz();
2004 
2012  static MeasureUnit *createDot(UErrorCode &status);
2013 
2019  static MeasureUnit getDot();
2020 
2028  static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
2029 
2035  static MeasureUnit getDotPerCentimeter();
2036 
2044  static MeasureUnit *createDotPerInch(UErrorCode &status);
2045 
2051  static MeasureUnit getDotPerInch();
2052 
2060  static MeasureUnit *createEm(UErrorCode &status);
2061 
2067  static MeasureUnit getEm();
2068 
2076  static MeasureUnit *createMegapixel(UErrorCode &status);
2077 
2083  static MeasureUnit getMegapixel();
2084 
2092  static MeasureUnit *createPixel(UErrorCode &status);
2093 
2099  static MeasureUnit getPixel();
2100 
2108  static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
2109 
2115  static MeasureUnit getPixelPerCentimeter();
2116 
2124  static MeasureUnit *createPixelPerInch(UErrorCode &status);
2125 
2131  static MeasureUnit getPixelPerInch();
2132 
2140  static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
2141 
2147  static MeasureUnit getAstronomicalUnit();
2148 
2156  static MeasureUnit *createCentimeter(UErrorCode &status);
2157 
2163  static MeasureUnit getCentimeter();
2164 
2172  static MeasureUnit *createDecimeter(UErrorCode &status);
2173 
2179  static MeasureUnit getDecimeter();
2180 
2188  static MeasureUnit *createEarthRadius(UErrorCode &status);
2189 
2195  static MeasureUnit getEarthRadius();
2196 
2204  static MeasureUnit *createFathom(UErrorCode &status);
2205 
2211  static MeasureUnit getFathom();
2212 
2220  static MeasureUnit *createFoot(UErrorCode &status);
2221 
2227  static MeasureUnit getFoot();
2228 
2236  static MeasureUnit *createFurlong(UErrorCode &status);
2237 
2243  static MeasureUnit getFurlong();
2244 
2252  static MeasureUnit *createInch(UErrorCode &status);
2253 
2259  static MeasureUnit getInch();
2260 
2268  static MeasureUnit *createKilometer(UErrorCode &status);
2269 
2275  static MeasureUnit getKilometer();
2276 
2284  static MeasureUnit *createLightYear(UErrorCode &status);
2285 
2291  static MeasureUnit getLightYear();
2292 
2300  static MeasureUnit *createMeter(UErrorCode &status);
2301 
2307  static MeasureUnit getMeter();
2308 
2316  static MeasureUnit *createMicrometer(UErrorCode &status);
2317 
2323  static MeasureUnit getMicrometer();
2324 
2332  static MeasureUnit *createMile(UErrorCode &status);
2333 
2339  static MeasureUnit getMile();
2340 
2348  static MeasureUnit *createMileScandinavian(UErrorCode &status);
2349 
2355  static MeasureUnit getMileScandinavian();
2356 
2364  static MeasureUnit *createMillimeter(UErrorCode &status);
2365 
2371  static MeasureUnit getMillimeter();
2372 
2380  static MeasureUnit *createNanometer(UErrorCode &status);
2381 
2387  static MeasureUnit getNanometer();
2388 
2396  static MeasureUnit *createNauticalMile(UErrorCode &status);
2397 
2403  static MeasureUnit getNauticalMile();
2404 
2412  static MeasureUnit *createParsec(UErrorCode &status);
2413 
2419  static MeasureUnit getParsec();
2420 
2428  static MeasureUnit *createPicometer(UErrorCode &status);
2429 
2435  static MeasureUnit getPicometer();
2436 
2444  static MeasureUnit *createPoint(UErrorCode &status);
2445 
2451  static MeasureUnit getPoint();
2452 
2460  static MeasureUnit *createSolarRadius(UErrorCode &status);
2461 
2467  static MeasureUnit getSolarRadius();
2468 
2476  static MeasureUnit *createYard(UErrorCode &status);
2477 
2483  static MeasureUnit getYard();
2484 
2492  static MeasureUnit *createCandela(UErrorCode &status);
2493 
2499  static MeasureUnit getCandela();
2500 
2508  static MeasureUnit *createLumen(UErrorCode &status);
2509 
2515  static MeasureUnit getLumen();
2516 
2524  static MeasureUnit *createLux(UErrorCode &status);
2525 
2531  static MeasureUnit getLux();
2532 
2540  static MeasureUnit *createSolarLuminosity(UErrorCode &status);
2541 
2547  static MeasureUnit getSolarLuminosity();
2548 
2556  static MeasureUnit *createCarat(UErrorCode &status);
2557 
2563  static MeasureUnit getCarat();
2564 
2572  static MeasureUnit *createDalton(UErrorCode &status);
2573 
2579  static MeasureUnit getDalton();
2580 
2588  static MeasureUnit *createEarthMass(UErrorCode &status);
2589 
2595  static MeasureUnit getEarthMass();
2596 
2604  static MeasureUnit *createGrain(UErrorCode &status);
2605 
2611  static MeasureUnit getGrain();
2612 
2620  static MeasureUnit *createGram(UErrorCode &status);
2621 
2627  static MeasureUnit getGram();
2628 
2636  static MeasureUnit *createKilogram(UErrorCode &status);
2637 
2643  static MeasureUnit getKilogram();
2644 
2652  static MeasureUnit *createMicrogram(UErrorCode &status);
2653 
2659  static MeasureUnit getMicrogram();
2660 
2668  static MeasureUnit *createMilligram(UErrorCode &status);
2669 
2675  static MeasureUnit getMilligram();
2676 
2684  static MeasureUnit *createOunce(UErrorCode &status);
2685 
2691  static MeasureUnit getOunce();
2692 
2700  static MeasureUnit *createOunceTroy(UErrorCode &status);
2701 
2707  static MeasureUnit getOunceTroy();
2708 
2716  static MeasureUnit *createPound(UErrorCode &status);
2717 
2723  static MeasureUnit getPound();
2724 
2732  static MeasureUnit *createSolarMass(UErrorCode &status);
2733 
2739  static MeasureUnit getSolarMass();
2740 
2748  static MeasureUnit *createStone(UErrorCode &status);
2749 
2755  static MeasureUnit getStone();
2756 
2764  static MeasureUnit *createTon(UErrorCode &status);
2765 
2771  static MeasureUnit getTon();
2772 
2780  static MeasureUnit *createTonne(UErrorCode &status);
2781 
2787  static MeasureUnit getTonne();
2788 
2800  static MeasureUnit *createMetricTon(UErrorCode &status);
2801 
2811  static MeasureUnit getMetricTon();
2812 
2820  static MeasureUnit *createGigawatt(UErrorCode &status);
2821 
2827  static MeasureUnit getGigawatt();
2828 
2836  static MeasureUnit *createHorsepower(UErrorCode &status);
2837 
2843  static MeasureUnit getHorsepower();
2844 
2852  static MeasureUnit *createKilowatt(UErrorCode &status);
2853 
2859  static MeasureUnit getKilowatt();
2860 
2868  static MeasureUnit *createMegawatt(UErrorCode &status);
2869 
2875  static MeasureUnit getMegawatt();
2876 
2884  static MeasureUnit *createMilliwatt(UErrorCode &status);
2885 
2891  static MeasureUnit getMilliwatt();
2892 
2900  static MeasureUnit *createWatt(UErrorCode &status);
2901 
2907  static MeasureUnit getWatt();
2908 
2916  static MeasureUnit *createAtmosphere(UErrorCode &status);
2917 
2923  static MeasureUnit getAtmosphere();
2924 
2932  static MeasureUnit *createBar(UErrorCode &status);
2933 
2939  static MeasureUnit getBar();
2940 
2948  static MeasureUnit *createGasolineEnergyDensity(UErrorCode &status);
2949 
2955  static MeasureUnit getGasolineEnergyDensity();
2956 
2964  static MeasureUnit *createHectopascal(UErrorCode &status);
2965 
2971  static MeasureUnit getHectopascal();
2972 
2980  static MeasureUnit *createInchHg(UErrorCode &status);
2981 
2987  static MeasureUnit getInchHg();
2988 
2996  static MeasureUnit *createKilopascal(UErrorCode &status);
2997 
3003  static MeasureUnit getKilopascal();
3004 
3012  static MeasureUnit *createMegapascal(UErrorCode &status);
3013 
3019  static MeasureUnit getMegapascal();
3020 
3028  static MeasureUnit *createMillibar(UErrorCode &status);
3029 
3035  static MeasureUnit getMillibar();
3036 
3044  static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
3045 
3051  static MeasureUnit getMillimeterOfMercury();
3052 
3060  static MeasureUnit *createPascal(UErrorCode &status);
3061 
3067  static MeasureUnit getPascal();
3068 
3076  static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
3077 
3083  static MeasureUnit getPoundPerSquareInch();
3084 
3092  static MeasureUnit *createBeaufort(UErrorCode &status);
3093 
3099  static MeasureUnit getBeaufort();
3100 
3108  static MeasureUnit *createKilometerPerHour(UErrorCode &status);
3109 
3115  static MeasureUnit getKilometerPerHour();
3116 
3124  static MeasureUnit *createKnot(UErrorCode &status);
3125 
3131  static MeasureUnit getKnot();
3132 
3133 #ifndef U_HIDE_DRAFT_API
3134 
3141  static MeasureUnit *createLightSpeed(UErrorCode &status);
3142 
3148  static MeasureUnit getLightSpeed();
3149 #endif /* U_HIDE_DRAFT_API */
3150 
3158  static MeasureUnit *createMeterPerSecond(UErrorCode &status);
3159 
3165  static MeasureUnit getMeterPerSecond();
3166 
3174  static MeasureUnit *createMilePerHour(UErrorCode &status);
3175 
3181  static MeasureUnit getMilePerHour();
3182 
3190  static MeasureUnit *createCelsius(UErrorCode &status);
3191 
3197  static MeasureUnit getCelsius();
3198 
3206  static MeasureUnit *createFahrenheit(UErrorCode &status);
3207 
3213  static MeasureUnit getFahrenheit();
3214 
3222  static MeasureUnit *createGenericTemperature(UErrorCode &status);
3223 
3229  static MeasureUnit getGenericTemperature();
3230 
3238  static MeasureUnit *createKelvin(UErrorCode &status);
3239 
3245  static MeasureUnit getKelvin();
3246 
3254  static MeasureUnit *createNewtonMeter(UErrorCode &status);
3255 
3261  static MeasureUnit getNewtonMeter();
3262 
3270  static MeasureUnit *createPoundFoot(UErrorCode &status);
3271 
3277  static MeasureUnit getPoundFoot();
3278 
3286  static MeasureUnit *createAcreFoot(UErrorCode &status);
3287 
3293  static MeasureUnit getAcreFoot();
3294 
3302  static MeasureUnit *createBarrel(UErrorCode &status);
3303 
3309  static MeasureUnit getBarrel();
3310 
3318  static MeasureUnit *createBushel(UErrorCode &status);
3319 
3325  static MeasureUnit getBushel();
3326 
3334  static MeasureUnit *createCentiliter(UErrorCode &status);
3335 
3341  static MeasureUnit getCentiliter();
3342 
3350  static MeasureUnit *createCubicCentimeter(UErrorCode &status);
3351 
3357  static MeasureUnit getCubicCentimeter();
3358 
3366  static MeasureUnit *createCubicFoot(UErrorCode &status);
3367 
3373  static MeasureUnit getCubicFoot();
3374 
3382  static MeasureUnit *createCubicInch(UErrorCode &status);
3383 
3389  static MeasureUnit getCubicInch();
3390 
3398  static MeasureUnit *createCubicKilometer(UErrorCode &status);
3399 
3405  static MeasureUnit getCubicKilometer();
3406 
3414  static MeasureUnit *createCubicMeter(UErrorCode &status);
3415 
3421  static MeasureUnit getCubicMeter();
3422 
3430  static MeasureUnit *createCubicMile(UErrorCode &status);
3431 
3437  static MeasureUnit getCubicMile();
3438 
3446  static MeasureUnit *createCubicYard(UErrorCode &status);
3447 
3453  static MeasureUnit getCubicYard();
3454 
3462  static MeasureUnit *createCup(UErrorCode &status);
3463 
3469  static MeasureUnit getCup();
3470 
3478  static MeasureUnit *createCupMetric(UErrorCode &status);
3479 
3485  static MeasureUnit getCupMetric();
3486 
3494  static MeasureUnit *createDeciliter(UErrorCode &status);
3495 
3501  static MeasureUnit getDeciliter();
3502 
3510  static MeasureUnit *createDessertSpoon(UErrorCode &status);
3511 
3517  static MeasureUnit getDessertSpoon();
3518 
3526  static MeasureUnit *createDessertSpoonImperial(UErrorCode &status);
3527 
3533  static MeasureUnit getDessertSpoonImperial();
3534 
3542  static MeasureUnit *createDram(UErrorCode &status);
3543 
3549  static MeasureUnit getDram();
3550 
3558  static MeasureUnit *createDrop(UErrorCode &status);
3559 
3565  static MeasureUnit getDrop();
3566 
3574  static MeasureUnit *createFluidOunce(UErrorCode &status);
3575 
3581  static MeasureUnit getFluidOunce();
3582 
3590  static MeasureUnit *createFluidOunceImperial(UErrorCode &status);
3591 
3597  static MeasureUnit getFluidOunceImperial();
3598 
3606  static MeasureUnit *createGallon(UErrorCode &status);
3607 
3613  static MeasureUnit getGallon();
3614 
3622  static MeasureUnit *createGallonImperial(UErrorCode &status);
3623 
3629  static MeasureUnit getGallonImperial();
3630 
3638  static MeasureUnit *createHectoliter(UErrorCode &status);
3639 
3645  static MeasureUnit getHectoliter();
3646 
3654  static MeasureUnit *createJigger(UErrorCode &status);
3655 
3661  static MeasureUnit getJigger();
3662 
3670  static MeasureUnit *createLiter(UErrorCode &status);
3671 
3677  static MeasureUnit getLiter();
3678 
3686  static MeasureUnit *createMegaliter(UErrorCode &status);
3687 
3693  static MeasureUnit getMegaliter();
3694 
3702  static MeasureUnit *createMilliliter(UErrorCode &status);
3703 
3709  static MeasureUnit getMilliliter();
3710 
3718  static MeasureUnit *createPinch(UErrorCode &status);
3719 
3725  static MeasureUnit getPinch();
3726 
3734  static MeasureUnit *createPint(UErrorCode &status);
3735 
3741  static MeasureUnit getPint();
3742 
3750  static MeasureUnit *createPintMetric(UErrorCode &status);
3751 
3757  static MeasureUnit getPintMetric();
3758 
3766  static MeasureUnit *createQuart(UErrorCode &status);
3767 
3773  static MeasureUnit getQuart();
3774 
3782  static MeasureUnit *createQuartImperial(UErrorCode &status);
3783 
3789  static MeasureUnit getQuartImperial();
3790 
3798  static MeasureUnit *createTablespoon(UErrorCode &status);
3799 
3805  static MeasureUnit getTablespoon();
3806 
3814  static MeasureUnit *createTeaspoon(UErrorCode &status);
3815 
3821  static MeasureUnit getTeaspoon();
3822 
3823 // End generated createXXX methods
3824 
3825  protected:
3826 
3827 #ifndef U_HIDE_INTERNAL_API
3828 
3832  void initTime(const char *timeId);
3833 
3838  void initCurrency(StringPiece isoCurrency);
3839 
3840 #endif /* U_HIDE_INTERNAL_API */
3841 
3842 private:
3843 
3844  // Used by new draft APIs in ICU 67. If non-null, fImpl is owned by the
3845  // MeasureUnit.
3846  MeasureUnitImpl* fImpl;
3847 
3848  // An index into a static string list in measunit.cpp. If set to -1, fImpl
3849  // is in use instead of fTypeId and fSubTypeId.
3850  int16_t fSubTypeId;
3851  // An index into a static string list in measunit.cpp. If set to -1, fImpl
3852  // is in use instead of fTypeId and fSubTypeId.
3853  int8_t fTypeId;
3854 
3855  MeasureUnit(int32_t typeId, int32_t subTypeId);
3856  MeasureUnit(MeasureUnitImpl&& impl);
3857  void setTo(int32_t typeId, int32_t subTypeId);
3858  static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
3859 
3867  static bool findBySubType(StringPiece subType, MeasureUnit* output);
3868 
3870  LocalArray<MeasureUnit> splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const;
3871 
3872  friend class MeasureUnitImpl;
3873 
3874  // For access to findBySubType
3875  friend class number::impl::LongNameHandler;
3876 };
3877 
3878 // inline impl of @stable ICU 68 method
3879 inline std::pair<LocalArray<MeasureUnit>, int32_t>
3880 MeasureUnit::splitToSingleUnits(UErrorCode& status) const {
3881  int32_t length;
3882  auto array = splitToSingleUnitsImpl(length, status);
3883  return std::make_pair(std::move(array), length);
3884 }
3885 
3886 U_NAMESPACE_END
3887 
3888 #endif // !UNCONFIG_NO_FORMATTING
3889 
3890 #endif /* U_SHOW_CPLUSPLUS_API */
3891 
3892 #endif // __MEASUREUNIT_H__
SI prefix: femto, 10^-15.
Definition: measunit.h:248
SI prefix: peta, 10^15.
Definition: measunit.h:157
Binary prefix: yobi, 1024^8.
Definition: measunit.h:373
The absence of an SI or binary prefix.
Definition: measunit.h:99
SI prefix: atto, 10^-18.
Definition: measunit.h:255
A unit such as length, mass, volume, currency, etc.
Definition: measunit.h:409
#define U_CAPI
This is used to declare a function as a public ICU C API.
Definition: umachine.h:110
SI prefix: kilo, 10^3.
Definition: measunit.h:185
Binary prefix: pebi, 1024^5.
Definition: measunit.h:352
Binary prefix: exbi, 1024^6.
Definition: measunit.h:359
SI prefix: zepto, 10^-21.
Definition: measunit.h:262
C++ API: Unicode String.
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
A compound unit, like meter-per-second.
Definition: measunit.h:68
void * UClassID
UClassID is used to identify classes without using the compiler&#39;s RTTI.
Definition: uobject.h:96
SI prefix: milli, 10^-3.
Definition: measunit.h:220
SI prefix: quecto, 10^-30.
Definition: measunit.h:284
SI prefix: yocto, 10^-24.
Definition: measunit.h:269
Binary prefix: gibi, 1024^3.
Definition: measunit.h:338
Base class for &#39;pure&#39; C++ implementations of uenum api.
Definition: strenum.h:61
SI prefix: nano, 10^-9.
Definition: measunit.h:234
SI prefix: deka, 10^1.
Definition: measunit.h:199
Binary prefix: mebi, 1024^2.
Definition: measunit.h:331
SI prefix: ronto, 10^-27.
Definition: measunit.h:277
SI prefix: centi, 10^-2.
Definition: measunit.h:213
SI prefix: deci, 10^-1.
Definition: measunit.h:206
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:316
SI prefix: tera, 10^12.
Definition: measunit.h:164
SI prefix: mega, 10^6.
Definition: measunit.h:178
SI prefix: giga, 10^9.
Definition: measunit.h:171
SI prefix: pico, 10^-12.
Definition: measunit.h:241
SI prefix: zetta, 10^21.
Definition: measunit.h:143
SI prefix: micro, 10^-6.
Definition: measunit.h:227
enum icu::UMeasurePrefix UMeasurePrefix
Enumeration for SI and binary prefixes, e.g.
A mixed unit, like hour+minute.
Definition: measunit.h:75
Binary prefix: tebi, 1024^4.
Definition: measunit.h:345
C++ API: "Smart pointers" for use with and in ICU4C C++ code.
"Smart pointer" class, deletes objects via the C++ array delete[] operator.
Definition: localpointer.h:366
virtual UClassID getDynamicClassID() const
ICU4C "poor man&#39;s RTTI", returns a UClassID for the actual ICU class.
SI prefix: quetta, 10^30.
Definition: measunit.h:121
SI prefix: exa, 10^18.
Definition: measunit.h:150
U_CAPI int32_t umeas_getPrefixBase(UMeasurePrefix unitPrefix)
Returns the base of the factor associated with the given unit prefix: the base is 10 for SI prefixes ...
bool operator!=(const UObject &other) const
Inequality operator.
Definition: measunit.h:484
Binary prefix: zebi, 1024^7.
Definition: measunit.h:366
UMeasurePrefix
Enumeration for SI and binary prefixes, e.g.
Definition: measunit.h:89
U_CAPI int32_t umeas_getPrefixPower(UMeasurePrefix unitPrefix)
Returns the exponent of the factor associated with the given unit prefix, for example 3 for kilo...
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:430
SI prefix: ronna, 10^27.
Definition: measunit.h:114
Binary prefix: kibi, 1024^1.
Definition: measunit.h:315
SI prefix: yotta, 10^24.
Definition: measunit.h:106
Basic definitions for ICU, for both C and C++ APIs.
A single unit, like kilojoule.
Definition: measunit.h:61
SI prefix: hecto, 10^2.
Definition: measunit.h:192
A string-like object that points to a sized piece of memory.
Definition: stringpiece.h:61
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:223
UMeasureUnitComplexity
Enumeration for unit complexity.
Definition: measunit.h:55