ICU 70.1  70.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 "unicode/unistr.h"
23 #include "unicode/localpointer.h"
24 
30 U_NAMESPACE_BEGIN
31 
32 class StringEnumeration;
33 class MeasureUnitImpl;
34 
35 namespace number {
36 namespace impl {
37 class LongNameHandler;
38 }
39 } // namespace number
40 
63 
70 
77 };
78 
79 
80 #ifndef U_HIDE_DRAFT_API
81 
91 typedef enum UMeasurePrefix {
102 
109 
110 #ifndef U_HIDE_INTERNAL_API
111 
117 #endif /* U_HIDE_INTERNAL_API */
118 
125 
132 
139 
146 
153 
160 
167 
174 
181 
188 
195 
202 
209 
216 
223 
230 
237 
244 
251 
252 #ifndef U_HIDE_INTERNAL_API
253 
259 #endif // U_HIDE_INTERNAL_API
260 
261  // Cannot conditionalize the following with #ifndef U_HIDE_INTERNAL_API,
262  // used in definitions of non-internal enum values
269 
276 
277 #ifndef U_HIDE_INTERNAL_API
278 
284 #endif // U_HIDE_INTERNAL_API
285 
292 
299 
306 
313 
320 
327 
334 
335 #ifndef U_HIDE_INTERNAL_API
336 
342 #endif // U_HIDE_INTERNAL_API
344 
352 U_CAPI int32_t U_EXPORT2 umeas_getPrefixBase(UMeasurePrefix unitPrefix);
353 
360 U_CAPI int32_t U_EXPORT2 umeas_getPrefixPower(UMeasurePrefix unitPrefix);
361 
362 #endif // U_HIDE_DRAFT_API
363 
372  public:
373 
379  MeasureUnit();
380 
385  MeasureUnit(const MeasureUnit &other);
386 
391  MeasureUnit(MeasureUnit &&other) noexcept;
392 
406  static MeasureUnit forIdentifier(StringPiece identifier, UErrorCode& status);
407 
412  MeasureUnit &operator=(const MeasureUnit &other);
413 
418  MeasureUnit &operator=(MeasureUnit &&other) noexcept;
419 
425  virtual MeasureUnit* clone() const;
426 
431  virtual ~MeasureUnit();
432 
438  virtual bool operator==(const UObject& other) const;
439 
445  bool operator!=(const UObject& other) const {
446  return !(*this == other);
447  }
448 
456  const char *getType() const;
457 
465  const char *getSubtype() const;
466 
473  const char* getIdentifier() const;
474 
482  UMeasureUnitComplexity getComplexity(UErrorCode& status) const;
483 
484 #ifndef U_HIDE_DRAFT_API
485 
499  MeasureUnit withPrefix(UMeasurePrefix prefix, UErrorCode& status) const;
500 
515  UMeasurePrefix getPrefix(UErrorCode& status) const;
516 #endif // U_HIDE_DRAFT_API
517 
532  MeasureUnit withDimensionality(int32_t dimensionality, UErrorCode& status) const;
533 
547  int32_t getDimensionality(UErrorCode& status) const;
548 
561  MeasureUnit reciprocal(UErrorCode& status) const;
562 
580  MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;
581 
597  inline std::pair<LocalArray<MeasureUnit>, int32_t> splitToSingleUnits(UErrorCode& status) const;
598 
610  static int32_t getAvailable(
611  MeasureUnit *destArray,
612  int32_t destCapacity,
613  UErrorCode &errorCode);
614 
627  static int32_t getAvailable(
628  const char *type,
629  MeasureUnit *destArray,
630  int32_t destCapacity,
631  UErrorCode &errorCode);
632 
641  static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
642 
654  static UClassID U_EXPORT2 getStaticClassID(void);
655 
667  virtual UClassID getDynamicClassID(void) const override;
668 
669 #ifndef U_HIDE_INTERNAL_API
670 
675  int32_t getOffset() const;
676 #endif /* U_HIDE_INTERNAL_API */
677 
678 // All code between the "Start generated createXXX methods" comment and
679 // the "End generated createXXX methods" comment is auto generated code
680 // and must not be edited manually. For instructions on how to correctly
681 // update this code, refer to:
682 // docs/processes/release/tasks/updating-measure-unit.md
683 //
684 // Start generated createXXX methods
685 
693  static MeasureUnit *createGForce(UErrorCode &status);
694 
700  static MeasureUnit getGForce();
701 
709  static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
710 
716  static MeasureUnit getMeterPerSecondSquared();
717 
725  static MeasureUnit *createArcMinute(UErrorCode &status);
726 
732  static MeasureUnit getArcMinute();
733 
741  static MeasureUnit *createArcSecond(UErrorCode &status);
742 
748  static MeasureUnit getArcSecond();
749 
757  static MeasureUnit *createDegree(UErrorCode &status);
758 
764  static MeasureUnit getDegree();
765 
773  static MeasureUnit *createRadian(UErrorCode &status);
774 
780  static MeasureUnit getRadian();
781 
789  static MeasureUnit *createRevolutionAngle(UErrorCode &status);
790 
796  static MeasureUnit getRevolutionAngle();
797 
805  static MeasureUnit *createAcre(UErrorCode &status);
806 
812  static MeasureUnit getAcre();
813 
821  static MeasureUnit *createDunam(UErrorCode &status);
822 
828  static MeasureUnit getDunam();
829 
837  static MeasureUnit *createHectare(UErrorCode &status);
838 
844  static MeasureUnit getHectare();
845 
853  static MeasureUnit *createSquareCentimeter(UErrorCode &status);
854 
860  static MeasureUnit getSquareCentimeter();
861 
869  static MeasureUnit *createSquareFoot(UErrorCode &status);
870 
876  static MeasureUnit getSquareFoot();
877 
885  static MeasureUnit *createSquareInch(UErrorCode &status);
886 
892  static MeasureUnit getSquareInch();
893 
901  static MeasureUnit *createSquareKilometer(UErrorCode &status);
902 
908  static MeasureUnit getSquareKilometer();
909 
917  static MeasureUnit *createSquareMeter(UErrorCode &status);
918 
924  static MeasureUnit getSquareMeter();
925 
933  static MeasureUnit *createSquareMile(UErrorCode &status);
934 
940  static MeasureUnit getSquareMile();
941 
949  static MeasureUnit *createSquareYard(UErrorCode &status);
950 
956  static MeasureUnit getSquareYard();
957 
958 #ifndef U_HIDE_DRAFT_API
959 
966  static MeasureUnit *createItem(UErrorCode &status);
967 
973  static MeasureUnit getItem();
974 #endif /* U_HIDE_DRAFT_API */
975 
983  static MeasureUnit *createKarat(UErrorCode &status);
984 
990  static MeasureUnit getKarat();
991 
992 #ifndef U_HIDE_DRAFT_API
993 
1000  static MeasureUnit *createMilligramOfglucosePerDeciliter(UErrorCode &status);
1001 
1007  static MeasureUnit getMilligramOfglucosePerDeciliter();
1008 #endif /* U_HIDE_DRAFT_API */
1009 
1017  static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
1018 
1024  static MeasureUnit getMilligramPerDeciliter();
1025 
1033  static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
1034 
1040  static MeasureUnit getMillimolePerLiter();
1041 
1049  static MeasureUnit *createMole(UErrorCode &status);
1050 
1056  static MeasureUnit getMole();
1057 
1065  static MeasureUnit *createPercent(UErrorCode &status);
1066 
1072  static MeasureUnit getPercent();
1073 
1081  static MeasureUnit *createPermille(UErrorCode &status);
1082 
1088  static MeasureUnit getPermille();
1089 
1097  static MeasureUnit *createPartPerMillion(UErrorCode &status);
1098 
1104  static MeasureUnit getPartPerMillion();
1105 
1113  static MeasureUnit *createPermyriad(UErrorCode &status);
1114 
1120  static MeasureUnit getPermyriad();
1121 
1129  static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
1130 
1136  static MeasureUnit getLiterPer100Kilometers();
1137 
1145  static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
1146 
1152  static MeasureUnit getLiterPerKilometer();
1153 
1161  static MeasureUnit *createMilePerGallon(UErrorCode &status);
1162 
1168  static MeasureUnit getMilePerGallon();
1169 
1177  static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
1178 
1184  static MeasureUnit getMilePerGallonImperial();
1185 
1193  static MeasureUnit *createBit(UErrorCode &status);
1194 
1200  static MeasureUnit getBit();
1201 
1209  static MeasureUnit *createByte(UErrorCode &status);
1210 
1216  static MeasureUnit getByte();
1217 
1225  static MeasureUnit *createGigabit(UErrorCode &status);
1226 
1232  static MeasureUnit getGigabit();
1233 
1241  static MeasureUnit *createGigabyte(UErrorCode &status);
1242 
1248  static MeasureUnit getGigabyte();
1249 
1257  static MeasureUnit *createKilobit(UErrorCode &status);
1258 
1264  static MeasureUnit getKilobit();
1265 
1273  static MeasureUnit *createKilobyte(UErrorCode &status);
1274 
1280  static MeasureUnit getKilobyte();
1281 
1289  static MeasureUnit *createMegabit(UErrorCode &status);
1290 
1296  static MeasureUnit getMegabit();
1297 
1305  static MeasureUnit *createMegabyte(UErrorCode &status);
1306 
1312  static MeasureUnit getMegabyte();
1313 
1321  static MeasureUnit *createPetabyte(UErrorCode &status);
1322 
1328  static MeasureUnit getPetabyte();
1329 
1337  static MeasureUnit *createTerabit(UErrorCode &status);
1338 
1344  static MeasureUnit getTerabit();
1345 
1353  static MeasureUnit *createTerabyte(UErrorCode &status);
1354 
1360  static MeasureUnit getTerabyte();
1361 
1369  static MeasureUnit *createCentury(UErrorCode &status);
1370 
1376  static MeasureUnit getCentury();
1377 
1385  static MeasureUnit *createDay(UErrorCode &status);
1386 
1392  static MeasureUnit getDay();
1393 
1401  static MeasureUnit *createDayPerson(UErrorCode &status);
1402 
1408  static MeasureUnit getDayPerson();
1409 
1417  static MeasureUnit *createDecade(UErrorCode &status);
1418 
1424  static MeasureUnit getDecade();
1425 
1433  static MeasureUnit *createHour(UErrorCode &status);
1434 
1440  static MeasureUnit getHour();
1441 
1449  static MeasureUnit *createMicrosecond(UErrorCode &status);
1450 
1456  static MeasureUnit getMicrosecond();
1457 
1465  static MeasureUnit *createMillisecond(UErrorCode &status);
1466 
1472  static MeasureUnit getMillisecond();
1473 
1481  static MeasureUnit *createMinute(UErrorCode &status);
1482 
1488  static MeasureUnit getMinute();
1489 
1497  static MeasureUnit *createMonth(UErrorCode &status);
1498 
1504  static MeasureUnit getMonth();
1505 
1513  static MeasureUnit *createMonthPerson(UErrorCode &status);
1514 
1520  static MeasureUnit getMonthPerson();
1521 
1529  static MeasureUnit *createNanosecond(UErrorCode &status);
1530 
1536  static MeasureUnit getNanosecond();
1537 
1545  static MeasureUnit *createSecond(UErrorCode &status);
1546 
1552  static MeasureUnit getSecond();
1553 
1561  static MeasureUnit *createWeek(UErrorCode &status);
1562 
1568  static MeasureUnit getWeek();
1569 
1577  static MeasureUnit *createWeekPerson(UErrorCode &status);
1578 
1584  static MeasureUnit getWeekPerson();
1585 
1593  static MeasureUnit *createYear(UErrorCode &status);
1594 
1600  static MeasureUnit getYear();
1601 
1609  static MeasureUnit *createYearPerson(UErrorCode &status);
1610 
1616  static MeasureUnit getYearPerson();
1617 
1625  static MeasureUnit *createAmpere(UErrorCode &status);
1626 
1632  static MeasureUnit getAmpere();
1633 
1641  static MeasureUnit *createMilliampere(UErrorCode &status);
1642 
1648  static MeasureUnit getMilliampere();
1649 
1657  static MeasureUnit *createOhm(UErrorCode &status);
1658 
1664  static MeasureUnit getOhm();
1665 
1673  static MeasureUnit *createVolt(UErrorCode &status);
1674 
1680  static MeasureUnit getVolt();
1681 
1689  static MeasureUnit *createBritishThermalUnit(UErrorCode &status);
1690 
1696  static MeasureUnit getBritishThermalUnit();
1697 
1705  static MeasureUnit *createCalorie(UErrorCode &status);
1706 
1712  static MeasureUnit getCalorie();
1713 
1721  static MeasureUnit *createElectronvolt(UErrorCode &status);
1722 
1728  static MeasureUnit getElectronvolt();
1729 
1737  static MeasureUnit *createFoodcalorie(UErrorCode &status);
1738 
1744  static MeasureUnit getFoodcalorie();
1745 
1753  static MeasureUnit *createJoule(UErrorCode &status);
1754 
1760  static MeasureUnit getJoule();
1761 
1769  static MeasureUnit *createKilocalorie(UErrorCode &status);
1770 
1776  static MeasureUnit getKilocalorie();
1777 
1785  static MeasureUnit *createKilojoule(UErrorCode &status);
1786 
1792  static MeasureUnit getKilojoule();
1793 
1801  static MeasureUnit *createKilowattHour(UErrorCode &status);
1802 
1808  static MeasureUnit getKilowattHour();
1809 
1817  static MeasureUnit *createThermUs(UErrorCode &status);
1818 
1824  static MeasureUnit getThermUs();
1825 
1826 #ifndef U_HIDE_DRAFT_API
1827 
1834  static MeasureUnit *createKilowattHourPer100Kilometer(UErrorCode &status);
1835 
1841  static MeasureUnit getKilowattHourPer100Kilometer();
1842 #endif /* U_HIDE_DRAFT_API */
1843 
1851  static MeasureUnit *createNewton(UErrorCode &status);
1852 
1858  static MeasureUnit getNewton();
1859 
1867  static MeasureUnit *createPoundForce(UErrorCode &status);
1868 
1874  static MeasureUnit getPoundForce();
1875 
1883  static MeasureUnit *createGigahertz(UErrorCode &status);
1884 
1890  static MeasureUnit getGigahertz();
1891 
1899  static MeasureUnit *createHertz(UErrorCode &status);
1900 
1906  static MeasureUnit getHertz();
1907 
1915  static MeasureUnit *createKilohertz(UErrorCode &status);
1916 
1922  static MeasureUnit getKilohertz();
1923 
1931  static MeasureUnit *createMegahertz(UErrorCode &status);
1932 
1938  static MeasureUnit getMegahertz();
1939 
1947  static MeasureUnit *createDot(UErrorCode &status);
1948 
1954  static MeasureUnit getDot();
1955 
1963  static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
1964 
1970  static MeasureUnit getDotPerCentimeter();
1971 
1979  static MeasureUnit *createDotPerInch(UErrorCode &status);
1980 
1986  static MeasureUnit getDotPerInch();
1987 
1995  static MeasureUnit *createEm(UErrorCode &status);
1996 
2002  static MeasureUnit getEm();
2003 
2011  static MeasureUnit *createMegapixel(UErrorCode &status);
2012 
2018  static MeasureUnit getMegapixel();
2019 
2027  static MeasureUnit *createPixel(UErrorCode &status);
2028 
2034  static MeasureUnit getPixel();
2035 
2043  static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
2044 
2050  static MeasureUnit getPixelPerCentimeter();
2051 
2059  static MeasureUnit *createPixelPerInch(UErrorCode &status);
2060 
2066  static MeasureUnit getPixelPerInch();
2067 
2075  static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
2076 
2082  static MeasureUnit getAstronomicalUnit();
2083 
2091  static MeasureUnit *createCentimeter(UErrorCode &status);
2092 
2098  static MeasureUnit getCentimeter();
2099 
2107  static MeasureUnit *createDecimeter(UErrorCode &status);
2108 
2114  static MeasureUnit getDecimeter();
2115 
2123  static MeasureUnit *createEarthRadius(UErrorCode &status);
2124 
2130  static MeasureUnit getEarthRadius();
2131 
2139  static MeasureUnit *createFathom(UErrorCode &status);
2140 
2146  static MeasureUnit getFathom();
2147 
2155  static MeasureUnit *createFoot(UErrorCode &status);
2156 
2162  static MeasureUnit getFoot();
2163 
2171  static MeasureUnit *createFurlong(UErrorCode &status);
2172 
2178  static MeasureUnit getFurlong();
2179 
2187  static MeasureUnit *createInch(UErrorCode &status);
2188 
2194  static MeasureUnit getInch();
2195 
2203  static MeasureUnit *createKilometer(UErrorCode &status);
2204 
2210  static MeasureUnit getKilometer();
2211 
2219  static MeasureUnit *createLightYear(UErrorCode &status);
2220 
2226  static MeasureUnit getLightYear();
2227 
2235  static MeasureUnit *createMeter(UErrorCode &status);
2236 
2242  static MeasureUnit getMeter();
2243 
2251  static MeasureUnit *createMicrometer(UErrorCode &status);
2252 
2258  static MeasureUnit getMicrometer();
2259 
2267  static MeasureUnit *createMile(UErrorCode &status);
2268 
2274  static MeasureUnit getMile();
2275 
2283  static MeasureUnit *createMileScandinavian(UErrorCode &status);
2284 
2290  static MeasureUnit getMileScandinavian();
2291 
2299  static MeasureUnit *createMillimeter(UErrorCode &status);
2300 
2306  static MeasureUnit getMillimeter();
2307 
2315  static MeasureUnit *createNanometer(UErrorCode &status);
2316 
2322  static MeasureUnit getNanometer();
2323 
2331  static MeasureUnit *createNauticalMile(UErrorCode &status);
2332 
2338  static MeasureUnit getNauticalMile();
2339 
2347  static MeasureUnit *createParsec(UErrorCode &status);
2348 
2354  static MeasureUnit getParsec();
2355 
2363  static MeasureUnit *createPicometer(UErrorCode &status);
2364 
2370  static MeasureUnit getPicometer();
2371 
2379  static MeasureUnit *createPoint(UErrorCode &status);
2380 
2386  static MeasureUnit getPoint();
2387 
2395  static MeasureUnit *createSolarRadius(UErrorCode &status);
2396 
2402  static MeasureUnit getSolarRadius();
2403 
2411  static MeasureUnit *createYard(UErrorCode &status);
2412 
2418  static MeasureUnit getYard();
2419 
2427  static MeasureUnit *createCandela(UErrorCode &status);
2428 
2434  static MeasureUnit getCandela();
2435 
2443  static MeasureUnit *createLumen(UErrorCode &status);
2444 
2450  static MeasureUnit getLumen();
2451 
2459  static MeasureUnit *createLux(UErrorCode &status);
2460 
2466  static MeasureUnit getLux();
2467 
2475  static MeasureUnit *createSolarLuminosity(UErrorCode &status);
2476 
2482  static MeasureUnit getSolarLuminosity();
2483 
2491  static MeasureUnit *createCarat(UErrorCode &status);
2492 
2498  static MeasureUnit getCarat();
2499 
2507  static MeasureUnit *createDalton(UErrorCode &status);
2508 
2514  static MeasureUnit getDalton();
2515 
2523  static MeasureUnit *createEarthMass(UErrorCode &status);
2524 
2530  static MeasureUnit getEarthMass();
2531 
2539  static MeasureUnit *createGrain(UErrorCode &status);
2540 
2546  static MeasureUnit getGrain();
2547 
2555  static MeasureUnit *createGram(UErrorCode &status);
2556 
2562  static MeasureUnit getGram();
2563 
2571  static MeasureUnit *createKilogram(UErrorCode &status);
2572 
2578  static MeasureUnit getKilogram();
2579 
2587  static MeasureUnit *createMetricTon(UErrorCode &status);
2588 
2594  static MeasureUnit getMetricTon();
2595 
2603  static MeasureUnit *createMicrogram(UErrorCode &status);
2604 
2610  static MeasureUnit getMicrogram();
2611 
2619  static MeasureUnit *createMilligram(UErrorCode &status);
2620 
2626  static MeasureUnit getMilligram();
2627 
2635  static MeasureUnit *createOunce(UErrorCode &status);
2636 
2642  static MeasureUnit getOunce();
2643 
2651  static MeasureUnit *createOunceTroy(UErrorCode &status);
2652 
2658  static MeasureUnit getOunceTroy();
2659 
2667  static MeasureUnit *createPound(UErrorCode &status);
2668 
2674  static MeasureUnit getPound();
2675 
2683  static MeasureUnit *createSolarMass(UErrorCode &status);
2684 
2690  static MeasureUnit getSolarMass();
2691 
2699  static MeasureUnit *createStone(UErrorCode &status);
2700 
2706  static MeasureUnit getStone();
2707 
2715  static MeasureUnit *createTon(UErrorCode &status);
2716 
2722  static MeasureUnit getTon();
2723 
2731  static MeasureUnit *createGigawatt(UErrorCode &status);
2732 
2738  static MeasureUnit getGigawatt();
2739 
2747  static MeasureUnit *createHorsepower(UErrorCode &status);
2748 
2754  static MeasureUnit getHorsepower();
2755 
2763  static MeasureUnit *createKilowatt(UErrorCode &status);
2764 
2770  static MeasureUnit getKilowatt();
2771 
2779  static MeasureUnit *createMegawatt(UErrorCode &status);
2780 
2786  static MeasureUnit getMegawatt();
2787 
2795  static MeasureUnit *createMilliwatt(UErrorCode &status);
2796 
2802  static MeasureUnit getMilliwatt();
2803 
2811  static MeasureUnit *createWatt(UErrorCode &status);
2812 
2818  static MeasureUnit getWatt();
2819 
2827  static MeasureUnit *createAtmosphere(UErrorCode &status);
2828 
2834  static MeasureUnit getAtmosphere();
2835 
2843  static MeasureUnit *createBar(UErrorCode &status);
2844 
2850  static MeasureUnit getBar();
2851 
2859  static MeasureUnit *createHectopascal(UErrorCode &status);
2860 
2866  static MeasureUnit getHectopascal();
2867 
2875  static MeasureUnit *createInchHg(UErrorCode &status);
2876 
2882  static MeasureUnit getInchHg();
2883 
2891  static MeasureUnit *createKilopascal(UErrorCode &status);
2892 
2898  static MeasureUnit getKilopascal();
2899 
2907  static MeasureUnit *createMegapascal(UErrorCode &status);
2908 
2914  static MeasureUnit getMegapascal();
2915 
2923  static MeasureUnit *createMillibar(UErrorCode &status);
2924 
2930  static MeasureUnit getMillibar();
2931 
2939  static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
2940 
2946  static MeasureUnit getMillimeterOfMercury();
2947 
2955  static MeasureUnit *createPascal(UErrorCode &status);
2956 
2962  static MeasureUnit getPascal();
2963 
2971  static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
2972 
2978  static MeasureUnit getPoundPerSquareInch();
2979 
2987  static MeasureUnit *createKilometerPerHour(UErrorCode &status);
2988 
2994  static MeasureUnit getKilometerPerHour();
2995 
3003  static MeasureUnit *createKnot(UErrorCode &status);
3004 
3010  static MeasureUnit getKnot();
3011 
3019  static MeasureUnit *createMeterPerSecond(UErrorCode &status);
3020 
3026  static MeasureUnit getMeterPerSecond();
3027 
3035  static MeasureUnit *createMilePerHour(UErrorCode &status);
3036 
3042  static MeasureUnit getMilePerHour();
3043 
3051  static MeasureUnit *createCelsius(UErrorCode &status);
3052 
3058  static MeasureUnit getCelsius();
3059 
3067  static MeasureUnit *createFahrenheit(UErrorCode &status);
3068 
3074  static MeasureUnit getFahrenheit();
3075 
3083  static MeasureUnit *createGenericTemperature(UErrorCode &status);
3084 
3090  static MeasureUnit getGenericTemperature();
3091 
3099  static MeasureUnit *createKelvin(UErrorCode &status);
3100 
3106  static MeasureUnit getKelvin();
3107 
3115  static MeasureUnit *createNewtonMeter(UErrorCode &status);
3116 
3122  static MeasureUnit getNewtonMeter();
3123 
3131  static MeasureUnit *createPoundFoot(UErrorCode &status);
3132 
3138  static MeasureUnit getPoundFoot();
3139 
3147  static MeasureUnit *createAcreFoot(UErrorCode &status);
3148 
3154  static MeasureUnit getAcreFoot();
3155 
3163  static MeasureUnit *createBarrel(UErrorCode &status);
3164 
3170  static MeasureUnit getBarrel();
3171 
3179  static MeasureUnit *createBushel(UErrorCode &status);
3180 
3186  static MeasureUnit getBushel();
3187 
3195  static MeasureUnit *createCentiliter(UErrorCode &status);
3196 
3202  static MeasureUnit getCentiliter();
3203 
3211  static MeasureUnit *createCubicCentimeter(UErrorCode &status);
3212 
3218  static MeasureUnit getCubicCentimeter();
3219 
3227  static MeasureUnit *createCubicFoot(UErrorCode &status);
3228 
3234  static MeasureUnit getCubicFoot();
3235 
3243  static MeasureUnit *createCubicInch(UErrorCode &status);
3244 
3250  static MeasureUnit getCubicInch();
3251 
3259  static MeasureUnit *createCubicKilometer(UErrorCode &status);
3260 
3266  static MeasureUnit getCubicKilometer();
3267 
3275  static MeasureUnit *createCubicMeter(UErrorCode &status);
3276 
3282  static MeasureUnit getCubicMeter();
3283 
3291  static MeasureUnit *createCubicMile(UErrorCode &status);
3292 
3298  static MeasureUnit getCubicMile();
3299 
3307  static MeasureUnit *createCubicYard(UErrorCode &status);
3308 
3314  static MeasureUnit getCubicYard();
3315 
3323  static MeasureUnit *createCup(UErrorCode &status);
3324 
3330  static MeasureUnit getCup();
3331 
3339  static MeasureUnit *createCupMetric(UErrorCode &status);
3340 
3346  static MeasureUnit getCupMetric();
3347 
3355  static MeasureUnit *createDeciliter(UErrorCode &status);
3356 
3362  static MeasureUnit getDeciliter();
3363 
3371  static MeasureUnit *createDessertSpoon(UErrorCode &status);
3372 
3378  static MeasureUnit getDessertSpoon();
3379 
3387  static MeasureUnit *createDessertSpoonImperial(UErrorCode &status);
3388 
3394  static MeasureUnit getDessertSpoonImperial();
3395 
3403  static MeasureUnit *createDram(UErrorCode &status);
3404 
3410  static MeasureUnit getDram();
3411 
3419  static MeasureUnit *createDrop(UErrorCode &status);
3420 
3426  static MeasureUnit getDrop();
3427 
3435  static MeasureUnit *createFluidOunce(UErrorCode &status);
3436 
3442  static MeasureUnit getFluidOunce();
3443 
3451  static MeasureUnit *createFluidOunceImperial(UErrorCode &status);
3452 
3458  static MeasureUnit getFluidOunceImperial();
3459 
3467  static MeasureUnit *createGallon(UErrorCode &status);
3468 
3474  static MeasureUnit getGallon();
3475 
3483  static MeasureUnit *createGallonImperial(UErrorCode &status);
3484 
3490  static MeasureUnit getGallonImperial();
3491 
3499  static MeasureUnit *createHectoliter(UErrorCode &status);
3500 
3506  static MeasureUnit getHectoliter();
3507 
3515  static MeasureUnit *createJigger(UErrorCode &status);
3516 
3522  static MeasureUnit getJigger();
3523 
3531  static MeasureUnit *createLiter(UErrorCode &status);
3532 
3538  static MeasureUnit getLiter();
3539 
3547  static MeasureUnit *createMegaliter(UErrorCode &status);
3548 
3554  static MeasureUnit getMegaliter();
3555 
3563  static MeasureUnit *createMilliliter(UErrorCode &status);
3564 
3570  static MeasureUnit getMilliliter();
3571 
3579  static MeasureUnit *createPinch(UErrorCode &status);
3580 
3586  static MeasureUnit getPinch();
3587 
3595  static MeasureUnit *createPint(UErrorCode &status);
3596 
3602  static MeasureUnit getPint();
3603 
3611  static MeasureUnit *createPintMetric(UErrorCode &status);
3612 
3618  static MeasureUnit getPintMetric();
3619 
3627  static MeasureUnit *createQuart(UErrorCode &status);
3628 
3634  static MeasureUnit getQuart();
3635 
3643  static MeasureUnit *createQuartImperial(UErrorCode &status);
3644 
3650  static MeasureUnit getQuartImperial();
3651 
3659  static MeasureUnit *createTablespoon(UErrorCode &status);
3660 
3666  static MeasureUnit getTablespoon();
3667 
3675  static MeasureUnit *createTeaspoon(UErrorCode &status);
3676 
3682  static MeasureUnit getTeaspoon();
3683 
3684 // End generated createXXX methods
3685 
3686  protected:
3687 
3688 #ifndef U_HIDE_INTERNAL_API
3689 
3693  void initTime(const char *timeId);
3694 
3699  void initCurrency(StringPiece isoCurrency);
3700 
3701 #endif /* U_HIDE_INTERNAL_API */
3702 
3703 private:
3704 
3705  // Used by new draft APIs in ICU 67. If non-null, fImpl is owned by the
3706  // MeasureUnit.
3707  MeasureUnitImpl* fImpl;
3708 
3709  // An index into a static string list in measunit.cpp. If set to -1, fImpl
3710  // is in use instead of fTypeId and fSubTypeId.
3711  int16_t fSubTypeId;
3712  // An index into a static string list in measunit.cpp. If set to -1, fImpl
3713  // is in use instead of fTypeId and fSubTypeId.
3714  int8_t fTypeId;
3715 
3716  MeasureUnit(int32_t typeId, int32_t subTypeId);
3717  MeasureUnit(MeasureUnitImpl&& impl);
3718  void setTo(int32_t typeId, int32_t subTypeId);
3719  static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
3720 
3728  static bool findBySubType(StringPiece subType, MeasureUnit* output);
3729 
3731  LocalArray<MeasureUnit> splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const;
3732 
3733  friend class MeasureUnitImpl;
3734 
3735  // For access to findBySubType
3736  friend class number::impl::LongNameHandler;
3737 };
3738 
3739 // inline impl of @stable ICU 68 method
3740 inline std::pair<LocalArray<MeasureUnit>, int32_t>
3741 MeasureUnit::splitToSingleUnits(UErrorCode& status) const {
3742  int32_t length;
3743  auto array = splitToSingleUnitsImpl(length, status);
3744  return std::make_pair(std::move(array), length);
3745 }
3746 
3747 U_NAMESPACE_END
3748 
3749 #endif // !UNCONFIG_NO_FORMATTING
3750 
3751 #endif /* U_SHOW_CPLUSPLUS_API */
3752 
3753 #endif // __MEASUREUNIT_H__
SI prefix: femto, 10^-15.
Definition: measunit.h:229
SI prefix: peta, 10^15.
Definition: measunit.h:138
Binary prefix: yobi, 1024^8.
Definition: measunit.h:333
The absence of an SI or binary prefix.
Definition: measunit.h:101
SI prefix: atto, 10^-18.
Definition: measunit.h:236
A unit such as length, mass, volume, currency, etc.
Definition: measunit.h:371
#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:166
Binary prefix: pebi, 1024^5.
Definition: measunit.h:312
Binary prefix: exbi, 1024^6.
Definition: measunit.h:319
SI prefix: zepto, 10^-21.
Definition: measunit.h:243
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:69
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:201
SI prefix: yocto, 10^-24.
Definition: measunit.h:250
Binary prefix: gibi, 1024^3.
Definition: measunit.h:298
Base class for &#39;pure&#39; C++ implementations of uenum api.
Definition: strenum.h:61
SI prefix: nano, 10^-9.
Definition: measunit.h:215
SI prefix: deka, 10^1.
Definition: measunit.h:180
Binary prefix: mebi, 1024^2.
Definition: measunit.h:291
SI prefix: centi, 10^-2.
Definition: measunit.h:194
SI prefix: deci, 10^-1.
Definition: measunit.h:187
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:301
SI prefix: tera, 10^12.
Definition: measunit.h:145
SI prefix: mega, 10^6.
Definition: measunit.h:159
SI prefix: giga, 10^9.
Definition: measunit.h:152
SI prefix: pico, 10^-12.
Definition: measunit.h:222
SI prefix: zetta, 10^21.
Definition: measunit.h:124
SI prefix: micro, 10^-6.
Definition: measunit.h:208
enum icu::UMeasurePrefix UMeasurePrefix
Enumeration for SI and binary prefixes, e.g.
A mixed unit, like hour+minute.
Definition: measunit.h:76
Binary prefix: tebi, 1024^4.
Definition: measunit.h:305
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
SI prefix: exa, 10^18.
Definition: measunit.h:131
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:445
Binary prefix: zebi, 1024^7.
Definition: measunit.h:326
UMeasurePrefix
Enumeration for SI and binary prefixes, e.g.
Definition: measunit.h:91
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:415
Binary prefix: kibi, 1024^1.
Definition: measunit.h:275
SI prefix: yotta, 10^24.
Definition: measunit.h:108
Basic definitions for ICU, for both C and C++ APIs.
A single unit, like kilojoule.
Definition: measunit.h:62
SI prefix: hecto, 10^2.
Definition: measunit.h:173
A string-like object that points to a sized piece of memory.
Definition: stringpiece.h:60
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:223
UMeasureUnitComplexity
Enumeration for unit complexity.
Definition: measunit.h:56