ICU 73.2  73.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 
377  MeasureUnit();
378 
383  MeasureUnit(const MeasureUnit &other);
384 
389  MeasureUnit(MeasureUnit &&other) noexcept;
390 
404  static MeasureUnit forIdentifier(StringPiece identifier, UErrorCode& status);
405 
410  MeasureUnit &operator=(const MeasureUnit &other);
411 
416  MeasureUnit &operator=(MeasureUnit &&other) noexcept;
417 
423  virtual MeasureUnit* clone() const;
424 
429  virtual ~MeasureUnit();
430 
436  virtual bool operator==(const UObject& other) const;
437 
443  bool operator!=(const UObject& other) const {
444  return !(*this == other);
445  }
446 
454  const char *getType() const;
455 
463  const char *getSubtype() const;
464 
471  const char* getIdentifier() const;
472 
480  UMeasureUnitComplexity getComplexity(UErrorCode& status) const;
481 
496  MeasureUnit withPrefix(UMeasurePrefix prefix, UErrorCode& status) const;
497 
512  UMeasurePrefix getPrefix(UErrorCode& status) const;
513 
528  MeasureUnit withDimensionality(int32_t dimensionality, UErrorCode& status) const;
529 
543  int32_t getDimensionality(UErrorCode& status) const;
544 
557  MeasureUnit reciprocal(UErrorCode& status) const;
558 
576  MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;
577 
593  inline std::pair<LocalArray<MeasureUnit>, int32_t> splitToSingleUnits(UErrorCode& status) const;
594 
606  static int32_t getAvailable(
607  MeasureUnit *destArray,
608  int32_t destCapacity,
609  UErrorCode &errorCode);
610 
623  static int32_t getAvailable(
624  const char *type,
625  MeasureUnit *destArray,
626  int32_t destCapacity,
627  UErrorCode &errorCode);
628 
637  static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
638 
650  static UClassID U_EXPORT2 getStaticClassID(void);
651 
663  virtual UClassID getDynamicClassID(void) const override;
664 
665 #ifndef U_HIDE_INTERNAL_API
666 
671  int32_t getOffset() const;
672 #endif /* U_HIDE_INTERNAL_API */
673 
674 // All code between the "Start generated createXXX methods" comment and
675 // the "End generated createXXX methods" comment is auto generated code
676 // and must not be edited manually. For instructions on how to correctly
677 // update this code, refer to:
678 // docs/processes/release/tasks/updating-measure-unit.md
679 //
680 // Start generated createXXX methods
681 
689  static MeasureUnit *createGForce(UErrorCode &status);
690 
696  static MeasureUnit getGForce();
697 
705  static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
706 
712  static MeasureUnit getMeterPerSecondSquared();
713 
721  static MeasureUnit *createArcMinute(UErrorCode &status);
722 
728  static MeasureUnit getArcMinute();
729 
737  static MeasureUnit *createArcSecond(UErrorCode &status);
738 
744  static MeasureUnit getArcSecond();
745 
753  static MeasureUnit *createDegree(UErrorCode &status);
754 
760  static MeasureUnit getDegree();
761 
769  static MeasureUnit *createRadian(UErrorCode &status);
770 
776  static MeasureUnit getRadian();
777 
785  static MeasureUnit *createRevolutionAngle(UErrorCode &status);
786 
792  static MeasureUnit getRevolutionAngle();
793 
801  static MeasureUnit *createAcre(UErrorCode &status);
802 
808  static MeasureUnit getAcre();
809 
817  static MeasureUnit *createDunam(UErrorCode &status);
818 
824  static MeasureUnit getDunam();
825 
833  static MeasureUnit *createHectare(UErrorCode &status);
834 
840  static MeasureUnit getHectare();
841 
849  static MeasureUnit *createSquareCentimeter(UErrorCode &status);
850 
856  static MeasureUnit getSquareCentimeter();
857 
865  static MeasureUnit *createSquareFoot(UErrorCode &status);
866 
872  static MeasureUnit getSquareFoot();
873 
881  static MeasureUnit *createSquareInch(UErrorCode &status);
882 
888  static MeasureUnit getSquareInch();
889 
897  static MeasureUnit *createSquareKilometer(UErrorCode &status);
898 
904  static MeasureUnit getSquareKilometer();
905 
913  static MeasureUnit *createSquareMeter(UErrorCode &status);
914 
920  static MeasureUnit getSquareMeter();
921 
929  static MeasureUnit *createSquareMile(UErrorCode &status);
930 
936  static MeasureUnit getSquareMile();
937 
945  static MeasureUnit *createSquareYard(UErrorCode &status);
946 
952  static MeasureUnit getSquareYard();
953 
961  static MeasureUnit *createItem(UErrorCode &status);
962 
968  static MeasureUnit getItem();
969 
977  static MeasureUnit *createKarat(UErrorCode &status);
978 
984  static MeasureUnit getKarat();
985 
993  static MeasureUnit *createMilligramOfglucosePerDeciliter(UErrorCode &status);
994 
1000  static MeasureUnit getMilligramOfglucosePerDeciliter();
1001 
1009  static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
1010 
1016  static MeasureUnit getMilligramPerDeciliter();
1017 
1025  static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
1026 
1032  static MeasureUnit getMillimolePerLiter();
1033 
1041  static MeasureUnit *createMole(UErrorCode &status);
1042 
1048  static MeasureUnit getMole();
1049 
1057  static MeasureUnit *createPercent(UErrorCode &status);
1058 
1064  static MeasureUnit getPercent();
1065 
1073  static MeasureUnit *createPermille(UErrorCode &status);
1074 
1080  static MeasureUnit getPermille();
1081 
1089  static MeasureUnit *createPartPerMillion(UErrorCode &status);
1090 
1096  static MeasureUnit getPartPerMillion();
1097 
1105  static MeasureUnit *createPermyriad(UErrorCode &status);
1106 
1112  static MeasureUnit getPermyriad();
1113 
1121  static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
1122 
1128  static MeasureUnit getLiterPer100Kilometers();
1129 
1137  static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
1138 
1144  static MeasureUnit getLiterPerKilometer();
1145 
1153  static MeasureUnit *createMilePerGallon(UErrorCode &status);
1154 
1160  static MeasureUnit getMilePerGallon();
1161 
1169  static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
1170 
1176  static MeasureUnit getMilePerGallonImperial();
1177 
1185  static MeasureUnit *createBit(UErrorCode &status);
1186 
1192  static MeasureUnit getBit();
1193 
1201  static MeasureUnit *createByte(UErrorCode &status);
1202 
1208  static MeasureUnit getByte();
1209 
1217  static MeasureUnit *createGigabit(UErrorCode &status);
1218 
1224  static MeasureUnit getGigabit();
1225 
1233  static MeasureUnit *createGigabyte(UErrorCode &status);
1234 
1240  static MeasureUnit getGigabyte();
1241 
1249  static MeasureUnit *createKilobit(UErrorCode &status);
1250 
1256  static MeasureUnit getKilobit();
1257 
1265  static MeasureUnit *createKilobyte(UErrorCode &status);
1266 
1272  static MeasureUnit getKilobyte();
1273 
1281  static MeasureUnit *createMegabit(UErrorCode &status);
1282 
1288  static MeasureUnit getMegabit();
1289 
1297  static MeasureUnit *createMegabyte(UErrorCode &status);
1298 
1304  static MeasureUnit getMegabyte();
1305 
1313  static MeasureUnit *createPetabyte(UErrorCode &status);
1314 
1320  static MeasureUnit getPetabyte();
1321 
1329  static MeasureUnit *createTerabit(UErrorCode &status);
1330 
1336  static MeasureUnit getTerabit();
1337 
1345  static MeasureUnit *createTerabyte(UErrorCode &status);
1346 
1352  static MeasureUnit getTerabyte();
1353 
1361  static MeasureUnit *createCentury(UErrorCode &status);
1362 
1368  static MeasureUnit getCentury();
1369 
1377  static MeasureUnit *createDay(UErrorCode &status);
1378 
1384  static MeasureUnit getDay();
1385 
1393  static MeasureUnit *createDayPerson(UErrorCode &status);
1394 
1400  static MeasureUnit getDayPerson();
1401 
1409  static MeasureUnit *createDecade(UErrorCode &status);
1410 
1416  static MeasureUnit getDecade();
1417 
1425  static MeasureUnit *createHour(UErrorCode &status);
1426 
1432  static MeasureUnit getHour();
1433 
1441  static MeasureUnit *createMicrosecond(UErrorCode &status);
1442 
1448  static MeasureUnit getMicrosecond();
1449 
1457  static MeasureUnit *createMillisecond(UErrorCode &status);
1458 
1464  static MeasureUnit getMillisecond();
1465 
1473  static MeasureUnit *createMinute(UErrorCode &status);
1474 
1480  static MeasureUnit getMinute();
1481 
1489  static MeasureUnit *createMonth(UErrorCode &status);
1490 
1496  static MeasureUnit getMonth();
1497 
1505  static MeasureUnit *createMonthPerson(UErrorCode &status);
1506 
1512  static MeasureUnit getMonthPerson();
1513 
1521  static MeasureUnit *createNanosecond(UErrorCode &status);
1522 
1528  static MeasureUnit getNanosecond();
1529 
1530 #ifndef U_HIDE_DRAFT_API
1531 
1538  static MeasureUnit *createQuarter(UErrorCode &status);
1539 
1545  static MeasureUnit getQuarter();
1546 #endif /* U_HIDE_DRAFT_API */
1547 
1555  static MeasureUnit *createSecond(UErrorCode &status);
1556 
1562  static MeasureUnit getSecond();
1563 
1571  static MeasureUnit *createWeek(UErrorCode &status);
1572 
1578  static MeasureUnit getWeek();
1579 
1587  static MeasureUnit *createWeekPerson(UErrorCode &status);
1588 
1594  static MeasureUnit getWeekPerson();
1595 
1603  static MeasureUnit *createYear(UErrorCode &status);
1604 
1610  static MeasureUnit getYear();
1611 
1619  static MeasureUnit *createYearPerson(UErrorCode &status);
1620 
1626  static MeasureUnit getYearPerson();
1627 
1635  static MeasureUnit *createAmpere(UErrorCode &status);
1636 
1642  static MeasureUnit getAmpere();
1643 
1651  static MeasureUnit *createMilliampere(UErrorCode &status);
1652 
1658  static MeasureUnit getMilliampere();
1659 
1667  static MeasureUnit *createOhm(UErrorCode &status);
1668 
1674  static MeasureUnit getOhm();
1675 
1683  static MeasureUnit *createVolt(UErrorCode &status);
1684 
1690  static MeasureUnit getVolt();
1691 
1699  static MeasureUnit *createBritishThermalUnit(UErrorCode &status);
1700 
1706  static MeasureUnit getBritishThermalUnit();
1707 
1715  static MeasureUnit *createCalorie(UErrorCode &status);
1716 
1722  static MeasureUnit getCalorie();
1723 
1731  static MeasureUnit *createElectronvolt(UErrorCode &status);
1732 
1738  static MeasureUnit getElectronvolt();
1739 
1747  static MeasureUnit *createFoodcalorie(UErrorCode &status);
1748 
1754  static MeasureUnit getFoodcalorie();
1755 
1763  static MeasureUnit *createJoule(UErrorCode &status);
1764 
1770  static MeasureUnit getJoule();
1771 
1779  static MeasureUnit *createKilocalorie(UErrorCode &status);
1780 
1786  static MeasureUnit getKilocalorie();
1787 
1795  static MeasureUnit *createKilojoule(UErrorCode &status);
1796 
1802  static MeasureUnit getKilojoule();
1803 
1811  static MeasureUnit *createKilowattHour(UErrorCode &status);
1812 
1818  static MeasureUnit getKilowattHour();
1819 
1827  static MeasureUnit *createThermUs(UErrorCode &status);
1828 
1834  static MeasureUnit getThermUs();
1835 
1843  static MeasureUnit *createKilowattHourPer100Kilometer(UErrorCode &status);
1844 
1850  static MeasureUnit getKilowattHourPer100Kilometer();
1851 
1859  static MeasureUnit *createNewton(UErrorCode &status);
1860 
1866  static MeasureUnit getNewton();
1867 
1875  static MeasureUnit *createPoundForce(UErrorCode &status);
1876 
1882  static MeasureUnit getPoundForce();
1883 
1891  static MeasureUnit *createGigahertz(UErrorCode &status);
1892 
1898  static MeasureUnit getGigahertz();
1899 
1907  static MeasureUnit *createHertz(UErrorCode &status);
1908 
1914  static MeasureUnit getHertz();
1915 
1923  static MeasureUnit *createKilohertz(UErrorCode &status);
1924 
1930  static MeasureUnit getKilohertz();
1931 
1939  static MeasureUnit *createMegahertz(UErrorCode &status);
1940 
1946  static MeasureUnit getMegahertz();
1947 
1955  static MeasureUnit *createDot(UErrorCode &status);
1956 
1962  static MeasureUnit getDot();
1963 
1971  static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
1972 
1978  static MeasureUnit getDotPerCentimeter();
1979 
1987  static MeasureUnit *createDotPerInch(UErrorCode &status);
1988 
1994  static MeasureUnit getDotPerInch();
1995 
2003  static MeasureUnit *createEm(UErrorCode &status);
2004 
2010  static MeasureUnit getEm();
2011 
2019  static MeasureUnit *createMegapixel(UErrorCode &status);
2020 
2026  static MeasureUnit getMegapixel();
2027 
2035  static MeasureUnit *createPixel(UErrorCode &status);
2036 
2042  static MeasureUnit getPixel();
2043 
2051  static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
2052 
2058  static MeasureUnit getPixelPerCentimeter();
2059 
2067  static MeasureUnit *createPixelPerInch(UErrorCode &status);
2068 
2074  static MeasureUnit getPixelPerInch();
2075 
2083  static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
2084 
2090  static MeasureUnit getAstronomicalUnit();
2091 
2099  static MeasureUnit *createCentimeter(UErrorCode &status);
2100 
2106  static MeasureUnit getCentimeter();
2107 
2115  static MeasureUnit *createDecimeter(UErrorCode &status);
2116 
2122  static MeasureUnit getDecimeter();
2123 
2131  static MeasureUnit *createEarthRadius(UErrorCode &status);
2132 
2138  static MeasureUnit getEarthRadius();
2139 
2147  static MeasureUnit *createFathom(UErrorCode &status);
2148 
2154  static MeasureUnit getFathom();
2155 
2163  static MeasureUnit *createFoot(UErrorCode &status);
2164 
2170  static MeasureUnit getFoot();
2171 
2179  static MeasureUnit *createFurlong(UErrorCode &status);
2180 
2186  static MeasureUnit getFurlong();
2187 
2195  static MeasureUnit *createInch(UErrorCode &status);
2196 
2202  static MeasureUnit getInch();
2203 
2211  static MeasureUnit *createKilometer(UErrorCode &status);
2212 
2218  static MeasureUnit getKilometer();
2219 
2227  static MeasureUnit *createLightYear(UErrorCode &status);
2228 
2234  static MeasureUnit getLightYear();
2235 
2243  static MeasureUnit *createMeter(UErrorCode &status);
2244 
2250  static MeasureUnit getMeter();
2251 
2259  static MeasureUnit *createMicrometer(UErrorCode &status);
2260 
2266  static MeasureUnit getMicrometer();
2267 
2275  static MeasureUnit *createMile(UErrorCode &status);
2276 
2282  static MeasureUnit getMile();
2283 
2291  static MeasureUnit *createMileScandinavian(UErrorCode &status);
2292 
2298  static MeasureUnit getMileScandinavian();
2299 
2307  static MeasureUnit *createMillimeter(UErrorCode &status);
2308 
2314  static MeasureUnit getMillimeter();
2315 
2323  static MeasureUnit *createNanometer(UErrorCode &status);
2324 
2330  static MeasureUnit getNanometer();
2331 
2339  static MeasureUnit *createNauticalMile(UErrorCode &status);
2340 
2346  static MeasureUnit getNauticalMile();
2347 
2355  static MeasureUnit *createParsec(UErrorCode &status);
2356 
2362  static MeasureUnit getParsec();
2363 
2371  static MeasureUnit *createPicometer(UErrorCode &status);
2372 
2378  static MeasureUnit getPicometer();
2379 
2387  static MeasureUnit *createPoint(UErrorCode &status);
2388 
2394  static MeasureUnit getPoint();
2395 
2403  static MeasureUnit *createSolarRadius(UErrorCode &status);
2404 
2410  static MeasureUnit getSolarRadius();
2411 
2419  static MeasureUnit *createYard(UErrorCode &status);
2420 
2426  static MeasureUnit getYard();
2427 
2435  static MeasureUnit *createCandela(UErrorCode &status);
2436 
2442  static MeasureUnit getCandela();
2443 
2451  static MeasureUnit *createLumen(UErrorCode &status);
2452 
2458  static MeasureUnit getLumen();
2459 
2467  static MeasureUnit *createLux(UErrorCode &status);
2468 
2474  static MeasureUnit getLux();
2475 
2483  static MeasureUnit *createSolarLuminosity(UErrorCode &status);
2484 
2490  static MeasureUnit getSolarLuminosity();
2491 
2499  static MeasureUnit *createCarat(UErrorCode &status);
2500 
2506  static MeasureUnit getCarat();
2507 
2515  static MeasureUnit *createDalton(UErrorCode &status);
2516 
2522  static MeasureUnit getDalton();
2523 
2531  static MeasureUnit *createEarthMass(UErrorCode &status);
2532 
2538  static MeasureUnit getEarthMass();
2539 
2547  static MeasureUnit *createGrain(UErrorCode &status);
2548 
2554  static MeasureUnit getGrain();
2555 
2563  static MeasureUnit *createGram(UErrorCode &status);
2564 
2570  static MeasureUnit getGram();
2571 
2579  static MeasureUnit *createKilogram(UErrorCode &status);
2580 
2586  static MeasureUnit getKilogram();
2587 
2599  static MeasureUnit *createMetricTon(UErrorCode &status);
2600 
2610  static MeasureUnit getMetricTon();
2611 
2619  static MeasureUnit *createMicrogram(UErrorCode &status);
2620 
2626  static MeasureUnit getMicrogram();
2627 
2635  static MeasureUnit *createMilligram(UErrorCode &status);
2636 
2642  static MeasureUnit getMilligram();
2643 
2651  static MeasureUnit *createOunce(UErrorCode &status);
2652 
2658  static MeasureUnit getOunce();
2659 
2667  static MeasureUnit *createOunceTroy(UErrorCode &status);
2668 
2674  static MeasureUnit getOunceTroy();
2675 
2683  static MeasureUnit *createPound(UErrorCode &status);
2684 
2690  static MeasureUnit getPound();
2691 
2699  static MeasureUnit *createSolarMass(UErrorCode &status);
2700 
2706  static MeasureUnit getSolarMass();
2707 
2715  static MeasureUnit *createStone(UErrorCode &status);
2716 
2722  static MeasureUnit getStone();
2723 
2731  static MeasureUnit *createTon(UErrorCode &status);
2732 
2738  static MeasureUnit getTon();
2739 
2740 #ifndef U_HIDE_DRAFT_API
2741 
2748  static MeasureUnit *createTonne(UErrorCode &status);
2749 
2755  static MeasureUnit getTonne();
2756 #endif /* U_HIDE_DRAFT_API */
2757 
2765  static MeasureUnit *createGigawatt(UErrorCode &status);
2766 
2772  static MeasureUnit getGigawatt();
2773 
2781  static MeasureUnit *createHorsepower(UErrorCode &status);
2782 
2788  static MeasureUnit getHorsepower();
2789 
2797  static MeasureUnit *createKilowatt(UErrorCode &status);
2798 
2804  static MeasureUnit getKilowatt();
2805 
2813  static MeasureUnit *createMegawatt(UErrorCode &status);
2814 
2820  static MeasureUnit getMegawatt();
2821 
2829  static MeasureUnit *createMilliwatt(UErrorCode &status);
2830 
2836  static MeasureUnit getMilliwatt();
2837 
2845  static MeasureUnit *createWatt(UErrorCode &status);
2846 
2852  static MeasureUnit getWatt();
2853 
2861  static MeasureUnit *createAtmosphere(UErrorCode &status);
2862 
2868  static MeasureUnit getAtmosphere();
2869 
2877  static MeasureUnit *createBar(UErrorCode &status);
2878 
2884  static MeasureUnit getBar();
2885 
2893  static MeasureUnit *createHectopascal(UErrorCode &status);
2894 
2900  static MeasureUnit getHectopascal();
2901 
2909  static MeasureUnit *createInchHg(UErrorCode &status);
2910 
2916  static MeasureUnit getInchHg();
2917 
2925  static MeasureUnit *createKilopascal(UErrorCode &status);
2926 
2932  static MeasureUnit getKilopascal();
2933 
2941  static MeasureUnit *createMegapascal(UErrorCode &status);
2942 
2948  static MeasureUnit getMegapascal();
2949 
2957  static MeasureUnit *createMillibar(UErrorCode &status);
2958 
2964  static MeasureUnit getMillibar();
2965 
2973  static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
2974 
2980  static MeasureUnit getMillimeterOfMercury();
2981 
2989  static MeasureUnit *createPascal(UErrorCode &status);
2990 
2996  static MeasureUnit getPascal();
2997 
3005  static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
3006 
3012  static MeasureUnit getPoundPerSquareInch();
3013 
3014 #ifndef U_HIDE_DRAFT_API
3015 
3022  static MeasureUnit *createBeaufort(UErrorCode &status);
3023 
3029  static MeasureUnit getBeaufort();
3030 #endif /* U_HIDE_DRAFT_API */
3031 
3039  static MeasureUnit *createKilometerPerHour(UErrorCode &status);
3040 
3046  static MeasureUnit getKilometerPerHour();
3047 
3055  static MeasureUnit *createKnot(UErrorCode &status);
3056 
3062  static MeasureUnit getKnot();
3063 
3071  static MeasureUnit *createMeterPerSecond(UErrorCode &status);
3072 
3078  static MeasureUnit getMeterPerSecond();
3079 
3087  static MeasureUnit *createMilePerHour(UErrorCode &status);
3088 
3094  static MeasureUnit getMilePerHour();
3095 
3103  static MeasureUnit *createCelsius(UErrorCode &status);
3104 
3110  static MeasureUnit getCelsius();
3111 
3119  static MeasureUnit *createFahrenheit(UErrorCode &status);
3120 
3126  static MeasureUnit getFahrenheit();
3127 
3135  static MeasureUnit *createGenericTemperature(UErrorCode &status);
3136 
3142  static MeasureUnit getGenericTemperature();
3143 
3151  static MeasureUnit *createKelvin(UErrorCode &status);
3152 
3158  static MeasureUnit getKelvin();
3159 
3167  static MeasureUnit *createNewtonMeter(UErrorCode &status);
3168 
3174  static MeasureUnit getNewtonMeter();
3175 
3183  static MeasureUnit *createPoundFoot(UErrorCode &status);
3184 
3190  static MeasureUnit getPoundFoot();
3191 
3199  static MeasureUnit *createAcreFoot(UErrorCode &status);
3200 
3206  static MeasureUnit getAcreFoot();
3207 
3215  static MeasureUnit *createBarrel(UErrorCode &status);
3216 
3222  static MeasureUnit getBarrel();
3223 
3231  static MeasureUnit *createBushel(UErrorCode &status);
3232 
3238  static MeasureUnit getBushel();
3239 
3247  static MeasureUnit *createCentiliter(UErrorCode &status);
3248 
3254  static MeasureUnit getCentiliter();
3255 
3263  static MeasureUnit *createCubicCentimeter(UErrorCode &status);
3264 
3270  static MeasureUnit getCubicCentimeter();
3271 
3279  static MeasureUnit *createCubicFoot(UErrorCode &status);
3280 
3286  static MeasureUnit getCubicFoot();
3287 
3295  static MeasureUnit *createCubicInch(UErrorCode &status);
3296 
3302  static MeasureUnit getCubicInch();
3303 
3311  static MeasureUnit *createCubicKilometer(UErrorCode &status);
3312 
3318  static MeasureUnit getCubicKilometer();
3319 
3327  static MeasureUnit *createCubicMeter(UErrorCode &status);
3328 
3334  static MeasureUnit getCubicMeter();
3335 
3343  static MeasureUnit *createCubicMile(UErrorCode &status);
3344 
3350  static MeasureUnit getCubicMile();
3351 
3359  static MeasureUnit *createCubicYard(UErrorCode &status);
3360 
3366  static MeasureUnit getCubicYard();
3367 
3375  static MeasureUnit *createCup(UErrorCode &status);
3376 
3382  static MeasureUnit getCup();
3383 
3391  static MeasureUnit *createCupMetric(UErrorCode &status);
3392 
3398  static MeasureUnit getCupMetric();
3399 
3407  static MeasureUnit *createDeciliter(UErrorCode &status);
3408 
3414  static MeasureUnit getDeciliter();
3415 
3423  static MeasureUnit *createDessertSpoon(UErrorCode &status);
3424 
3430  static MeasureUnit getDessertSpoon();
3431 
3439  static MeasureUnit *createDessertSpoonImperial(UErrorCode &status);
3440 
3446  static MeasureUnit getDessertSpoonImperial();
3447 
3455  static MeasureUnit *createDram(UErrorCode &status);
3456 
3462  static MeasureUnit getDram();
3463 
3471  static MeasureUnit *createDrop(UErrorCode &status);
3472 
3478  static MeasureUnit getDrop();
3479 
3487  static MeasureUnit *createFluidOunce(UErrorCode &status);
3488 
3494  static MeasureUnit getFluidOunce();
3495 
3503  static MeasureUnit *createFluidOunceImperial(UErrorCode &status);
3504 
3510  static MeasureUnit getFluidOunceImperial();
3511 
3519  static MeasureUnit *createGallon(UErrorCode &status);
3520 
3526  static MeasureUnit getGallon();
3527 
3535  static MeasureUnit *createGallonImperial(UErrorCode &status);
3536 
3542  static MeasureUnit getGallonImperial();
3543 
3551  static MeasureUnit *createHectoliter(UErrorCode &status);
3552 
3558  static MeasureUnit getHectoliter();
3559 
3567  static MeasureUnit *createJigger(UErrorCode &status);
3568 
3574  static MeasureUnit getJigger();
3575 
3583  static MeasureUnit *createLiter(UErrorCode &status);
3584 
3590  static MeasureUnit getLiter();
3591 
3599  static MeasureUnit *createMegaliter(UErrorCode &status);
3600 
3606  static MeasureUnit getMegaliter();
3607 
3615  static MeasureUnit *createMilliliter(UErrorCode &status);
3616 
3622  static MeasureUnit getMilliliter();
3623 
3631  static MeasureUnit *createPinch(UErrorCode &status);
3632 
3638  static MeasureUnit getPinch();
3639 
3647  static MeasureUnit *createPint(UErrorCode &status);
3648 
3654  static MeasureUnit getPint();
3655 
3663  static MeasureUnit *createPintMetric(UErrorCode &status);
3664 
3670  static MeasureUnit getPintMetric();
3671 
3679  static MeasureUnit *createQuart(UErrorCode &status);
3680 
3686  static MeasureUnit getQuart();
3687 
3695  static MeasureUnit *createQuartImperial(UErrorCode &status);
3696 
3702  static MeasureUnit getQuartImperial();
3703 
3711  static MeasureUnit *createTablespoon(UErrorCode &status);
3712 
3718  static MeasureUnit getTablespoon();
3719 
3727  static MeasureUnit *createTeaspoon(UErrorCode &status);
3728 
3734  static MeasureUnit getTeaspoon();
3735 
3736 // End generated createXXX methods
3737 
3738  protected:
3739 
3740 #ifndef U_HIDE_INTERNAL_API
3741 
3745  void initTime(const char *timeId);
3746 
3751  void initCurrency(StringPiece isoCurrency);
3752 
3753 #endif /* U_HIDE_INTERNAL_API */
3754 
3755 private:
3756 
3757  // Used by new draft APIs in ICU 67. If non-null, fImpl is owned by the
3758  // MeasureUnit.
3759  MeasureUnitImpl* fImpl;
3760 
3761  // An index into a static string list in measunit.cpp. If set to -1, fImpl
3762  // is in use instead of fTypeId and fSubTypeId.
3763  int16_t fSubTypeId;
3764  // An index into a static string list in measunit.cpp. If set to -1, fImpl
3765  // is in use instead of fTypeId and fSubTypeId.
3766  int8_t fTypeId;
3767 
3768  MeasureUnit(int32_t typeId, int32_t subTypeId);
3769  MeasureUnit(MeasureUnitImpl&& impl);
3770  void setTo(int32_t typeId, int32_t subTypeId);
3771  static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
3772 
3780  static bool findBySubType(StringPiece subType, MeasureUnit* output);
3781 
3783  LocalArray<MeasureUnit> splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const;
3784 
3785  friend class MeasureUnitImpl;
3786 
3787  // For access to findBySubType
3788  friend class number::impl::LongNameHandler;
3789 };
3790 
3791 // inline impl of @stable ICU 68 method
3792 inline std::pair<LocalArray<MeasureUnit>, int32_t>
3793 MeasureUnit::splitToSingleUnits(UErrorCode& status) const {
3794  int32_t length;
3795  auto array = splitToSingleUnitsImpl(length, status);
3796  return std::make_pair(std::move(array), length);
3797 }
3798 
3799 U_NAMESPACE_END
3800 
3801 #endif // !UNCONFIG_NO_FORMATTING
3802 
3803 #endif /* U_SHOW_CPLUSPLUS_API */
3804 
3805 #endif // __MEASUREUNIT_H__
icu::UMEASURE_PREFIX_ATTO
@ UMEASURE_PREFIX_ATTO
SI prefix: atto, 10^-18.
Definition: measunit.h:236
icu::MeasureUnit
A unit such as length, mass, volume, currency, etc.
Definition: measunit.h:369
icu::UMEASURE_PREFIX_HECTO
@ UMEASURE_PREFIX_HECTO
SI prefix: hecto, 10^2.
Definition: measunit.h:173
icu::UMEASURE_PREFIX_KILO
@ UMEASURE_PREFIX_KILO
SI prefix: kilo, 10^3.
Definition: measunit.h:166
icu::UMEASURE_PREFIX_EXBI
@ UMEASURE_PREFIX_EXBI
Binary prefix: exbi, 1024^6.
Definition: measunit.h:319
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
icu::UMEASURE_PREFIX_FEMTO
@ UMEASURE_PREFIX_FEMTO
SI prefix: femto, 10^-15.
Definition: measunit.h:229
U_I18N_API
#define U_I18N_API
Definition: utypes.h:301
icu::UMEASURE_PREFIX_PEBI
@ UMEASURE_PREFIX_PEBI
Binary prefix: pebi, 1024^5.
Definition: measunit.h:312
icu::UMEASURE_PREFIX_DEKA
@ UMEASURE_PREFIX_DEKA
SI prefix: deka, 10^1.
Definition: measunit.h:180
icu::UMEASURE_UNIT_COMPOUND
@ UMEASURE_UNIT_COMPOUND
A compound unit, like meter-per-second.
Definition: measunit.h:70
icu::UMEASURE_PREFIX_MILLI
@ UMEASURE_PREFIX_MILLI
SI prefix: milli, 10^-3.
Definition: measunit.h:201
icu::UMEASURE_PREFIX_GIBI
@ UMEASURE_PREFIX_GIBI
Binary prefix: gibi, 1024^3.
Definition: measunit.h:298
icu::operator==
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
icu::UMEASURE_PREFIX_DECI
@ UMEASURE_PREFIX_DECI
SI prefix: deci, 10^-1.
Definition: measunit.h:187
icu::UMEASURE_PREFIX_TERA
@ UMEASURE_PREFIX_TERA
SI prefix: tera, 10^12.
Definition: measunit.h:145
icu::UMEASURE_PREFIX_CENTI
@ UMEASURE_PREFIX_CENTI
SI prefix: centi, 10^-2.
Definition: measunit.h:194
icu::UMEASURE_PREFIX_MEGA
@ UMEASURE_PREFIX_MEGA
SI prefix: mega, 10^6.
Definition: measunit.h:159
icu::UMEASURE_PREFIX_INTERNAL_MAX_SI
@ UMEASURE_PREFIX_INTERNAL_MAX_SI
ICU use only.
Definition: measunit.h:116
icu::UMEASURE_PREFIX_ZEPTO
@ UMEASURE_PREFIX_ZEPTO
SI prefix: zepto, 10^-21.
Definition: measunit.h:243
icu::UMEASURE_PREFIX_MICRO
@ UMEASURE_PREFIX_MICRO
SI prefix: micro, 10^-6.
Definition: measunit.h:208
icu::UMEASURE_PREFIX_INTERNAL_MAX_BIN
@ UMEASURE_PREFIX_INTERNAL_MAX_BIN
ICU use only.
Definition: measunit.h:341
icu::UMEASURE_PREFIX_YOCTO
@ UMEASURE_PREFIX_YOCTO
SI prefix: yocto, 10^-24.
Definition: measunit.h:250
icu::UMEASURE_PREFIX_ZETTA
@ UMEASURE_PREFIX_ZETTA
SI prefix: zetta, 10^21.
Definition: measunit.h:124
icu::UMEASURE_PREFIX_NANO
@ UMEASURE_PREFIX_NANO
SI prefix: nano, 10^-9.
Definition: measunit.h:215
icu::UMEASURE_PREFIX_PICO
@ UMEASURE_PREFIX_PICO
SI prefix: pico, 10^-12.
Definition: measunit.h:222
icu::UMEASURE_PREFIX_MEBI
@ UMEASURE_PREFIX_MEBI
Binary prefix: mebi, 1024^2.
Definition: measunit.h:291
icu::UObject
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:223
UClassID
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:96
UErrorCode
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:415
icu::UMEASURE_PREFIX_EXA
@ UMEASURE_PREFIX_EXA
SI prefix: exa, 10^18.
Definition: measunit.h:131
icu::umeas_getPrefixBase
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 ...
icu::StringEnumeration
Base class for 'pure' C++ implementations of uenum api.
Definition: strenum.h:61
icu::UObject::getDynamicClassID
virtual UClassID getDynamicClassID() const
ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
icu::UMEASURE_PREFIX_GIGA
@ UMEASURE_PREFIX_GIGA
SI prefix: giga, 10^9.
Definition: measunit.h:152
icu::MeasureUnit::operator!=
bool operator!=(const UObject &other) const
Inequality operator.
Definition: measunit.h:443
icu::UMEASURE_PREFIX_TEBI
@ UMEASURE_PREFIX_TEBI
Binary prefix: tebi, 1024^4.
Definition: measunit.h:305
icu::UMEASURE_UNIT_MIXED
@ UMEASURE_UNIT_MIXED
A mixed unit, like hour+minute.
Definition: measunit.h:77
icu::UMEASURE_PREFIX_ZEBI
@ UMEASURE_PREFIX_ZEBI
Binary prefix: zebi, 1024^7.
Definition: measunit.h:326
icu::UMEASURE_PREFIX_INTERNAL_MIN_SI
@ UMEASURE_PREFIX_INTERNAL_MIN_SI
ICU use only.
Definition: measunit.h:258
icu::UMEASURE_PREFIX_INTERNAL_ONE_BIN
@ UMEASURE_PREFIX_INTERNAL_ONE_BIN
ICU use only.
Definition: measunit.h:268
icu::UMeasurePrefix
UMeasurePrefix
Enumeration for SI and binary prefixes, e.g.
Definition: measunit.h:91
icu::UMeasurePrefix
enum icu::UMeasurePrefix UMeasurePrefix
Enumeration for SI and binary prefixes, e.g.
icu::UMEASURE_PREFIX_KIBI
@ UMEASURE_PREFIX_KIBI
Binary prefix: kibi, 1024^1.
Definition: measunit.h:275
localpointer.h
C++ API: "Smart pointers" for use with and in ICU4C C++ code.
icu::UMEASURE_UNIT_SINGLE
@ UMEASURE_UNIT_SINGLE
A single unit, like kilojoule.
Definition: measunit.h:63
icu::LocalArray
"Smart pointer" class, deletes objects via the C++ array delete[] operator.
Definition: localpointer.h:366
icu::UMEASURE_PREFIX_INTERNAL_MIN_BIN
@ UMEASURE_PREFIX_INTERNAL_MIN_BIN
ICU use only.
Definition: measunit.h:283
icu::UMEASURE_PREFIX_ONE
@ UMEASURE_PREFIX_ONE
The absence of an SI or binary prefix.
Definition: measunit.h:101
U_CAPI
#define U_CAPI
This is used to declare a function as a public ICU C API.
Definition: umachine.h:110
icu::StringPiece
A string-like object that points to a sized piece of memory.
Definition: stringpiece.h:60
icu::umeas_getPrefixPower
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,...
unistr.h
C++ API: Unicode String.
icu::UMEASURE_PREFIX_YOBI
@ UMEASURE_PREFIX_YOBI
Binary prefix: yobi, 1024^8.
Definition: measunit.h:333
icu::UMEASURE_PREFIX_PETA
@ UMEASURE_PREFIX_PETA
SI prefix: peta, 10^15.
Definition: measunit.h:138
icu::UMeasureUnitComplexity
UMeasureUnitComplexity
Enumeration for unit complexity.
Definition: measunit.h:57
icu::UMEASURE_PREFIX_YOTTA
@ UMEASURE_PREFIX_YOTTA
SI prefix: yotta, 10^24.
Definition: measunit.h:108