ICU 75.1  75.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 
1578  static MeasureUnit *createQuarter(UErrorCode &status);
1579 
1585  static MeasureUnit getQuarter();
1586 
1594  static MeasureUnit *createSecond(UErrorCode &status);
1595 
1601  static MeasureUnit getSecond();
1602 
1610  static MeasureUnit *createWeek(UErrorCode &status);
1611 
1617  static MeasureUnit getWeek();
1618 
1626  static MeasureUnit *createWeekPerson(UErrorCode &status);
1627 
1633  static MeasureUnit getWeekPerson();
1634 
1642  static MeasureUnit *createYear(UErrorCode &status);
1643 
1649  static MeasureUnit getYear();
1650 
1658  static MeasureUnit *createYearPerson(UErrorCode &status);
1659 
1665  static MeasureUnit getYearPerson();
1666 
1674  static MeasureUnit *createAmpere(UErrorCode &status);
1675 
1681  static MeasureUnit getAmpere();
1682 
1690  static MeasureUnit *createMilliampere(UErrorCode &status);
1691 
1697  static MeasureUnit getMilliampere();
1698 
1706  static MeasureUnit *createOhm(UErrorCode &status);
1707 
1713  static MeasureUnit getOhm();
1714 
1722  static MeasureUnit *createVolt(UErrorCode &status);
1723 
1729  static MeasureUnit getVolt();
1730 
1738  static MeasureUnit *createBritishThermalUnit(UErrorCode &status);
1739 
1745  static MeasureUnit getBritishThermalUnit();
1746 
1754  static MeasureUnit *createCalorie(UErrorCode &status);
1755 
1761  static MeasureUnit getCalorie();
1762 
1770  static MeasureUnit *createElectronvolt(UErrorCode &status);
1771 
1777  static MeasureUnit getElectronvolt();
1778 
1786  static MeasureUnit *createFoodcalorie(UErrorCode &status);
1787 
1793  static MeasureUnit getFoodcalorie();
1794 
1802  static MeasureUnit *createJoule(UErrorCode &status);
1803 
1809  static MeasureUnit getJoule();
1810 
1818  static MeasureUnit *createKilocalorie(UErrorCode &status);
1819 
1825  static MeasureUnit getKilocalorie();
1826 
1834  static MeasureUnit *createKilojoule(UErrorCode &status);
1835 
1841  static MeasureUnit getKilojoule();
1842 
1850  static MeasureUnit *createKilowattHour(UErrorCode &status);
1851 
1857  static MeasureUnit getKilowattHour();
1858 
1866  static MeasureUnit *createThermUs(UErrorCode &status);
1867 
1873  static MeasureUnit getThermUs();
1874 
1882  static MeasureUnit *createKilowattHourPer100Kilometer(UErrorCode &status);
1883 
1889  static MeasureUnit getKilowattHourPer100Kilometer();
1890 
1898  static MeasureUnit *createNewton(UErrorCode &status);
1899 
1905  static MeasureUnit getNewton();
1906 
1914  static MeasureUnit *createPoundForce(UErrorCode &status);
1915 
1921  static MeasureUnit getPoundForce();
1922 
1930  static MeasureUnit *createGigahertz(UErrorCode &status);
1931 
1937  static MeasureUnit getGigahertz();
1938 
1946  static MeasureUnit *createHertz(UErrorCode &status);
1947 
1953  static MeasureUnit getHertz();
1954 
1962  static MeasureUnit *createKilohertz(UErrorCode &status);
1963 
1969  static MeasureUnit getKilohertz();
1970 
1978  static MeasureUnit *createMegahertz(UErrorCode &status);
1979 
1985  static MeasureUnit getMegahertz();
1986 
1994  static MeasureUnit *createDot(UErrorCode &status);
1995 
2001  static MeasureUnit getDot();
2002 
2010  static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
2011 
2017  static MeasureUnit getDotPerCentimeter();
2018 
2026  static MeasureUnit *createDotPerInch(UErrorCode &status);
2027 
2033  static MeasureUnit getDotPerInch();
2034 
2042  static MeasureUnit *createEm(UErrorCode &status);
2043 
2049  static MeasureUnit getEm();
2050 
2058  static MeasureUnit *createMegapixel(UErrorCode &status);
2059 
2065  static MeasureUnit getMegapixel();
2066 
2074  static MeasureUnit *createPixel(UErrorCode &status);
2075 
2081  static MeasureUnit getPixel();
2082 
2090  static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
2091 
2097  static MeasureUnit getPixelPerCentimeter();
2098 
2106  static MeasureUnit *createPixelPerInch(UErrorCode &status);
2107 
2113  static MeasureUnit getPixelPerInch();
2114 
2122  static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
2123 
2129  static MeasureUnit getAstronomicalUnit();
2130 
2138  static MeasureUnit *createCentimeter(UErrorCode &status);
2139 
2145  static MeasureUnit getCentimeter();
2146 
2154  static MeasureUnit *createDecimeter(UErrorCode &status);
2155 
2161  static MeasureUnit getDecimeter();
2162 
2170  static MeasureUnit *createEarthRadius(UErrorCode &status);
2171 
2177  static MeasureUnit getEarthRadius();
2178 
2186  static MeasureUnit *createFathom(UErrorCode &status);
2187 
2193  static MeasureUnit getFathom();
2194 
2202  static MeasureUnit *createFoot(UErrorCode &status);
2203 
2209  static MeasureUnit getFoot();
2210 
2218  static MeasureUnit *createFurlong(UErrorCode &status);
2219 
2225  static MeasureUnit getFurlong();
2226 
2234  static MeasureUnit *createInch(UErrorCode &status);
2235 
2241  static MeasureUnit getInch();
2242 
2250  static MeasureUnit *createKilometer(UErrorCode &status);
2251 
2257  static MeasureUnit getKilometer();
2258 
2266  static MeasureUnit *createLightYear(UErrorCode &status);
2267 
2273  static MeasureUnit getLightYear();
2274 
2282  static MeasureUnit *createMeter(UErrorCode &status);
2283 
2289  static MeasureUnit getMeter();
2290 
2298  static MeasureUnit *createMicrometer(UErrorCode &status);
2299 
2305  static MeasureUnit getMicrometer();
2306 
2314  static MeasureUnit *createMile(UErrorCode &status);
2315 
2321  static MeasureUnit getMile();
2322 
2330  static MeasureUnit *createMileScandinavian(UErrorCode &status);
2331 
2337  static MeasureUnit getMileScandinavian();
2338 
2346  static MeasureUnit *createMillimeter(UErrorCode &status);
2347 
2353  static MeasureUnit getMillimeter();
2354 
2362  static MeasureUnit *createNanometer(UErrorCode &status);
2363 
2369  static MeasureUnit getNanometer();
2370 
2378  static MeasureUnit *createNauticalMile(UErrorCode &status);
2379 
2385  static MeasureUnit getNauticalMile();
2386 
2394  static MeasureUnit *createParsec(UErrorCode &status);
2395 
2401  static MeasureUnit getParsec();
2402 
2410  static MeasureUnit *createPicometer(UErrorCode &status);
2411 
2417  static MeasureUnit getPicometer();
2418 
2426  static MeasureUnit *createPoint(UErrorCode &status);
2427 
2433  static MeasureUnit getPoint();
2434 
2442  static MeasureUnit *createSolarRadius(UErrorCode &status);
2443 
2449  static MeasureUnit getSolarRadius();
2450 
2458  static MeasureUnit *createYard(UErrorCode &status);
2459 
2465  static MeasureUnit getYard();
2466 
2474  static MeasureUnit *createCandela(UErrorCode &status);
2475 
2481  static MeasureUnit getCandela();
2482 
2490  static MeasureUnit *createLumen(UErrorCode &status);
2491 
2497  static MeasureUnit getLumen();
2498 
2506  static MeasureUnit *createLux(UErrorCode &status);
2507 
2513  static MeasureUnit getLux();
2514 
2522  static MeasureUnit *createSolarLuminosity(UErrorCode &status);
2523 
2529  static MeasureUnit getSolarLuminosity();
2530 
2538  static MeasureUnit *createCarat(UErrorCode &status);
2539 
2545  static MeasureUnit getCarat();
2546 
2554  static MeasureUnit *createDalton(UErrorCode &status);
2555 
2561  static MeasureUnit getDalton();
2562 
2570  static MeasureUnit *createEarthMass(UErrorCode &status);
2571 
2577  static MeasureUnit getEarthMass();
2578 
2586  static MeasureUnit *createGrain(UErrorCode &status);
2587 
2593  static MeasureUnit getGrain();
2594 
2602  static MeasureUnit *createGram(UErrorCode &status);
2603 
2609  static MeasureUnit getGram();
2610 
2618  static MeasureUnit *createKilogram(UErrorCode &status);
2619 
2625  static MeasureUnit getKilogram();
2626 
2638  static MeasureUnit *createMetricTon(UErrorCode &status);
2639 
2649  static MeasureUnit getMetricTon();
2650 
2658  static MeasureUnit *createMicrogram(UErrorCode &status);
2659 
2665  static MeasureUnit getMicrogram();
2666 
2674  static MeasureUnit *createMilligram(UErrorCode &status);
2675 
2681  static MeasureUnit getMilligram();
2682 
2690  static MeasureUnit *createOunce(UErrorCode &status);
2691 
2697  static MeasureUnit getOunce();
2698 
2706  static MeasureUnit *createOunceTroy(UErrorCode &status);
2707 
2713  static MeasureUnit getOunceTroy();
2714 
2722  static MeasureUnit *createPound(UErrorCode &status);
2723 
2729  static MeasureUnit getPound();
2730 
2738  static MeasureUnit *createSolarMass(UErrorCode &status);
2739 
2745  static MeasureUnit getSolarMass();
2746 
2754  static MeasureUnit *createStone(UErrorCode &status);
2755 
2761  static MeasureUnit getStone();
2762 
2770  static MeasureUnit *createTon(UErrorCode &status);
2771 
2777  static MeasureUnit getTon();
2778 
2786  static MeasureUnit *createTonne(UErrorCode &status);
2787 
2793  static MeasureUnit getTonne();
2794 
2802  static MeasureUnit *createGigawatt(UErrorCode &status);
2803 
2809  static MeasureUnit getGigawatt();
2810 
2818  static MeasureUnit *createHorsepower(UErrorCode &status);
2819 
2825  static MeasureUnit getHorsepower();
2826 
2834  static MeasureUnit *createKilowatt(UErrorCode &status);
2835 
2841  static MeasureUnit getKilowatt();
2842 
2850  static MeasureUnit *createMegawatt(UErrorCode &status);
2851 
2857  static MeasureUnit getMegawatt();
2858 
2866  static MeasureUnit *createMilliwatt(UErrorCode &status);
2867 
2873  static MeasureUnit getMilliwatt();
2874 
2882  static MeasureUnit *createWatt(UErrorCode &status);
2883 
2889  static MeasureUnit getWatt();
2890 
2898  static MeasureUnit *createAtmosphere(UErrorCode &status);
2899 
2905  static MeasureUnit getAtmosphere();
2906 
2914  static MeasureUnit *createBar(UErrorCode &status);
2915 
2921  static MeasureUnit getBar();
2922 
2923 #ifndef U_HIDE_DRAFT_API
2924 
2931  static MeasureUnit *createGasolineEnergyDensity(UErrorCode &status);
2932 
2938  static MeasureUnit getGasolineEnergyDensity();
2939 #endif /* U_HIDE_DRAFT_API */
2940 
2948  static MeasureUnit *createHectopascal(UErrorCode &status);
2949 
2955  static MeasureUnit getHectopascal();
2956 
2964  static MeasureUnit *createInchHg(UErrorCode &status);
2965 
2971  static MeasureUnit getInchHg();
2972 
2980  static MeasureUnit *createKilopascal(UErrorCode &status);
2981 
2987  static MeasureUnit getKilopascal();
2988 
2996  static MeasureUnit *createMegapascal(UErrorCode &status);
2997 
3003  static MeasureUnit getMegapascal();
3004 
3012  static MeasureUnit *createMillibar(UErrorCode &status);
3013 
3019  static MeasureUnit getMillibar();
3020 
3028  static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
3029 
3035  static MeasureUnit getMillimeterOfMercury();
3036 
3044  static MeasureUnit *createPascal(UErrorCode &status);
3045 
3051  static MeasureUnit getPascal();
3052 
3060  static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
3061 
3067  static MeasureUnit getPoundPerSquareInch();
3068 
3076  static MeasureUnit *createBeaufort(UErrorCode &status);
3077 
3083  static MeasureUnit getBeaufort();
3084 
3092  static MeasureUnit *createKilometerPerHour(UErrorCode &status);
3093 
3099  static MeasureUnit getKilometerPerHour();
3100 
3108  static MeasureUnit *createKnot(UErrorCode &status);
3109 
3115  static MeasureUnit getKnot();
3116 
3124  static MeasureUnit *createMeterPerSecond(UErrorCode &status);
3125 
3131  static MeasureUnit getMeterPerSecond();
3132 
3140  static MeasureUnit *createMilePerHour(UErrorCode &status);
3141 
3147  static MeasureUnit getMilePerHour();
3148 
3156  static MeasureUnit *createCelsius(UErrorCode &status);
3157 
3163  static MeasureUnit getCelsius();
3164 
3172  static MeasureUnit *createFahrenheit(UErrorCode &status);
3173 
3179  static MeasureUnit getFahrenheit();
3180 
3188  static MeasureUnit *createGenericTemperature(UErrorCode &status);
3189 
3195  static MeasureUnit getGenericTemperature();
3196 
3204  static MeasureUnit *createKelvin(UErrorCode &status);
3205 
3211  static MeasureUnit getKelvin();
3212 
3220  static MeasureUnit *createNewtonMeter(UErrorCode &status);
3221 
3227  static MeasureUnit getNewtonMeter();
3228 
3236  static MeasureUnit *createPoundFoot(UErrorCode &status);
3237 
3243  static MeasureUnit getPoundFoot();
3244 
3252  static MeasureUnit *createAcreFoot(UErrorCode &status);
3253 
3259  static MeasureUnit getAcreFoot();
3260 
3268  static MeasureUnit *createBarrel(UErrorCode &status);
3269 
3275  static MeasureUnit getBarrel();
3276 
3284  static MeasureUnit *createBushel(UErrorCode &status);
3285 
3291  static MeasureUnit getBushel();
3292 
3300  static MeasureUnit *createCentiliter(UErrorCode &status);
3301 
3307  static MeasureUnit getCentiliter();
3308 
3316  static MeasureUnit *createCubicCentimeter(UErrorCode &status);
3317 
3323  static MeasureUnit getCubicCentimeter();
3324 
3332  static MeasureUnit *createCubicFoot(UErrorCode &status);
3333 
3339  static MeasureUnit getCubicFoot();
3340 
3348  static MeasureUnit *createCubicInch(UErrorCode &status);
3349 
3355  static MeasureUnit getCubicInch();
3356 
3364  static MeasureUnit *createCubicKilometer(UErrorCode &status);
3365 
3371  static MeasureUnit getCubicKilometer();
3372 
3380  static MeasureUnit *createCubicMeter(UErrorCode &status);
3381 
3387  static MeasureUnit getCubicMeter();
3388 
3396  static MeasureUnit *createCubicMile(UErrorCode &status);
3397 
3403  static MeasureUnit getCubicMile();
3404 
3412  static MeasureUnit *createCubicYard(UErrorCode &status);
3413 
3419  static MeasureUnit getCubicYard();
3420 
3428  static MeasureUnit *createCup(UErrorCode &status);
3429 
3435  static MeasureUnit getCup();
3436 
3444  static MeasureUnit *createCupMetric(UErrorCode &status);
3445 
3451  static MeasureUnit getCupMetric();
3452 
3460  static MeasureUnit *createDeciliter(UErrorCode &status);
3461 
3467  static MeasureUnit getDeciliter();
3468 
3476  static MeasureUnit *createDessertSpoon(UErrorCode &status);
3477 
3483  static MeasureUnit getDessertSpoon();
3484 
3492  static MeasureUnit *createDessertSpoonImperial(UErrorCode &status);
3493 
3499  static MeasureUnit getDessertSpoonImperial();
3500 
3508  static MeasureUnit *createDram(UErrorCode &status);
3509 
3515  static MeasureUnit getDram();
3516 
3524  static MeasureUnit *createDrop(UErrorCode &status);
3525 
3531  static MeasureUnit getDrop();
3532 
3540  static MeasureUnit *createFluidOunce(UErrorCode &status);
3541 
3547  static MeasureUnit getFluidOunce();
3548 
3556  static MeasureUnit *createFluidOunceImperial(UErrorCode &status);
3557 
3563  static MeasureUnit getFluidOunceImperial();
3564 
3572  static MeasureUnit *createGallon(UErrorCode &status);
3573 
3579  static MeasureUnit getGallon();
3580 
3588  static MeasureUnit *createGallonImperial(UErrorCode &status);
3589 
3595  static MeasureUnit getGallonImperial();
3596 
3604  static MeasureUnit *createHectoliter(UErrorCode &status);
3605 
3611  static MeasureUnit getHectoliter();
3612 
3620  static MeasureUnit *createJigger(UErrorCode &status);
3621 
3627  static MeasureUnit getJigger();
3628 
3636  static MeasureUnit *createLiter(UErrorCode &status);
3637 
3643  static MeasureUnit getLiter();
3644 
3652  static MeasureUnit *createMegaliter(UErrorCode &status);
3653 
3659  static MeasureUnit getMegaliter();
3660 
3668  static MeasureUnit *createMilliliter(UErrorCode &status);
3669 
3675  static MeasureUnit getMilliliter();
3676 
3684  static MeasureUnit *createPinch(UErrorCode &status);
3685 
3691  static MeasureUnit getPinch();
3692 
3700  static MeasureUnit *createPint(UErrorCode &status);
3701 
3707  static MeasureUnit getPint();
3708 
3716  static MeasureUnit *createPintMetric(UErrorCode &status);
3717 
3723  static MeasureUnit getPintMetric();
3724 
3732  static MeasureUnit *createQuart(UErrorCode &status);
3733 
3739  static MeasureUnit getQuart();
3740 
3748  static MeasureUnit *createQuartImperial(UErrorCode &status);
3749 
3755  static MeasureUnit getQuartImperial();
3756 
3764  static MeasureUnit *createTablespoon(UErrorCode &status);
3765 
3771  static MeasureUnit getTablespoon();
3772 
3780  static MeasureUnit *createTeaspoon(UErrorCode &status);
3781 
3787  static MeasureUnit getTeaspoon();
3788 
3789 // End generated createXXX methods
3790 
3791  protected:
3792 
3793 #ifndef U_HIDE_INTERNAL_API
3794 
3798  void initTime(const char *timeId);
3799 
3804  void initCurrency(StringPiece isoCurrency);
3805 
3806 #endif /* U_HIDE_INTERNAL_API */
3807 
3808 private:
3809 
3810  // Used by new draft APIs in ICU 67. If non-null, fImpl is owned by the
3811  // MeasureUnit.
3812  MeasureUnitImpl* fImpl;
3813 
3814  // An index into a static string list in measunit.cpp. If set to -1, fImpl
3815  // is in use instead of fTypeId and fSubTypeId.
3816  int16_t fSubTypeId;
3817  // An index into a static string list in measunit.cpp. If set to -1, fImpl
3818  // is in use instead of fTypeId and fSubTypeId.
3819  int8_t fTypeId;
3820 
3821  MeasureUnit(int32_t typeId, int32_t subTypeId);
3822  MeasureUnit(MeasureUnitImpl&& impl);
3823  void setTo(int32_t typeId, int32_t subTypeId);
3824  static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
3825 
3833  static bool findBySubType(StringPiece subType, MeasureUnit* output);
3834 
3836  LocalArray<MeasureUnit> splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const;
3837 
3838  friend class MeasureUnitImpl;
3839 
3840  // For access to findBySubType
3841  friend class number::impl::LongNameHandler;
3842 };
3843 
3844 // inline impl of @stable ICU 68 method
3845 inline std::pair<LocalArray<MeasureUnit>, int32_t>
3846 MeasureUnit::splitToSingleUnits(UErrorCode& status) const {
3847  int32_t length;
3848  auto array = splitToSingleUnitsImpl(length, status);
3849  return std::make_pair(std::move(array), length);
3850 }
3851 
3852 U_NAMESPACE_END
3853 
3854 #endif // !UNCONFIG_NO_FORMATTING
3855 
3856 #endif /* U_SHOW_CPLUSPLUS_API */
3857 
3858 #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
virtual UClassID getDynamicClassID() const
ICU4C &quot;poor man&#39;s RTTI&quot;, returns a UClassID for the actual ICU class.
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:301
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
A mixed unit, like hour+minute.
Definition: measunit.h:75
Binary prefix: tebi, 1024^4.
Definition: measunit.h:345
C++ API: &quot;Smart pointers&quot; for use with and in ICU4C C++ code.
&quot;Smart pointer&quot; class, deletes objects via the C++ array delete[] operator.
Definition: localpointer.h:366
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 ...
Binary prefix: zebi, 1024^7.
Definition: measunit.h:366
UMeasurePrefix
Enumeration for SI and binary prefixes, e.g.
Definition: measunit.h:89
bool operator!=(const UObject &other) const
Inequality operator.
Definition: measunit.h:484
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
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:60
UObject is the common ICU &quot;boilerplate&quot; class.
Definition: uobject.h:223
UMeasureUnitComplexity
Enumeration for unit complexity.
Definition: measunit.h:55