ICU 77.1  77.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 
114 
121 
122 #ifndef U_HIDE_INTERNAL_API
123 
128 #ifndef U_HIDE_DRAFT_API
130 #else /* U_HIDE_DRAFT_API */
132 #endif /* U_HIDE_DRAFT_API */
133 
134 #endif /* U_HIDE_INTERNAL_API */
135 
142 
149 
156 
163 
170 
177 
184 
191 
198 
205 
212 
219 
226 
233 
240 
247 
254 
261 
268 
275 
282 
283 #ifndef U_HIDE_INTERNAL_API
284 
289 #ifndef U_HIDE_DRAFT_API
291 #else /* U_HIDE_DRAFT_API */
293 #endif /* U_HIDE_DRAFT_API */
294 
295 #endif // U_HIDE_INTERNAL_API
296 
297  // Cannot conditionalize the following with #ifndef U_HIDE_INTERNAL_API,
298  // used in definitions of non-internal enum values
305 
312 
313 #ifndef U_HIDE_INTERNAL_API
314 
320 #endif // U_HIDE_INTERNAL_API
321 
328 
335 
342 
349 
356 
363 
370 
371 #ifndef U_HIDE_INTERNAL_API
372 
378 #endif // U_HIDE_INTERNAL_API
380 
388 U_CAPI int32_t U_EXPORT2 umeas_getPrefixBase(UMeasurePrefix unitPrefix);
389 
396 U_CAPI int32_t U_EXPORT2 umeas_getPrefixPower(UMeasurePrefix unitPrefix);
397 
406  public:
407 
414  MeasureUnit();
415 
420  MeasureUnit(const MeasureUnit &other);
421 
426  MeasureUnit(MeasureUnit &&other) noexcept;
427 
444  static MeasureUnit forIdentifier(StringPiece identifier, UErrorCode& status);
445 
450  MeasureUnit &operator=(const MeasureUnit &other);
451 
456  MeasureUnit &operator=(MeasureUnit &&other) noexcept;
457 
463  virtual MeasureUnit* clone() const;
464 
469  virtual ~MeasureUnit();
470 
476  virtual bool operator==(const UObject& other) const;
477 
483  bool operator!=(const UObject& other) const {
484  return !(*this == other);
485  }
486 
494  const char *getType() const;
495 
503  const char *getSubtype() const;
504 
511  const char* getIdentifier() const;
512 
520  UMeasureUnitComplexity getComplexity(UErrorCode& status) const;
521 
536  MeasureUnit withPrefix(UMeasurePrefix prefix, UErrorCode& status) const;
537 
552  UMeasurePrefix getPrefix(UErrorCode& status) const;
553 
554 #ifndef U_HIDE_DRAFT_API
555 
570  MeasureUnit withConstantDenominator(uint64_t denominator, UErrorCode &status) const;
571 
588  uint64_t getConstantDenominator(UErrorCode &status) const;
589 
590 #endif /* U_HIDE_DRAFT_API */
591 
606  MeasureUnit withDimensionality(int32_t dimensionality, UErrorCode& status) const;
607 
621  int32_t getDimensionality(UErrorCode& status) const;
622 
637  MeasureUnit reciprocal(UErrorCode& status) const;
638 
656  MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;
657 
677  inline std::pair<LocalArray<MeasureUnit>, int32_t> splitToSingleUnits(UErrorCode& status) const;
678 
690  static int32_t getAvailable(
691  MeasureUnit *destArray,
692  int32_t destCapacity,
693  UErrorCode &errorCode);
694 
707  static int32_t getAvailable(
708  const char *type,
709  MeasureUnit *destArray,
710  int32_t destCapacity,
711  UErrorCode &errorCode);
712 
721  static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
722 
734  static UClassID U_EXPORT2 getStaticClassID();
735 
747  virtual UClassID getDynamicClassID() const override;
748 
749 #ifndef U_HIDE_INTERNAL_API
750 
755  int32_t getOffset() const;
756 #endif /* U_HIDE_INTERNAL_API */
757 
758 // All code between the "Start generated createXXX methods" comment and
759 // the "End generated createXXX methods" comment is auto generated code
760 // and must not be edited manually. For instructions on how to correctly
761 // update this code, refer to:
762 // docs/processes/release/tasks/updating-measure-unit.md
763 //
764 // Start generated createXXX methods
765 
773  static MeasureUnit *createGForce(UErrorCode &status);
774 
780  static MeasureUnit getGForce();
781 
789  static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
790 
796  static MeasureUnit getMeterPerSecondSquared();
797 
805  static MeasureUnit *createArcMinute(UErrorCode &status);
806 
812  static MeasureUnit getArcMinute();
813 
821  static MeasureUnit *createArcSecond(UErrorCode &status);
822 
828  static MeasureUnit getArcSecond();
829 
837  static MeasureUnit *createDegree(UErrorCode &status);
838 
844  static MeasureUnit getDegree();
845 
853  static MeasureUnit *createRadian(UErrorCode &status);
854 
860  static MeasureUnit getRadian();
861 
869  static MeasureUnit *createRevolutionAngle(UErrorCode &status);
870 
876  static MeasureUnit getRevolutionAngle();
877 
885  static MeasureUnit *createAcre(UErrorCode &status);
886 
892  static MeasureUnit getAcre();
893 
901  static MeasureUnit *createDunam(UErrorCode &status);
902 
908  static MeasureUnit getDunam();
909 
917  static MeasureUnit *createHectare(UErrorCode &status);
918 
924  static MeasureUnit getHectare();
925 
933  static MeasureUnit *createSquareCentimeter(UErrorCode &status);
934 
940  static MeasureUnit getSquareCentimeter();
941 
949  static MeasureUnit *createSquareFoot(UErrorCode &status);
950 
956  static MeasureUnit getSquareFoot();
957 
965  static MeasureUnit *createSquareInch(UErrorCode &status);
966 
972  static MeasureUnit getSquareInch();
973 
981  static MeasureUnit *createSquareKilometer(UErrorCode &status);
982 
988  static MeasureUnit getSquareKilometer();
989 
997  static MeasureUnit *createSquareMeter(UErrorCode &status);
998 
1004  static MeasureUnit getSquareMeter();
1005 
1013  static MeasureUnit *createSquareMile(UErrorCode &status);
1014 
1020  static MeasureUnit getSquareMile();
1021 
1029  static MeasureUnit *createSquareYard(UErrorCode &status);
1030 
1036  static MeasureUnit getSquareYard();
1037 
1045  static MeasureUnit *createItem(UErrorCode &status);
1046 
1052  static MeasureUnit getItem();
1053 
1061  static MeasureUnit *createKarat(UErrorCode &status);
1062 
1068  static MeasureUnit getKarat();
1069 
1077  static MeasureUnit *createMilligramOfglucosePerDeciliter(UErrorCode &status);
1078 
1084  static MeasureUnit getMilligramOfglucosePerDeciliter();
1085 
1093  static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
1094 
1100  static MeasureUnit getMilligramPerDeciliter();
1101 
1109  static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
1110 
1116  static MeasureUnit getMillimolePerLiter();
1117 
1125  static MeasureUnit *createMole(UErrorCode &status);
1126 
1132  static MeasureUnit getMole();
1133 
1141  static MeasureUnit *createPercent(UErrorCode &status);
1142 
1148  static MeasureUnit getPercent();
1149 
1157  static MeasureUnit *createPermille(UErrorCode &status);
1158 
1164  static MeasureUnit getPermille();
1165 
1173  static MeasureUnit *createPartPerMillion(UErrorCode &status);
1174 
1180  static MeasureUnit getPartPerMillion();
1181 
1189  static MeasureUnit *createPermyriad(UErrorCode &status);
1190 
1196  static MeasureUnit getPermyriad();
1197 
1198 #ifndef U_HIDE_DRAFT_API
1199 
1206  static MeasureUnit *createPortionPer1E9(UErrorCode &status);
1207 
1213  static MeasureUnit getPortionPer1E9();
1214 #endif /* U_HIDE_DRAFT_API */
1215 
1223  static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
1224 
1230  static MeasureUnit getLiterPer100Kilometers();
1231 
1239  static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
1240 
1246  static MeasureUnit getLiterPerKilometer();
1247 
1255  static MeasureUnit *createMilePerGallon(UErrorCode &status);
1256 
1262  static MeasureUnit getMilePerGallon();
1263 
1271  static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
1272 
1278  static MeasureUnit getMilePerGallonImperial();
1279 
1287  static MeasureUnit *createBit(UErrorCode &status);
1288 
1294  static MeasureUnit getBit();
1295 
1303  static MeasureUnit *createByte(UErrorCode &status);
1304 
1310  static MeasureUnit getByte();
1311 
1319  static MeasureUnit *createGigabit(UErrorCode &status);
1320 
1326  static MeasureUnit getGigabit();
1327 
1335  static MeasureUnit *createGigabyte(UErrorCode &status);
1336 
1342  static MeasureUnit getGigabyte();
1343 
1351  static MeasureUnit *createKilobit(UErrorCode &status);
1352 
1358  static MeasureUnit getKilobit();
1359 
1367  static MeasureUnit *createKilobyte(UErrorCode &status);
1368 
1374  static MeasureUnit getKilobyte();
1375 
1383  static MeasureUnit *createMegabit(UErrorCode &status);
1384 
1390  static MeasureUnit getMegabit();
1391 
1399  static MeasureUnit *createMegabyte(UErrorCode &status);
1400 
1406  static MeasureUnit getMegabyte();
1407 
1415  static MeasureUnit *createPetabyte(UErrorCode &status);
1416 
1422  static MeasureUnit getPetabyte();
1423 
1431  static MeasureUnit *createTerabit(UErrorCode &status);
1432 
1438  static MeasureUnit getTerabit();
1439 
1447  static MeasureUnit *createTerabyte(UErrorCode &status);
1448 
1454  static MeasureUnit getTerabyte();
1455 
1463  static MeasureUnit *createCentury(UErrorCode &status);
1464 
1470  static MeasureUnit getCentury();
1471 
1479  static MeasureUnit *createDay(UErrorCode &status);
1480 
1486  static MeasureUnit getDay();
1487 
1495  static MeasureUnit *createDayPerson(UErrorCode &status);
1496 
1502  static MeasureUnit getDayPerson();
1503 
1511  static MeasureUnit *createDecade(UErrorCode &status);
1512 
1518  static MeasureUnit getDecade();
1519 
1527  static MeasureUnit *createHour(UErrorCode &status);
1528 
1534  static MeasureUnit getHour();
1535 
1543  static MeasureUnit *createMicrosecond(UErrorCode &status);
1544 
1550  static MeasureUnit getMicrosecond();
1551 
1559  static MeasureUnit *createMillisecond(UErrorCode &status);
1560 
1566  static MeasureUnit getMillisecond();
1567 
1575  static MeasureUnit *createMinute(UErrorCode &status);
1576 
1582  static MeasureUnit getMinute();
1583 
1591  static MeasureUnit *createMonth(UErrorCode &status);
1592 
1598  static MeasureUnit getMonth();
1599 
1607  static MeasureUnit *createMonthPerson(UErrorCode &status);
1608 
1614  static MeasureUnit getMonthPerson();
1615 
1623  static MeasureUnit *createNanosecond(UErrorCode &status);
1624 
1630  static MeasureUnit getNanosecond();
1631 
1632 #ifndef U_HIDE_DRAFT_API
1633 
1640  static MeasureUnit *createNight(UErrorCode &status);
1641 
1647  static MeasureUnit getNight();
1648 #endif /* U_HIDE_DRAFT_API */
1649 
1657  static MeasureUnit *createQuarter(UErrorCode &status);
1658 
1664  static MeasureUnit getQuarter();
1665 
1673  static MeasureUnit *createSecond(UErrorCode &status);
1674 
1680  static MeasureUnit getSecond();
1681 
1689  static MeasureUnit *createWeek(UErrorCode &status);
1690 
1696  static MeasureUnit getWeek();
1697 
1705  static MeasureUnit *createWeekPerson(UErrorCode &status);
1706 
1712  static MeasureUnit getWeekPerson();
1713 
1721  static MeasureUnit *createYear(UErrorCode &status);
1722 
1728  static MeasureUnit getYear();
1729 
1737  static MeasureUnit *createYearPerson(UErrorCode &status);
1738 
1744  static MeasureUnit getYearPerson();
1745 
1753  static MeasureUnit *createAmpere(UErrorCode &status);
1754 
1760  static MeasureUnit getAmpere();
1761 
1769  static MeasureUnit *createMilliampere(UErrorCode &status);
1770 
1776  static MeasureUnit getMilliampere();
1777 
1785  static MeasureUnit *createOhm(UErrorCode &status);
1786 
1792  static MeasureUnit getOhm();
1793 
1801  static MeasureUnit *createVolt(UErrorCode &status);
1802 
1808  static MeasureUnit getVolt();
1809 
1817  static MeasureUnit *createBritishThermalUnit(UErrorCode &status);
1818 
1824  static MeasureUnit getBritishThermalUnit();
1825 
1833  static MeasureUnit *createCalorie(UErrorCode &status);
1834 
1840  static MeasureUnit getCalorie();
1841 
1849  static MeasureUnit *createElectronvolt(UErrorCode &status);
1850 
1856  static MeasureUnit getElectronvolt();
1857 
1865  static MeasureUnit *createFoodcalorie(UErrorCode &status);
1866 
1872  static MeasureUnit getFoodcalorie();
1873 
1881  static MeasureUnit *createJoule(UErrorCode &status);
1882 
1888  static MeasureUnit getJoule();
1889 
1897  static MeasureUnit *createKilocalorie(UErrorCode &status);
1898 
1904  static MeasureUnit getKilocalorie();
1905 
1913  static MeasureUnit *createKilojoule(UErrorCode &status);
1914 
1920  static MeasureUnit getKilojoule();
1921 
1929  static MeasureUnit *createKilowattHour(UErrorCode &status);
1930 
1936  static MeasureUnit getKilowattHour();
1937 
1945  static MeasureUnit *createThermUs(UErrorCode &status);
1946 
1952  static MeasureUnit getThermUs();
1953 
1961  static MeasureUnit *createKilowattHourPer100Kilometer(UErrorCode &status);
1962 
1968  static MeasureUnit getKilowattHourPer100Kilometer();
1969 
1977  static MeasureUnit *createNewton(UErrorCode &status);
1978 
1984  static MeasureUnit getNewton();
1985 
1993  static MeasureUnit *createPoundForce(UErrorCode &status);
1994 
2000  static MeasureUnit getPoundForce();
2001 
2009  static MeasureUnit *createGigahertz(UErrorCode &status);
2010 
2016  static MeasureUnit getGigahertz();
2017 
2025  static MeasureUnit *createHertz(UErrorCode &status);
2026 
2032  static MeasureUnit getHertz();
2033 
2041  static MeasureUnit *createKilohertz(UErrorCode &status);
2042 
2048  static MeasureUnit getKilohertz();
2049 
2057  static MeasureUnit *createMegahertz(UErrorCode &status);
2058 
2064  static MeasureUnit getMegahertz();
2065 
2073  static MeasureUnit *createDot(UErrorCode &status);
2074 
2080  static MeasureUnit getDot();
2081 
2089  static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
2090 
2096  static MeasureUnit getDotPerCentimeter();
2097 
2105  static MeasureUnit *createDotPerInch(UErrorCode &status);
2106 
2112  static MeasureUnit getDotPerInch();
2113 
2121  static MeasureUnit *createEm(UErrorCode &status);
2122 
2128  static MeasureUnit getEm();
2129 
2137  static MeasureUnit *createMegapixel(UErrorCode &status);
2138 
2144  static MeasureUnit getMegapixel();
2145 
2153  static MeasureUnit *createPixel(UErrorCode &status);
2154 
2160  static MeasureUnit getPixel();
2161 
2169  static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
2170 
2176  static MeasureUnit getPixelPerCentimeter();
2177 
2185  static MeasureUnit *createPixelPerInch(UErrorCode &status);
2186 
2192  static MeasureUnit getPixelPerInch();
2193 
2201  static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
2202 
2208  static MeasureUnit getAstronomicalUnit();
2209 
2217  static MeasureUnit *createCentimeter(UErrorCode &status);
2218 
2224  static MeasureUnit getCentimeter();
2225 
2233  static MeasureUnit *createDecimeter(UErrorCode &status);
2234 
2240  static MeasureUnit getDecimeter();
2241 
2249  static MeasureUnit *createEarthRadius(UErrorCode &status);
2250 
2256  static MeasureUnit getEarthRadius();
2257 
2265  static MeasureUnit *createFathom(UErrorCode &status);
2266 
2272  static MeasureUnit getFathom();
2273 
2281  static MeasureUnit *createFoot(UErrorCode &status);
2282 
2288  static MeasureUnit getFoot();
2289 
2297  static MeasureUnit *createFurlong(UErrorCode &status);
2298 
2304  static MeasureUnit getFurlong();
2305 
2313  static MeasureUnit *createInch(UErrorCode &status);
2314 
2320  static MeasureUnit getInch();
2321 
2329  static MeasureUnit *createKilometer(UErrorCode &status);
2330 
2336  static MeasureUnit getKilometer();
2337 
2345  static MeasureUnit *createLightYear(UErrorCode &status);
2346 
2352  static MeasureUnit getLightYear();
2353 
2361  static MeasureUnit *createMeter(UErrorCode &status);
2362 
2368  static MeasureUnit getMeter();
2369 
2377  static MeasureUnit *createMicrometer(UErrorCode &status);
2378 
2384  static MeasureUnit getMicrometer();
2385 
2393  static MeasureUnit *createMile(UErrorCode &status);
2394 
2400  static MeasureUnit getMile();
2401 
2409  static MeasureUnit *createMileScandinavian(UErrorCode &status);
2410 
2416  static MeasureUnit getMileScandinavian();
2417 
2425  static MeasureUnit *createMillimeter(UErrorCode &status);
2426 
2432  static MeasureUnit getMillimeter();
2433 
2441  static MeasureUnit *createNanometer(UErrorCode &status);
2442 
2448  static MeasureUnit getNanometer();
2449 
2457  static MeasureUnit *createNauticalMile(UErrorCode &status);
2458 
2464  static MeasureUnit getNauticalMile();
2465 
2473  static MeasureUnit *createParsec(UErrorCode &status);
2474 
2480  static MeasureUnit getParsec();
2481 
2489  static MeasureUnit *createPicometer(UErrorCode &status);
2490 
2496  static MeasureUnit getPicometer();
2497 
2505  static MeasureUnit *createPoint(UErrorCode &status);
2506 
2512  static MeasureUnit getPoint();
2513 
2521  static MeasureUnit *createSolarRadius(UErrorCode &status);
2522 
2528  static MeasureUnit getSolarRadius();
2529 
2537  static MeasureUnit *createYard(UErrorCode &status);
2538 
2544  static MeasureUnit getYard();
2545 
2553  static MeasureUnit *createCandela(UErrorCode &status);
2554 
2560  static MeasureUnit getCandela();
2561 
2569  static MeasureUnit *createLumen(UErrorCode &status);
2570 
2576  static MeasureUnit getLumen();
2577 
2585  static MeasureUnit *createLux(UErrorCode &status);
2586 
2592  static MeasureUnit getLux();
2593 
2601  static MeasureUnit *createSolarLuminosity(UErrorCode &status);
2602 
2608  static MeasureUnit getSolarLuminosity();
2609 
2617  static MeasureUnit *createCarat(UErrorCode &status);
2618 
2624  static MeasureUnit getCarat();
2625 
2633  static MeasureUnit *createDalton(UErrorCode &status);
2634 
2640  static MeasureUnit getDalton();
2641 
2649  static MeasureUnit *createEarthMass(UErrorCode &status);
2650 
2656  static MeasureUnit getEarthMass();
2657 
2665  static MeasureUnit *createGrain(UErrorCode &status);
2666 
2672  static MeasureUnit getGrain();
2673 
2681  static MeasureUnit *createGram(UErrorCode &status);
2682 
2688  static MeasureUnit getGram();
2689 
2697  static MeasureUnit *createKilogram(UErrorCode &status);
2698 
2704  static MeasureUnit getKilogram();
2705 
2713  static MeasureUnit *createMicrogram(UErrorCode &status);
2714 
2720  static MeasureUnit getMicrogram();
2721 
2729  static MeasureUnit *createMilligram(UErrorCode &status);
2730 
2736  static MeasureUnit getMilligram();
2737 
2745  static MeasureUnit *createOunce(UErrorCode &status);
2746 
2752  static MeasureUnit getOunce();
2753 
2761  static MeasureUnit *createOunceTroy(UErrorCode &status);
2762 
2768  static MeasureUnit getOunceTroy();
2769 
2777  static MeasureUnit *createPound(UErrorCode &status);
2778 
2784  static MeasureUnit getPound();
2785 
2793  static MeasureUnit *createSolarMass(UErrorCode &status);
2794 
2800  static MeasureUnit getSolarMass();
2801 
2809  static MeasureUnit *createStone(UErrorCode &status);
2810 
2816  static MeasureUnit getStone();
2817 
2825  static MeasureUnit *createTon(UErrorCode &status);
2826 
2832  static MeasureUnit getTon();
2833 
2841  static MeasureUnit *createTonne(UErrorCode &status);
2842 
2848  static MeasureUnit getTonne();
2849 
2861  static MeasureUnit *createMetricTon(UErrorCode &status);
2862 
2872  static MeasureUnit getMetricTon();
2873 
2881  static MeasureUnit *createGigawatt(UErrorCode &status);
2882 
2888  static MeasureUnit getGigawatt();
2889 
2897  static MeasureUnit *createHorsepower(UErrorCode &status);
2898 
2904  static MeasureUnit getHorsepower();
2905 
2913  static MeasureUnit *createKilowatt(UErrorCode &status);
2914 
2920  static MeasureUnit getKilowatt();
2921 
2929  static MeasureUnit *createMegawatt(UErrorCode &status);
2930 
2936  static MeasureUnit getMegawatt();
2937 
2945  static MeasureUnit *createMilliwatt(UErrorCode &status);
2946 
2952  static MeasureUnit getMilliwatt();
2953 
2961  static MeasureUnit *createWatt(UErrorCode &status);
2962 
2968  static MeasureUnit getWatt();
2969 
2977  static MeasureUnit *createAtmosphere(UErrorCode &status);
2978 
2984  static MeasureUnit getAtmosphere();
2985 
2993  static MeasureUnit *createBar(UErrorCode &status);
2994 
3000  static MeasureUnit getBar();
3001 
3009  static MeasureUnit *createGasolineEnergyDensity(UErrorCode &status);
3010 
3016  static MeasureUnit getGasolineEnergyDensity();
3017 
3025  static MeasureUnit *createHectopascal(UErrorCode &status);
3026 
3032  static MeasureUnit getHectopascal();
3033 
3041  static MeasureUnit *createInchHg(UErrorCode &status);
3042 
3048  static MeasureUnit getInchHg();
3049 
3057  static MeasureUnit *createKilopascal(UErrorCode &status);
3058 
3064  static MeasureUnit getKilopascal();
3065 
3073  static MeasureUnit *createMegapascal(UErrorCode &status);
3074 
3080  static MeasureUnit getMegapascal();
3081 
3089  static MeasureUnit *createMillibar(UErrorCode &status);
3090 
3096  static MeasureUnit getMillibar();
3097 
3105  static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
3106 
3112  static MeasureUnit getMillimeterOfMercury();
3113 
3121  static MeasureUnit *createPascal(UErrorCode &status);
3122 
3128  static MeasureUnit getPascal();
3129 
3137  static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
3138 
3144  static MeasureUnit getPoundPerSquareInch();
3145 
3153  static MeasureUnit *createBeaufort(UErrorCode &status);
3154 
3160  static MeasureUnit getBeaufort();
3161 
3169  static MeasureUnit *createKilometerPerHour(UErrorCode &status);
3170 
3176  static MeasureUnit getKilometerPerHour();
3177 
3185  static MeasureUnit *createKnot(UErrorCode &status);
3186 
3192  static MeasureUnit getKnot();
3193 
3194 #ifndef U_HIDE_DRAFT_API
3195 
3202  static MeasureUnit *createLightSpeed(UErrorCode &status);
3203 
3209  static MeasureUnit getLightSpeed();
3210 #endif /* U_HIDE_DRAFT_API */
3211 
3219  static MeasureUnit *createMeterPerSecond(UErrorCode &status);
3220 
3226  static MeasureUnit getMeterPerSecond();
3227 
3235  static MeasureUnit *createMilePerHour(UErrorCode &status);
3236 
3242  static MeasureUnit getMilePerHour();
3243 
3251  static MeasureUnit *createCelsius(UErrorCode &status);
3252 
3258  static MeasureUnit getCelsius();
3259 
3267  static MeasureUnit *createFahrenheit(UErrorCode &status);
3268 
3274  static MeasureUnit getFahrenheit();
3275 
3283  static MeasureUnit *createGenericTemperature(UErrorCode &status);
3284 
3290  static MeasureUnit getGenericTemperature();
3291 
3299  static MeasureUnit *createKelvin(UErrorCode &status);
3300 
3306  static MeasureUnit getKelvin();
3307 
3315  static MeasureUnit *createNewtonMeter(UErrorCode &status);
3316 
3322  static MeasureUnit getNewtonMeter();
3323 
3331  static MeasureUnit *createPoundFoot(UErrorCode &status);
3332 
3338  static MeasureUnit getPoundFoot();
3339 
3347  static MeasureUnit *createAcreFoot(UErrorCode &status);
3348 
3354  static MeasureUnit getAcreFoot();
3355 
3363  static MeasureUnit *createBarrel(UErrorCode &status);
3364 
3370  static MeasureUnit getBarrel();
3371 
3379  static MeasureUnit *createBushel(UErrorCode &status);
3380 
3386  static MeasureUnit getBushel();
3387 
3395  static MeasureUnit *createCentiliter(UErrorCode &status);
3396 
3402  static MeasureUnit getCentiliter();
3403 
3411  static MeasureUnit *createCubicCentimeter(UErrorCode &status);
3412 
3418  static MeasureUnit getCubicCentimeter();
3419 
3427  static MeasureUnit *createCubicFoot(UErrorCode &status);
3428 
3434  static MeasureUnit getCubicFoot();
3435 
3443  static MeasureUnit *createCubicInch(UErrorCode &status);
3444 
3450  static MeasureUnit getCubicInch();
3451 
3459  static MeasureUnit *createCubicKilometer(UErrorCode &status);
3460 
3466  static MeasureUnit getCubicKilometer();
3467 
3475  static MeasureUnit *createCubicMeter(UErrorCode &status);
3476 
3482  static MeasureUnit getCubicMeter();
3483 
3491  static MeasureUnit *createCubicMile(UErrorCode &status);
3492 
3498  static MeasureUnit getCubicMile();
3499 
3507  static MeasureUnit *createCubicYard(UErrorCode &status);
3508 
3514  static MeasureUnit getCubicYard();
3515 
3523  static MeasureUnit *createCup(UErrorCode &status);
3524 
3530  static MeasureUnit getCup();
3531 
3539  static MeasureUnit *createCupMetric(UErrorCode &status);
3540 
3546  static MeasureUnit getCupMetric();
3547 
3555  static MeasureUnit *createDeciliter(UErrorCode &status);
3556 
3562  static MeasureUnit getDeciliter();
3563 
3571  static MeasureUnit *createDessertSpoon(UErrorCode &status);
3572 
3578  static MeasureUnit getDessertSpoon();
3579 
3587  static MeasureUnit *createDessertSpoonImperial(UErrorCode &status);
3588 
3594  static MeasureUnit getDessertSpoonImperial();
3595 
3603  static MeasureUnit *createDram(UErrorCode &status);
3604 
3610  static MeasureUnit getDram();
3611 
3619  static MeasureUnit *createDrop(UErrorCode &status);
3620 
3626  static MeasureUnit getDrop();
3627 
3635  static MeasureUnit *createFluidOunce(UErrorCode &status);
3636 
3642  static MeasureUnit getFluidOunce();
3643 
3651  static MeasureUnit *createFluidOunceImperial(UErrorCode &status);
3652 
3658  static MeasureUnit getFluidOunceImperial();
3659 
3667  static MeasureUnit *createGallon(UErrorCode &status);
3668 
3674  static MeasureUnit getGallon();
3675 
3683  static MeasureUnit *createGallonImperial(UErrorCode &status);
3684 
3690  static MeasureUnit getGallonImperial();
3691 
3699  static MeasureUnit *createHectoliter(UErrorCode &status);
3700 
3706  static MeasureUnit getHectoliter();
3707 
3715  static MeasureUnit *createJigger(UErrorCode &status);
3716 
3722  static MeasureUnit getJigger();
3723 
3731  static MeasureUnit *createLiter(UErrorCode &status);
3732 
3738  static MeasureUnit getLiter();
3739 
3747  static MeasureUnit *createMegaliter(UErrorCode &status);
3748 
3754  static MeasureUnit getMegaliter();
3755 
3763  static MeasureUnit *createMilliliter(UErrorCode &status);
3764 
3770  static MeasureUnit getMilliliter();
3771 
3779  static MeasureUnit *createPinch(UErrorCode &status);
3780 
3786  static MeasureUnit getPinch();
3787 
3795  static MeasureUnit *createPint(UErrorCode &status);
3796 
3802  static MeasureUnit getPint();
3803 
3811  static MeasureUnit *createPintMetric(UErrorCode &status);
3812 
3818  static MeasureUnit getPintMetric();
3819 
3827  static MeasureUnit *createQuart(UErrorCode &status);
3828 
3834  static MeasureUnit getQuart();
3835 
3843  static MeasureUnit *createQuartImperial(UErrorCode &status);
3844 
3850  static MeasureUnit getQuartImperial();
3851 
3859  static MeasureUnit *createTablespoon(UErrorCode &status);
3860 
3866  static MeasureUnit getTablespoon();
3867 
3875  static MeasureUnit *createTeaspoon(UErrorCode &status);
3876 
3882  static MeasureUnit getTeaspoon();
3883 
3884 // End generated createXXX methods
3885 
3886  protected:
3887 
3888 #ifndef U_HIDE_INTERNAL_API
3889 
3893  void initTime(const char *timeId);
3894 
3899  void initCurrency(StringPiece isoCurrency);
3900 
3901 #endif /* U_HIDE_INTERNAL_API */
3902 
3903 private:
3904 
3905  // Used by new draft APIs in ICU 67. If non-null, fImpl is owned by the
3906  // MeasureUnit.
3907  MeasureUnitImpl* fImpl;
3908 
3909  // An index into a static string list in measunit.cpp. If set to -1, fImpl
3910  // is in use instead of fTypeId and fSubTypeId.
3911  int16_t fSubTypeId;
3912  // An index into a static string list in measunit.cpp. If set to -1, fImpl
3913  // is in use instead of fTypeId and fSubTypeId.
3914  int8_t fTypeId;
3915 
3916  MeasureUnit(int32_t typeId, int32_t subTypeId);
3917  MeasureUnit(MeasureUnitImpl&& impl);
3918  void setTo(int32_t typeId, int32_t subTypeId);
3919  static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
3920 
3928  static bool findBySubType(StringPiece subType, MeasureUnit* output);
3929 
3931  LocalArray<MeasureUnit> splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const;
3932 
3933  friend class MeasureUnitImpl;
3934 
3935  // For access to findBySubType
3936  friend class number::impl::LongNameHandler;
3937 };
3938 
3939 // inline impl of @stable ICU 68 method
3940 inline std::pair<LocalArray<MeasureUnit>, int32_t>
3941 MeasureUnit::splitToSingleUnits(UErrorCode& status) const {
3942  int32_t length;
3943  auto array = splitToSingleUnitsImpl(length, status);
3944  return std::make_pair(std::move(array), length);
3945 }
3946 
3947 U_NAMESPACE_END
3948 
3949 #endif // !UNCONFIG_NO_FORMATTING
3950 
3951 #endif /* U_SHOW_CPLUSPLUS_API */
3952 
3953 #endif // __MEASUREUNIT_H__
SI prefix: femto, 10^-15.
Definition: measunit.h:246
SI prefix: peta, 10^15.
Definition: measunit.h:155
Binary prefix: yobi, 1024^8.
Definition: measunit.h:369
The absence of an SI or binary prefix.
Definition: measunit.h:99
SI prefix: atto, 10^-18.
Definition: measunit.h:253
A unit such as length, mass, volume, currency, etc.
Definition: measunit.h:405
#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:183
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:348
Binary prefix: exbi, 1024^6.
Definition: measunit.h:355
SI prefix: zepto, 10^-21.
Definition: measunit.h:260
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:218
SI prefix: quecto, 10^-30.
Definition: measunit.h:281
SI prefix: yocto, 10^-24.
Definition: measunit.h:267
Binary prefix: gibi, 1024^3.
Definition: measunit.h:334
Base class for &#39;pure&#39; C++ implementations of uenum api.
Definition: strenum.h:61
SI prefix: nano, 10^-9.
Definition: measunit.h:232
SI prefix: deka, 10^1.
Definition: measunit.h:197
Binary prefix: mebi, 1024^2.
Definition: measunit.h:327
SI prefix: ronto, 10^-27.
Definition: measunit.h:274
SI prefix: centi, 10^-2.
Definition: measunit.h:211
SI prefix: deci, 10^-1.
Definition: measunit.h:204
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:316
SI prefix: tera, 10^12.
Definition: measunit.h:162
SI prefix: mega, 10^6.
Definition: measunit.h:176
SI prefix: giga, 10^9.
Definition: measunit.h:169
SI prefix: pico, 10^-12.
Definition: measunit.h:239
SI prefix: zetta, 10^21.
Definition: measunit.h:141
SI prefix: micro, 10^-6.
Definition: measunit.h:225
A mixed unit, like hour+minute.
Definition: measunit.h:75
Binary prefix: tebi, 1024^4.
Definition: measunit.h:341
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:120
SI prefix: exa, 10^18.
Definition: measunit.h:148
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:362
UMeasurePrefix
Enumeration for SI and binary prefixes, e.g.
Definition: measunit.h:89
bool operator!=(const UObject &other) const
Inequality operator.
Definition: measunit.h:483
U_CAPI int32_t umeas_getPrefixPower(UMeasurePrefix unitPrefix)
Returns the exponent of the factor associated with the given unit prefix, for example 3 for kilo...
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:430
SI prefix: ronna, 10^27.
Definition: measunit.h:113
Binary prefix: kibi, 1024^1.
Definition: measunit.h:311
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:190
A string-like object that points to a sized piece of memory.
Definition: stringpiece.h:61
UObject is the common ICU &quot;boilerplate&quot; class.
Definition: uobject.h:223
UMeasureUnitComplexity
Enumeration for unit complexity.
Definition: measunit.h:55