ICU 74.2  74.2
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 {
37 namespace impl {
38 class LongNameHandler;
39 }
40 } // namespace number
41 
64 
71 
78 };
79 
80 
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 
370  public:
371 
378  MeasureUnit();
379 
384  MeasureUnit(const MeasureUnit &other);
385 
390  MeasureUnit(MeasureUnit &&other) noexcept;
391 
405  static MeasureUnit forIdentifier(StringPiece identifier, UErrorCode& status);
406 
411  MeasureUnit &operator=(const MeasureUnit &other);
412 
417  MeasureUnit &operator=(MeasureUnit &&other) noexcept;
418 
424  virtual MeasureUnit* clone() const;
425 
430  virtual ~MeasureUnit();
431 
437  virtual bool operator==(const UObject& other) const;
438 
444  bool operator!=(const UObject& other) const {
445  return !(*this == other);
446  }
447 
455  const char *getType() const;
456 
464  const char *getSubtype() const;
465 
472  const char* getIdentifier() const;
473 
481  UMeasureUnitComplexity getComplexity(UErrorCode& status) const;
482 
497  MeasureUnit withPrefix(UMeasurePrefix prefix, UErrorCode& status) const;
498 
513  UMeasurePrefix getPrefix(UErrorCode& status) const;
514 
529  MeasureUnit withDimensionality(int32_t dimensionality, UErrorCode& status) const;
530 
544  int32_t getDimensionality(UErrorCode& status) const;
545 
558  MeasureUnit reciprocal(UErrorCode& status) const;
559 
577  MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;
578 
594  inline std::pair<LocalArray<MeasureUnit>, int32_t> splitToSingleUnits(UErrorCode& status) const;
595 
607  static int32_t getAvailable(
608  MeasureUnit *destArray,
609  int32_t destCapacity,
610  UErrorCode &errorCode);
611 
624  static int32_t getAvailable(
625  const char *type,
626  MeasureUnit *destArray,
627  int32_t destCapacity,
628  UErrorCode &errorCode);
629 
638  static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
639 
651  static UClassID U_EXPORT2 getStaticClassID(void);
652 
664  virtual UClassID getDynamicClassID(void) const override;
665 
666 #ifndef U_HIDE_INTERNAL_API
667 
672  int32_t getOffset() const;
673 #endif /* U_HIDE_INTERNAL_API */
674 
675 // All code between the "Start generated createXXX methods" comment and
676 // the "End generated createXXX methods" comment is auto generated code
677 // and must not be edited manually. For instructions on how to correctly
678 // update this code, refer to:
679 // docs/processes/release/tasks/updating-measure-unit.md
680 //
681 // Start generated createXXX methods
682 
690  static MeasureUnit *createGForce(UErrorCode &status);
691 
697  static MeasureUnit getGForce();
698 
706  static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
707 
713  static MeasureUnit getMeterPerSecondSquared();
714 
722  static MeasureUnit *createArcMinute(UErrorCode &status);
723 
729  static MeasureUnit getArcMinute();
730 
738  static MeasureUnit *createArcSecond(UErrorCode &status);
739 
745  static MeasureUnit getArcSecond();
746 
754  static MeasureUnit *createDegree(UErrorCode &status);
755 
761  static MeasureUnit getDegree();
762 
770  static MeasureUnit *createRadian(UErrorCode &status);
771 
777  static MeasureUnit getRadian();
778 
786  static MeasureUnit *createRevolutionAngle(UErrorCode &status);
787 
793  static MeasureUnit getRevolutionAngle();
794 
802  static MeasureUnit *createAcre(UErrorCode &status);
803 
809  static MeasureUnit getAcre();
810 
818  static MeasureUnit *createDunam(UErrorCode &status);
819 
825  static MeasureUnit getDunam();
826 
834  static MeasureUnit *createHectare(UErrorCode &status);
835 
841  static MeasureUnit getHectare();
842 
850  static MeasureUnit *createSquareCentimeter(UErrorCode &status);
851 
857  static MeasureUnit getSquareCentimeter();
858 
866  static MeasureUnit *createSquareFoot(UErrorCode &status);
867 
873  static MeasureUnit getSquareFoot();
874 
882  static MeasureUnit *createSquareInch(UErrorCode &status);
883 
889  static MeasureUnit getSquareInch();
890 
898  static MeasureUnit *createSquareKilometer(UErrorCode &status);
899 
905  static MeasureUnit getSquareKilometer();
906 
914  static MeasureUnit *createSquareMeter(UErrorCode &status);
915 
921  static MeasureUnit getSquareMeter();
922 
930  static MeasureUnit *createSquareMile(UErrorCode &status);
931 
937  static MeasureUnit getSquareMile();
938 
946  static MeasureUnit *createSquareYard(UErrorCode &status);
947 
953  static MeasureUnit getSquareYard();
954 
962  static MeasureUnit *createItem(UErrorCode &status);
963 
969  static MeasureUnit getItem();
970 
978  static MeasureUnit *createKarat(UErrorCode &status);
979 
985  static MeasureUnit getKarat();
986 
994  static MeasureUnit *createMilligramOfglucosePerDeciliter(UErrorCode &status);
995 
1001  static MeasureUnit getMilligramOfglucosePerDeciliter();
1002 
1010  static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
1011 
1017  static MeasureUnit getMilligramPerDeciliter();
1018 
1026  static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
1027 
1033  static MeasureUnit getMillimolePerLiter();
1034 
1042  static MeasureUnit *createMole(UErrorCode &status);
1043 
1049  static MeasureUnit getMole();
1050 
1058  static MeasureUnit *createPercent(UErrorCode &status);
1059 
1065  static MeasureUnit getPercent();
1066 
1074  static MeasureUnit *createPermille(UErrorCode &status);
1075 
1081  static MeasureUnit getPermille();
1082 
1090  static MeasureUnit *createPartPerMillion(UErrorCode &status);
1091 
1097  static MeasureUnit getPartPerMillion();
1098 
1106  static MeasureUnit *createPermyriad(UErrorCode &status);
1107 
1113  static MeasureUnit getPermyriad();
1114 
1122  static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
1123 
1129  static MeasureUnit getLiterPer100Kilometers();
1130 
1138  static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
1139 
1145  static MeasureUnit getLiterPerKilometer();
1146 
1154  static MeasureUnit *createMilePerGallon(UErrorCode &status);
1155 
1161  static MeasureUnit getMilePerGallon();
1162 
1170  static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
1171 
1177  static MeasureUnit getMilePerGallonImperial();
1178 
1186  static MeasureUnit *createBit(UErrorCode &status);
1187 
1193  static MeasureUnit getBit();
1194 
1202  static MeasureUnit *createByte(UErrorCode &status);
1203 
1209  static MeasureUnit getByte();
1210 
1218  static MeasureUnit *createGigabit(UErrorCode &status);
1219 
1225  static MeasureUnit getGigabit();
1226 
1234  static MeasureUnit *createGigabyte(UErrorCode &status);
1235 
1241  static MeasureUnit getGigabyte();
1242 
1250  static MeasureUnit *createKilobit(UErrorCode &status);
1251 
1257  static MeasureUnit getKilobit();
1258 
1266  static MeasureUnit *createKilobyte(UErrorCode &status);
1267 
1273  static MeasureUnit getKilobyte();
1274 
1282  static MeasureUnit *createMegabit(UErrorCode &status);
1283 
1289  static MeasureUnit getMegabit();
1290 
1298  static MeasureUnit *createMegabyte(UErrorCode &status);
1299 
1305  static MeasureUnit getMegabyte();
1306 
1314  static MeasureUnit *createPetabyte(UErrorCode &status);
1315 
1321  static MeasureUnit getPetabyte();
1322 
1330  static MeasureUnit *createTerabit(UErrorCode &status);
1331 
1337  static MeasureUnit getTerabit();
1338 
1346  static MeasureUnit *createTerabyte(UErrorCode &status);
1347 
1353  static MeasureUnit getTerabyte();
1354 
1362  static MeasureUnit *createCentury(UErrorCode &status);
1363 
1369  static MeasureUnit getCentury();
1370 
1378  static MeasureUnit *createDay(UErrorCode &status);
1379 
1385  static MeasureUnit getDay();
1386 
1394  static MeasureUnit *createDayPerson(UErrorCode &status);
1395 
1401  static MeasureUnit getDayPerson();
1402 
1410  static MeasureUnit *createDecade(UErrorCode &status);
1411 
1417  static MeasureUnit getDecade();
1418 
1426  static MeasureUnit *createHour(UErrorCode &status);
1427 
1433  static MeasureUnit getHour();
1434 
1442  static MeasureUnit *createMicrosecond(UErrorCode &status);
1443 
1449  static MeasureUnit getMicrosecond();
1450 
1458  static MeasureUnit *createMillisecond(UErrorCode &status);
1459 
1465  static MeasureUnit getMillisecond();
1466 
1474  static MeasureUnit *createMinute(UErrorCode &status);
1475 
1481  static MeasureUnit getMinute();
1482 
1490  static MeasureUnit *createMonth(UErrorCode &status);
1491 
1497  static MeasureUnit getMonth();
1498 
1506  static MeasureUnit *createMonthPerson(UErrorCode &status);
1507 
1513  static MeasureUnit getMonthPerson();
1514 
1522  static MeasureUnit *createNanosecond(UErrorCode &status);
1523 
1529  static MeasureUnit getNanosecond();
1530 
1538  static MeasureUnit *createQuarter(UErrorCode &status);
1539 
1545  static MeasureUnit getQuarter();
1546 
1554  static MeasureUnit *createSecond(UErrorCode &status);
1555 
1561  static MeasureUnit getSecond();
1562 
1570  static MeasureUnit *createWeek(UErrorCode &status);
1571 
1577  static MeasureUnit getWeek();
1578 
1586  static MeasureUnit *createWeekPerson(UErrorCode &status);
1587 
1593  static MeasureUnit getWeekPerson();
1594 
1602  static MeasureUnit *createYear(UErrorCode &status);
1603 
1609  static MeasureUnit getYear();
1610 
1618  static MeasureUnit *createYearPerson(UErrorCode &status);
1619 
1625  static MeasureUnit getYearPerson();
1626 
1634  static MeasureUnit *createAmpere(UErrorCode &status);
1635 
1641  static MeasureUnit getAmpere();
1642 
1650  static MeasureUnit *createMilliampere(UErrorCode &status);
1651 
1657  static MeasureUnit getMilliampere();
1658 
1666  static MeasureUnit *createOhm(UErrorCode &status);
1667 
1673  static MeasureUnit getOhm();
1674 
1682  static MeasureUnit *createVolt(UErrorCode &status);
1683 
1689  static MeasureUnit getVolt();
1690 
1698  static MeasureUnit *createBritishThermalUnit(UErrorCode &status);
1699 
1705  static MeasureUnit getBritishThermalUnit();
1706 
1714  static MeasureUnit *createCalorie(UErrorCode &status);
1715 
1721  static MeasureUnit getCalorie();
1722 
1730  static MeasureUnit *createElectronvolt(UErrorCode &status);
1731 
1737  static MeasureUnit getElectronvolt();
1738 
1746  static MeasureUnit *createFoodcalorie(UErrorCode &status);
1747 
1753  static MeasureUnit getFoodcalorie();
1754 
1762  static MeasureUnit *createJoule(UErrorCode &status);
1763 
1769  static MeasureUnit getJoule();
1770 
1778  static MeasureUnit *createKilocalorie(UErrorCode &status);
1779 
1785  static MeasureUnit getKilocalorie();
1786 
1794  static MeasureUnit *createKilojoule(UErrorCode &status);
1795 
1801  static MeasureUnit getKilojoule();
1802 
1810  static MeasureUnit *createKilowattHour(UErrorCode &status);
1811 
1817  static MeasureUnit getKilowattHour();
1818 
1826  static MeasureUnit *createThermUs(UErrorCode &status);
1827 
1833  static MeasureUnit getThermUs();
1834 
1842  static MeasureUnit *createKilowattHourPer100Kilometer(UErrorCode &status);
1843 
1849  static MeasureUnit getKilowattHourPer100Kilometer();
1850 
1858  static MeasureUnit *createNewton(UErrorCode &status);
1859 
1865  static MeasureUnit getNewton();
1866 
1874  static MeasureUnit *createPoundForce(UErrorCode &status);
1875 
1881  static MeasureUnit getPoundForce();
1882 
1890  static MeasureUnit *createGigahertz(UErrorCode &status);
1891 
1897  static MeasureUnit getGigahertz();
1898 
1906  static MeasureUnit *createHertz(UErrorCode &status);
1907 
1913  static MeasureUnit getHertz();
1914 
1922  static MeasureUnit *createKilohertz(UErrorCode &status);
1923 
1929  static MeasureUnit getKilohertz();
1930 
1938  static MeasureUnit *createMegahertz(UErrorCode &status);
1939 
1945  static MeasureUnit getMegahertz();
1946 
1954  static MeasureUnit *createDot(UErrorCode &status);
1955 
1961  static MeasureUnit getDot();
1962 
1970  static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
1971 
1977  static MeasureUnit getDotPerCentimeter();
1978 
1986  static MeasureUnit *createDotPerInch(UErrorCode &status);
1987 
1993  static MeasureUnit getDotPerInch();
1994 
2002  static MeasureUnit *createEm(UErrorCode &status);
2003 
2009  static MeasureUnit getEm();
2010 
2018  static MeasureUnit *createMegapixel(UErrorCode &status);
2019 
2025  static MeasureUnit getMegapixel();
2026 
2034  static MeasureUnit *createPixel(UErrorCode &status);
2035 
2041  static MeasureUnit getPixel();
2042 
2050  static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
2051 
2057  static MeasureUnit getPixelPerCentimeter();
2058 
2066  static MeasureUnit *createPixelPerInch(UErrorCode &status);
2067 
2073  static MeasureUnit getPixelPerInch();
2074 
2082  static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
2083 
2089  static MeasureUnit getAstronomicalUnit();
2090 
2098  static MeasureUnit *createCentimeter(UErrorCode &status);
2099 
2105  static MeasureUnit getCentimeter();
2106 
2114  static MeasureUnit *createDecimeter(UErrorCode &status);
2115 
2121  static MeasureUnit getDecimeter();
2122 
2130  static MeasureUnit *createEarthRadius(UErrorCode &status);
2131 
2137  static MeasureUnit getEarthRadius();
2138 
2146  static MeasureUnit *createFathom(UErrorCode &status);
2147 
2153  static MeasureUnit getFathom();
2154 
2162  static MeasureUnit *createFoot(UErrorCode &status);
2163 
2169  static MeasureUnit getFoot();
2170 
2178  static MeasureUnit *createFurlong(UErrorCode &status);
2179 
2185  static MeasureUnit getFurlong();
2186 
2194  static MeasureUnit *createInch(UErrorCode &status);
2195 
2201  static MeasureUnit getInch();
2202 
2210  static MeasureUnit *createKilometer(UErrorCode &status);
2211 
2217  static MeasureUnit getKilometer();
2218 
2226  static MeasureUnit *createLightYear(UErrorCode &status);
2227 
2233  static MeasureUnit getLightYear();
2234 
2242  static MeasureUnit *createMeter(UErrorCode &status);
2243 
2249  static MeasureUnit getMeter();
2250 
2258  static MeasureUnit *createMicrometer(UErrorCode &status);
2259 
2265  static MeasureUnit getMicrometer();
2266 
2274  static MeasureUnit *createMile(UErrorCode &status);
2275 
2281  static MeasureUnit getMile();
2282 
2290  static MeasureUnit *createMileScandinavian(UErrorCode &status);
2291 
2297  static MeasureUnit getMileScandinavian();
2298 
2306  static MeasureUnit *createMillimeter(UErrorCode &status);
2307 
2313  static MeasureUnit getMillimeter();
2314 
2322  static MeasureUnit *createNanometer(UErrorCode &status);
2323 
2329  static MeasureUnit getNanometer();
2330 
2338  static MeasureUnit *createNauticalMile(UErrorCode &status);
2339 
2345  static MeasureUnit getNauticalMile();
2346 
2354  static MeasureUnit *createParsec(UErrorCode &status);
2355 
2361  static MeasureUnit getParsec();
2362 
2370  static MeasureUnit *createPicometer(UErrorCode &status);
2371 
2377  static MeasureUnit getPicometer();
2378 
2386  static MeasureUnit *createPoint(UErrorCode &status);
2387 
2393  static MeasureUnit getPoint();
2394 
2402  static MeasureUnit *createSolarRadius(UErrorCode &status);
2403 
2409  static MeasureUnit getSolarRadius();
2410 
2418  static MeasureUnit *createYard(UErrorCode &status);
2419 
2425  static MeasureUnit getYard();
2426 
2434  static MeasureUnit *createCandela(UErrorCode &status);
2435 
2441  static MeasureUnit getCandela();
2442 
2450  static MeasureUnit *createLumen(UErrorCode &status);
2451 
2457  static MeasureUnit getLumen();
2458 
2466  static MeasureUnit *createLux(UErrorCode &status);
2467 
2473  static MeasureUnit getLux();
2474 
2482  static MeasureUnit *createSolarLuminosity(UErrorCode &status);
2483 
2489  static MeasureUnit getSolarLuminosity();
2490 
2498  static MeasureUnit *createCarat(UErrorCode &status);
2499 
2505  static MeasureUnit getCarat();
2506 
2514  static MeasureUnit *createDalton(UErrorCode &status);
2515 
2521  static MeasureUnit getDalton();
2522 
2530  static MeasureUnit *createEarthMass(UErrorCode &status);
2531 
2537  static MeasureUnit getEarthMass();
2538 
2546  static MeasureUnit *createGrain(UErrorCode &status);
2547 
2553  static MeasureUnit getGrain();
2554 
2562  static MeasureUnit *createGram(UErrorCode &status);
2563 
2569  static MeasureUnit getGram();
2570 
2578  static MeasureUnit *createKilogram(UErrorCode &status);
2579 
2585  static MeasureUnit getKilogram();
2586 
2598  static MeasureUnit *createMetricTon(UErrorCode &status);
2599 
2609  static MeasureUnit getMetricTon();
2610 
2618  static MeasureUnit *createMicrogram(UErrorCode &status);
2619 
2625  static MeasureUnit getMicrogram();
2626 
2634  static MeasureUnit *createMilligram(UErrorCode &status);
2635 
2641  static MeasureUnit getMilligram();
2642 
2650  static MeasureUnit *createOunce(UErrorCode &status);
2651 
2657  static MeasureUnit getOunce();
2658 
2666  static MeasureUnit *createOunceTroy(UErrorCode &status);
2667 
2673  static MeasureUnit getOunceTroy();
2674 
2682  static MeasureUnit *createPound(UErrorCode &status);
2683 
2689  static MeasureUnit getPound();
2690 
2698  static MeasureUnit *createSolarMass(UErrorCode &status);
2699 
2705  static MeasureUnit getSolarMass();
2706 
2714  static MeasureUnit *createStone(UErrorCode &status);
2715 
2721  static MeasureUnit getStone();
2722 
2730  static MeasureUnit *createTon(UErrorCode &status);
2731 
2737  static MeasureUnit getTon();
2738 
2746  static MeasureUnit *createTonne(UErrorCode &status);
2747 
2753  static MeasureUnit getTonne();
2754 
2762  static MeasureUnit *createGigawatt(UErrorCode &status);
2763 
2769  static MeasureUnit getGigawatt();
2770 
2778  static MeasureUnit *createHorsepower(UErrorCode &status);
2779 
2785  static MeasureUnit getHorsepower();
2786 
2794  static MeasureUnit *createKilowatt(UErrorCode &status);
2795 
2801  static MeasureUnit getKilowatt();
2802 
2810  static MeasureUnit *createMegawatt(UErrorCode &status);
2811 
2817  static MeasureUnit getMegawatt();
2818 
2826  static MeasureUnit *createMilliwatt(UErrorCode &status);
2827 
2833  static MeasureUnit getMilliwatt();
2834 
2842  static MeasureUnit *createWatt(UErrorCode &status);
2843 
2849  static MeasureUnit getWatt();
2850 
2858  static MeasureUnit *createAtmosphere(UErrorCode &status);
2859 
2865  static MeasureUnit getAtmosphere();
2866 
2874  static MeasureUnit *createBar(UErrorCode &status);
2875 
2881  static MeasureUnit getBar();
2882 
2883 #ifndef U_HIDE_DRAFT_API
2884 
2891  static MeasureUnit *createGasolineEnergyDensity(UErrorCode &status);
2892 
2898  static MeasureUnit getGasolineEnergyDensity();
2899 #endif /* U_HIDE_DRAFT_API */
2900 
2908  static MeasureUnit *createHectopascal(UErrorCode &status);
2909 
2915  static MeasureUnit getHectopascal();
2916 
2924  static MeasureUnit *createInchHg(UErrorCode &status);
2925 
2931  static MeasureUnit getInchHg();
2932 
2940  static MeasureUnit *createKilopascal(UErrorCode &status);
2941 
2947  static MeasureUnit getKilopascal();
2948 
2956  static MeasureUnit *createMegapascal(UErrorCode &status);
2957 
2963  static MeasureUnit getMegapascal();
2964 
2972  static MeasureUnit *createMillibar(UErrorCode &status);
2973 
2979  static MeasureUnit getMillibar();
2980 
2988  static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
2989 
2995  static MeasureUnit getMillimeterOfMercury();
2996 
3004  static MeasureUnit *createPascal(UErrorCode &status);
3005 
3011  static MeasureUnit getPascal();
3012 
3020  static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
3021 
3027  static MeasureUnit getPoundPerSquareInch();
3028 
3029 #ifndef U_HIDE_DRAFT_API
3030 
3037  static MeasureUnit *createBeaufort(UErrorCode &status);
3038 
3044  static MeasureUnit getBeaufort();
3045 #endif /* U_HIDE_DRAFT_API */
3046 
3054  static MeasureUnit *createKilometerPerHour(UErrorCode &status);
3055 
3061  static MeasureUnit getKilometerPerHour();
3062 
3070  static MeasureUnit *createKnot(UErrorCode &status);
3071 
3077  static MeasureUnit getKnot();
3078 
3086  static MeasureUnit *createMeterPerSecond(UErrorCode &status);
3087 
3093  static MeasureUnit getMeterPerSecond();
3094 
3102  static MeasureUnit *createMilePerHour(UErrorCode &status);
3103 
3109  static MeasureUnit getMilePerHour();
3110 
3118  static MeasureUnit *createCelsius(UErrorCode &status);
3119 
3125  static MeasureUnit getCelsius();
3126 
3134  static MeasureUnit *createFahrenheit(UErrorCode &status);
3135 
3141  static MeasureUnit getFahrenheit();
3142 
3150  static MeasureUnit *createGenericTemperature(UErrorCode &status);
3151 
3157  static MeasureUnit getGenericTemperature();
3158 
3166  static MeasureUnit *createKelvin(UErrorCode &status);
3167 
3173  static MeasureUnit getKelvin();
3174 
3182  static MeasureUnit *createNewtonMeter(UErrorCode &status);
3183 
3189  static MeasureUnit getNewtonMeter();
3190 
3198  static MeasureUnit *createPoundFoot(UErrorCode &status);
3199 
3205  static MeasureUnit getPoundFoot();
3206 
3214  static MeasureUnit *createAcreFoot(UErrorCode &status);
3215 
3221  static MeasureUnit getAcreFoot();
3222 
3230  static MeasureUnit *createBarrel(UErrorCode &status);
3231 
3237  static MeasureUnit getBarrel();
3238 
3246  static MeasureUnit *createBushel(UErrorCode &status);
3247 
3253  static MeasureUnit getBushel();
3254 
3262  static MeasureUnit *createCentiliter(UErrorCode &status);
3263 
3269  static MeasureUnit getCentiliter();
3270 
3278  static MeasureUnit *createCubicCentimeter(UErrorCode &status);
3279 
3285  static MeasureUnit getCubicCentimeter();
3286 
3294  static MeasureUnit *createCubicFoot(UErrorCode &status);
3295 
3301  static MeasureUnit getCubicFoot();
3302 
3310  static MeasureUnit *createCubicInch(UErrorCode &status);
3311 
3317  static MeasureUnit getCubicInch();
3318 
3326  static MeasureUnit *createCubicKilometer(UErrorCode &status);
3327 
3333  static MeasureUnit getCubicKilometer();
3334 
3342  static MeasureUnit *createCubicMeter(UErrorCode &status);
3343 
3349  static MeasureUnit getCubicMeter();
3350 
3358  static MeasureUnit *createCubicMile(UErrorCode &status);
3359 
3365  static MeasureUnit getCubicMile();
3366 
3374  static MeasureUnit *createCubicYard(UErrorCode &status);
3375 
3381  static MeasureUnit getCubicYard();
3382 
3390  static MeasureUnit *createCup(UErrorCode &status);
3391 
3397  static MeasureUnit getCup();
3398 
3406  static MeasureUnit *createCupMetric(UErrorCode &status);
3407 
3413  static MeasureUnit getCupMetric();
3414 
3422  static MeasureUnit *createDeciliter(UErrorCode &status);
3423 
3429  static MeasureUnit getDeciliter();
3430 
3438  static MeasureUnit *createDessertSpoon(UErrorCode &status);
3439 
3445  static MeasureUnit getDessertSpoon();
3446 
3454  static MeasureUnit *createDessertSpoonImperial(UErrorCode &status);
3455 
3461  static MeasureUnit getDessertSpoonImperial();
3462 
3470  static MeasureUnit *createDram(UErrorCode &status);
3471 
3477  static MeasureUnit getDram();
3478 
3486  static MeasureUnit *createDrop(UErrorCode &status);
3487 
3493  static MeasureUnit getDrop();
3494 
3502  static MeasureUnit *createFluidOunce(UErrorCode &status);
3503 
3509  static MeasureUnit getFluidOunce();
3510 
3518  static MeasureUnit *createFluidOunceImperial(UErrorCode &status);
3519 
3525  static MeasureUnit getFluidOunceImperial();
3526 
3534  static MeasureUnit *createGallon(UErrorCode &status);
3535 
3541  static MeasureUnit getGallon();
3542 
3550  static MeasureUnit *createGallonImperial(UErrorCode &status);
3551 
3557  static MeasureUnit getGallonImperial();
3558 
3566  static MeasureUnit *createHectoliter(UErrorCode &status);
3567 
3573  static MeasureUnit getHectoliter();
3574 
3582  static MeasureUnit *createJigger(UErrorCode &status);
3583 
3589  static MeasureUnit getJigger();
3590 
3598  static MeasureUnit *createLiter(UErrorCode &status);
3599 
3605  static MeasureUnit getLiter();
3606 
3614  static MeasureUnit *createMegaliter(UErrorCode &status);
3615 
3621  static MeasureUnit getMegaliter();
3622 
3630  static MeasureUnit *createMilliliter(UErrorCode &status);
3631 
3637  static MeasureUnit getMilliliter();
3638 
3646  static MeasureUnit *createPinch(UErrorCode &status);
3647 
3653  static MeasureUnit getPinch();
3654 
3662  static MeasureUnit *createPint(UErrorCode &status);
3663 
3669  static MeasureUnit getPint();
3670 
3678  static MeasureUnit *createPintMetric(UErrorCode &status);
3679 
3685  static MeasureUnit getPintMetric();
3686 
3694  static MeasureUnit *createQuart(UErrorCode &status);
3695 
3701  static MeasureUnit getQuart();
3702 
3710  static MeasureUnit *createQuartImperial(UErrorCode &status);
3711 
3717  static MeasureUnit getQuartImperial();
3718 
3726  static MeasureUnit *createTablespoon(UErrorCode &status);
3727 
3733  static MeasureUnit getTablespoon();
3734 
3742  static MeasureUnit *createTeaspoon(UErrorCode &status);
3743 
3749  static MeasureUnit getTeaspoon();
3750 
3751 // End generated createXXX methods
3752 
3753  protected:
3754 
3755 #ifndef U_HIDE_INTERNAL_API
3756 
3760  void initTime(const char *timeId);
3761 
3766  void initCurrency(StringPiece isoCurrency);
3767 
3768 #endif /* U_HIDE_INTERNAL_API */
3769 
3770 private:
3771 
3772  // Used by new draft APIs in ICU 67. If non-null, fImpl is owned by the
3773  // MeasureUnit.
3774  MeasureUnitImpl* fImpl;
3775 
3776  // An index into a static string list in measunit.cpp. If set to -1, fImpl
3777  // is in use instead of fTypeId and fSubTypeId.
3778  int16_t fSubTypeId;
3779  // An index into a static string list in measunit.cpp. If set to -1, fImpl
3780  // is in use instead of fTypeId and fSubTypeId.
3781  int8_t fTypeId;
3782 
3783  MeasureUnit(int32_t typeId, int32_t subTypeId);
3784  MeasureUnit(MeasureUnitImpl&& impl);
3785  void setTo(int32_t typeId, int32_t subTypeId);
3786  static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
3787 
3795  static bool findBySubType(StringPiece subType, MeasureUnit* output);
3796 
3798  LocalArray<MeasureUnit> splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const;
3799 
3800  friend class MeasureUnitImpl;
3801 
3802  // For access to findBySubType
3803  friend class number::impl::LongNameHandler;
3804 };
3805 
3806 // inline impl of @stable ICU 68 method
3807 inline std::pair<LocalArray<MeasureUnit>, int32_t>
3808 MeasureUnit::splitToSingleUnits(UErrorCode& status) const {
3809  int32_t length;
3810  auto array = splitToSingleUnitsImpl(length, status);
3811  return std::make_pair(std::move(array), length);
3812 }
3813 
3814 U_NAMESPACE_END
3815 
3816 #endif // !UNCONFIG_NO_FORMATTING
3817 
3818 #endif /* U_SHOW_CPLUSPLUS_API */
3819 
3820 #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:369
#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:70
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:77
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
virtual UClassID getDynamicClassID() const
ICU4C "poor man&#39;s RTTI", returns a UClassID for the actual ICU class.
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:444
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:63
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:57