ICU 67.1  67.1
measunit.h
Go to the documentation of this file.
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 **********************************************************************
5 * Copyright (c) 2004-2016, International Business Machines
6 * Corporation and others. All Rights Reserved.
7 **********************************************************************
8 * Author: Alan Liu
9 * Created: April 26, 2004
10 * Since: ICU 3.0
11 **********************************************************************
12 */
13 #ifndef __MEASUREUNIT_H__
14 #define __MEASUREUNIT_H__
15 
16 #include "unicode/utypes.h"
17 
18 #if U_SHOW_CPLUSPLUS_API
19 
20 #if !UCONFIG_NO_FORMATTING
21 
22 #include "unicode/unistr.h"
23 #include "unicode/localpointer.h"
24 
30 U_NAMESPACE_BEGIN
31 
32 class StringEnumeration;
33 struct MeasureUnitImpl;
34 
35 #ifndef U_HIDE_DRAFT_API
36 
58 
65 
72 };
73 
79 typedef enum UMeasureSIPrefix {
80 
87 
94 
101 
108 
115 
122 
129 
136 
143 
150 
157 
164 
171 
178 
185 
192 
199 
206 
213 
220 
228 #endif // U_HIDE_DRAFT_API
229 
238  public:
239 
245  MeasureUnit();
246 
251  MeasureUnit(const MeasureUnit &other);
252 
253 #ifndef U_HIDE_DRAFT_API
254 
258  MeasureUnit(MeasureUnit &&other) noexcept;
259 
272  static MeasureUnit forIdentifier(StringPiece identifier, UErrorCode& status);
273 #endif // U_HIDE_DRAFT_API
274 
279  MeasureUnit &operator=(const MeasureUnit &other);
280 
281 #ifndef U_HIDE_DRAFT_API
282 
286  MeasureUnit &operator=(MeasureUnit &&other) noexcept;
287 #endif // U_HIDE_DRAFT_API
288 
294  virtual MeasureUnit* clone() const;
295 
300  virtual ~MeasureUnit();
301 
307  virtual UBool operator==(const UObject& other) const;
308 
314  UBool operator!=(const UObject& other) const {
315  return !(*this == other);
316  }
317 
325  const char *getType() const;
326 
334  const char *getSubtype() const;
335 
336 #ifndef U_HIDE_DRAFT_API
337 
343  const char* getIdentifier() const;
344 
352  UMeasureUnitComplexity getComplexity(UErrorCode& status) const;
353 
368  MeasureUnit withSIPrefix(UMeasureSIPrefix prefix, UErrorCode& status) const;
369 
381  UMeasureSIPrefix getSIPrefix(UErrorCode& status) const;
382 
395  MeasureUnit withDimensionality(int32_t dimensionality, UErrorCode& status) const;
396 
408  int32_t getDimensionality(UErrorCode& status) const;
409 
422  MeasureUnit reciprocal(UErrorCode& status) const;
423 
441  MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;
442 #endif // U_HIDE_DRAFT_API
443 
444 #ifndef U_HIDE_INTERNAL_API
445 
463  LocalArray<MeasureUnit> splitToSingleUnits(int32_t& outCount, UErrorCode& status) const;
464 #endif // U_HIDE_INTERNAL_API
465 
477  static int32_t getAvailable(
478  MeasureUnit *destArray,
479  int32_t destCapacity,
480  UErrorCode &errorCode);
481 
494  static int32_t getAvailable(
495  const char *type,
496  MeasureUnit *destArray,
497  int32_t destCapacity,
498  UErrorCode &errorCode);
499 
508  static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
509 
521  static UClassID U_EXPORT2 getStaticClassID(void);
522 
534  virtual UClassID getDynamicClassID(void) const;
535 
536 #ifndef U_HIDE_INTERNAL_API
537 
543  int32_t getIndex() const;
544 
550  static int32_t getIndexCount();
551 
558  static int32_t internalGetIndexForTypeAndSubtype(const char *type, const char *subtype);
559 
564  static MeasureUnit resolveUnitPerUnit(
565  const MeasureUnit &unit, const MeasureUnit &perUnit, bool* isResolved);
566 #endif /* U_HIDE_INTERNAL_API */
567 
568 // All code between the "Start generated createXXX methods" comment and
569 // the "End generated createXXX methods" comment is auto generated code
570 // and must not be edited manually. For instructions on how to correctly
571 // update this code, refer to:
572 // http://site.icu-project.org/design/formatting/measureformat/updating-measure-unit
573 //
574 // Start generated createXXX methods
575 
583  static MeasureUnit *createGForce(UErrorCode &status);
584 
590  static MeasureUnit getGForce();
591 
599  static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
600 
606  static MeasureUnit getMeterPerSecondSquared();
607 
615  static MeasureUnit *createArcMinute(UErrorCode &status);
616 
622  static MeasureUnit getArcMinute();
623 
631  static MeasureUnit *createArcSecond(UErrorCode &status);
632 
638  static MeasureUnit getArcSecond();
639 
647  static MeasureUnit *createDegree(UErrorCode &status);
648 
654  static MeasureUnit getDegree();
655 
663  static MeasureUnit *createRadian(UErrorCode &status);
664 
670  static MeasureUnit getRadian();
671 
679  static MeasureUnit *createRevolutionAngle(UErrorCode &status);
680 
686  static MeasureUnit getRevolutionAngle();
687 
695  static MeasureUnit *createAcre(UErrorCode &status);
696 
702  static MeasureUnit getAcre();
703 
711  static MeasureUnit *createDunam(UErrorCode &status);
712 
718  static MeasureUnit getDunam();
719 
727  static MeasureUnit *createHectare(UErrorCode &status);
728 
734  static MeasureUnit getHectare();
735 
743  static MeasureUnit *createSquareCentimeter(UErrorCode &status);
744 
750  static MeasureUnit getSquareCentimeter();
751 
759  static MeasureUnit *createSquareFoot(UErrorCode &status);
760 
766  static MeasureUnit getSquareFoot();
767 
775  static MeasureUnit *createSquareInch(UErrorCode &status);
776 
782  static MeasureUnit getSquareInch();
783 
791  static MeasureUnit *createSquareKilometer(UErrorCode &status);
792 
798  static MeasureUnit getSquareKilometer();
799 
807  static MeasureUnit *createSquareMeter(UErrorCode &status);
808 
814  static MeasureUnit getSquareMeter();
815 
823  static MeasureUnit *createSquareMile(UErrorCode &status);
824 
830  static MeasureUnit getSquareMile();
831 
839  static MeasureUnit *createSquareYard(UErrorCode &status);
840 
846  static MeasureUnit getSquareYard();
847 
855  static MeasureUnit *createKarat(UErrorCode &status);
856 
862  static MeasureUnit getKarat();
863 
871  static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
872 
878  static MeasureUnit getMilligramPerDeciliter();
879 
887  static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
888 
894  static MeasureUnit getMillimolePerLiter();
895 
903  static MeasureUnit *createMole(UErrorCode &status);
904 
910  static MeasureUnit getMole();
911 
919  static MeasureUnit *createPartPerMillion(UErrorCode &status);
920 
926  static MeasureUnit getPartPerMillion();
927 
935  static MeasureUnit *createPercent(UErrorCode &status);
936 
942  static MeasureUnit getPercent();
943 
951  static MeasureUnit *createPermille(UErrorCode &status);
952 
958  static MeasureUnit getPermille();
959 
967  static MeasureUnit *createPermyriad(UErrorCode &status);
968 
974  static MeasureUnit getPermyriad();
975 
983  static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
984 
990  static MeasureUnit getLiterPer100Kilometers();
991 
999  static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
1000 
1006  static MeasureUnit getLiterPerKilometer();
1007 
1015  static MeasureUnit *createMilePerGallon(UErrorCode &status);
1016 
1022  static MeasureUnit getMilePerGallon();
1023 
1031  static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
1032 
1038  static MeasureUnit getMilePerGallonImperial();
1039 
1047  static MeasureUnit *createBit(UErrorCode &status);
1048 
1054  static MeasureUnit getBit();
1055 
1063  static MeasureUnit *createByte(UErrorCode &status);
1064 
1070  static MeasureUnit getByte();
1071 
1079  static MeasureUnit *createGigabit(UErrorCode &status);
1080 
1086  static MeasureUnit getGigabit();
1087 
1095  static MeasureUnit *createGigabyte(UErrorCode &status);
1096 
1102  static MeasureUnit getGigabyte();
1103 
1111  static MeasureUnit *createKilobit(UErrorCode &status);
1112 
1118  static MeasureUnit getKilobit();
1119 
1127  static MeasureUnit *createKilobyte(UErrorCode &status);
1128 
1134  static MeasureUnit getKilobyte();
1135 
1143  static MeasureUnit *createMegabit(UErrorCode &status);
1144 
1150  static MeasureUnit getMegabit();
1151 
1159  static MeasureUnit *createMegabyte(UErrorCode &status);
1160 
1166  static MeasureUnit getMegabyte();
1167 
1175  static MeasureUnit *createPetabyte(UErrorCode &status);
1176 
1182  static MeasureUnit getPetabyte();
1183 
1191  static MeasureUnit *createTerabit(UErrorCode &status);
1192 
1198  static MeasureUnit getTerabit();
1199 
1207  static MeasureUnit *createTerabyte(UErrorCode &status);
1208 
1214  static MeasureUnit getTerabyte();
1215 
1223  static MeasureUnit *createCentury(UErrorCode &status);
1224 
1230  static MeasureUnit getCentury();
1231 
1239  static MeasureUnit *createDay(UErrorCode &status);
1240 
1246  static MeasureUnit getDay();
1247 
1255  static MeasureUnit *createDayPerson(UErrorCode &status);
1256 
1262  static MeasureUnit getDayPerson();
1263 
1264 #ifndef U_HIDE_DRAFT_API
1265 
1272  static MeasureUnit *createDecade(UErrorCode &status);
1273 
1279  static MeasureUnit getDecade();
1280 #endif /* U_HIDE_DRAFT_API */
1281 
1289  static MeasureUnit *createHour(UErrorCode &status);
1290 
1296  static MeasureUnit getHour();
1297 
1305  static MeasureUnit *createMicrosecond(UErrorCode &status);
1306 
1312  static MeasureUnit getMicrosecond();
1313 
1321  static MeasureUnit *createMillisecond(UErrorCode &status);
1322 
1328  static MeasureUnit getMillisecond();
1329 
1337  static MeasureUnit *createMinute(UErrorCode &status);
1338 
1344  static MeasureUnit getMinute();
1345 
1353  static MeasureUnit *createMonth(UErrorCode &status);
1354 
1360  static MeasureUnit getMonth();
1361 
1369  static MeasureUnit *createMonthPerson(UErrorCode &status);
1370 
1376  static MeasureUnit getMonthPerson();
1377 
1385  static MeasureUnit *createNanosecond(UErrorCode &status);
1386 
1392  static MeasureUnit getNanosecond();
1393 
1401  static MeasureUnit *createSecond(UErrorCode &status);
1402 
1408  static MeasureUnit getSecond();
1409 
1417  static MeasureUnit *createWeek(UErrorCode &status);
1418 
1424  static MeasureUnit getWeek();
1425 
1433  static MeasureUnit *createWeekPerson(UErrorCode &status);
1434 
1440  static MeasureUnit getWeekPerson();
1441 
1449  static MeasureUnit *createYear(UErrorCode &status);
1450 
1456  static MeasureUnit getYear();
1457 
1465  static MeasureUnit *createYearPerson(UErrorCode &status);
1466 
1472  static MeasureUnit getYearPerson();
1473 
1481  static MeasureUnit *createAmpere(UErrorCode &status);
1482 
1488  static MeasureUnit getAmpere();
1489 
1497  static MeasureUnit *createMilliampere(UErrorCode &status);
1498 
1504  static MeasureUnit getMilliampere();
1505 
1513  static MeasureUnit *createOhm(UErrorCode &status);
1514 
1520  static MeasureUnit getOhm();
1521 
1529  static MeasureUnit *createVolt(UErrorCode &status);
1530 
1536  static MeasureUnit getVolt();
1537 
1545  static MeasureUnit *createBritishThermalUnit(UErrorCode &status);
1546 
1552  static MeasureUnit getBritishThermalUnit();
1553 
1561  static MeasureUnit *createCalorie(UErrorCode &status);
1562 
1568  static MeasureUnit getCalorie();
1569 
1577  static MeasureUnit *createElectronvolt(UErrorCode &status);
1578 
1584  static MeasureUnit getElectronvolt();
1585 
1593  static MeasureUnit *createFoodcalorie(UErrorCode &status);
1594 
1600  static MeasureUnit getFoodcalorie();
1601 
1609  static MeasureUnit *createJoule(UErrorCode &status);
1610 
1616  static MeasureUnit getJoule();
1617 
1625  static MeasureUnit *createKilocalorie(UErrorCode &status);
1626 
1632  static MeasureUnit getKilocalorie();
1633 
1641  static MeasureUnit *createKilojoule(UErrorCode &status);
1642 
1648  static MeasureUnit getKilojoule();
1649 
1657  static MeasureUnit *createKilowattHour(UErrorCode &status);
1658 
1664  static MeasureUnit getKilowattHour();
1665 
1666 #ifndef U_HIDE_DRAFT_API
1667 
1674  static MeasureUnit *createThermUs(UErrorCode &status);
1675 
1681  static MeasureUnit getThermUs();
1682 #endif /* U_HIDE_DRAFT_API */
1683 
1691  static MeasureUnit *createNewton(UErrorCode &status);
1692 
1698  static MeasureUnit getNewton();
1699 
1707  static MeasureUnit *createPoundForce(UErrorCode &status);
1708 
1714  static MeasureUnit getPoundForce();
1715 
1723  static MeasureUnit *createGigahertz(UErrorCode &status);
1724 
1730  static MeasureUnit getGigahertz();
1731 
1739  static MeasureUnit *createHertz(UErrorCode &status);
1740 
1746  static MeasureUnit getHertz();
1747 
1755  static MeasureUnit *createKilohertz(UErrorCode &status);
1756 
1762  static MeasureUnit getKilohertz();
1763 
1771  static MeasureUnit *createMegahertz(UErrorCode &status);
1772 
1778  static MeasureUnit getMegahertz();
1779 
1780 #ifndef U_HIDE_DRAFT_API
1781 
1788  static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
1789 
1795  static MeasureUnit getDotPerCentimeter();
1796 #endif /* U_HIDE_DRAFT_API */
1797 
1798 #ifndef U_HIDE_DRAFT_API
1799 
1806  static MeasureUnit *createDotPerInch(UErrorCode &status);
1807 
1813  static MeasureUnit getDotPerInch();
1814 #endif /* U_HIDE_DRAFT_API */
1815 
1816 #ifndef U_HIDE_DRAFT_API
1817 
1824  static MeasureUnit *createEm(UErrorCode &status);
1825 
1831  static MeasureUnit getEm();
1832 #endif /* U_HIDE_DRAFT_API */
1833 
1834 #ifndef U_HIDE_DRAFT_API
1835 
1842  static MeasureUnit *createMegapixel(UErrorCode &status);
1843 
1849  static MeasureUnit getMegapixel();
1850 #endif /* U_HIDE_DRAFT_API */
1851 
1852 #ifndef U_HIDE_DRAFT_API
1853 
1860  static MeasureUnit *createPixel(UErrorCode &status);
1861 
1867  static MeasureUnit getPixel();
1868 #endif /* U_HIDE_DRAFT_API */
1869 
1870 #ifndef U_HIDE_DRAFT_API
1871 
1878  static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
1879 
1885  static MeasureUnit getPixelPerCentimeter();
1886 #endif /* U_HIDE_DRAFT_API */
1887 
1888 #ifndef U_HIDE_DRAFT_API
1889 
1896  static MeasureUnit *createPixelPerInch(UErrorCode &status);
1897 
1903  static MeasureUnit getPixelPerInch();
1904 #endif /* U_HIDE_DRAFT_API */
1905 
1913  static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
1914 
1920  static MeasureUnit getAstronomicalUnit();
1921 
1929  static MeasureUnit *createCentimeter(UErrorCode &status);
1930 
1936  static MeasureUnit getCentimeter();
1937 
1945  static MeasureUnit *createDecimeter(UErrorCode &status);
1946 
1952  static MeasureUnit getDecimeter();
1953 
1961  static MeasureUnit *createFathom(UErrorCode &status);
1962 
1968  static MeasureUnit getFathom();
1969 
1977  static MeasureUnit *createFoot(UErrorCode &status);
1978 
1984  static MeasureUnit getFoot();
1985 
1993  static MeasureUnit *createFurlong(UErrorCode &status);
1994 
2000  static MeasureUnit getFurlong();
2001 
2009  static MeasureUnit *createInch(UErrorCode &status);
2010 
2016  static MeasureUnit getInch();
2017 
2025  static MeasureUnit *createKilometer(UErrorCode &status);
2026 
2032  static MeasureUnit getKilometer();
2033 
2041  static MeasureUnit *createLightYear(UErrorCode &status);
2042 
2048  static MeasureUnit getLightYear();
2049 
2057  static MeasureUnit *createMeter(UErrorCode &status);
2058 
2064  static MeasureUnit getMeter();
2065 
2073  static MeasureUnit *createMicrometer(UErrorCode &status);
2074 
2080  static MeasureUnit getMicrometer();
2081 
2089  static MeasureUnit *createMile(UErrorCode &status);
2090 
2096  static MeasureUnit getMile();
2097 
2105  static MeasureUnit *createMileScandinavian(UErrorCode &status);
2106 
2112  static MeasureUnit getMileScandinavian();
2113 
2121  static MeasureUnit *createMillimeter(UErrorCode &status);
2122 
2128  static MeasureUnit getMillimeter();
2129 
2137  static MeasureUnit *createNanometer(UErrorCode &status);
2138 
2144  static MeasureUnit getNanometer();
2145 
2153  static MeasureUnit *createNauticalMile(UErrorCode &status);
2154 
2160  static MeasureUnit getNauticalMile();
2161 
2169  static MeasureUnit *createParsec(UErrorCode &status);
2170 
2176  static MeasureUnit getParsec();
2177 
2185  static MeasureUnit *createPicometer(UErrorCode &status);
2186 
2192  static MeasureUnit getPicometer();
2193 
2201  static MeasureUnit *createPoint(UErrorCode &status);
2202 
2208  static MeasureUnit getPoint();
2209 
2217  static MeasureUnit *createSolarRadius(UErrorCode &status);
2218 
2224  static MeasureUnit getSolarRadius();
2225 
2233  static MeasureUnit *createYard(UErrorCode &status);
2234 
2240  static MeasureUnit getYard();
2241 
2249  static MeasureUnit *createLux(UErrorCode &status);
2250 
2256  static MeasureUnit getLux();
2257 
2265  static MeasureUnit *createSolarLuminosity(UErrorCode &status);
2266 
2272  static MeasureUnit getSolarLuminosity();
2273 
2281  static MeasureUnit *createCarat(UErrorCode &status);
2282 
2288  static MeasureUnit getCarat();
2289 
2297  static MeasureUnit *createDalton(UErrorCode &status);
2298 
2304  static MeasureUnit getDalton();
2305 
2313  static MeasureUnit *createEarthMass(UErrorCode &status);
2314 
2320  static MeasureUnit getEarthMass();
2321 
2329  static MeasureUnit *createGram(UErrorCode &status);
2330 
2336  static MeasureUnit getGram();
2337 
2345  static MeasureUnit *createKilogram(UErrorCode &status);
2346 
2352  static MeasureUnit getKilogram();
2353 
2361  static MeasureUnit *createMetricTon(UErrorCode &status);
2362 
2368  static MeasureUnit getMetricTon();
2369 
2377  static MeasureUnit *createMicrogram(UErrorCode &status);
2378 
2384  static MeasureUnit getMicrogram();
2385 
2393  static MeasureUnit *createMilligram(UErrorCode &status);
2394 
2400  static MeasureUnit getMilligram();
2401 
2409  static MeasureUnit *createOunce(UErrorCode &status);
2410 
2416  static MeasureUnit getOunce();
2417 
2425  static MeasureUnit *createOunceTroy(UErrorCode &status);
2426 
2432  static MeasureUnit getOunceTroy();
2433 
2441  static MeasureUnit *createPound(UErrorCode &status);
2442 
2448  static MeasureUnit getPound();
2449 
2457  static MeasureUnit *createSolarMass(UErrorCode &status);
2458 
2464  static MeasureUnit getSolarMass();
2465 
2473  static MeasureUnit *createStone(UErrorCode &status);
2474 
2480  static MeasureUnit getStone();
2481 
2489  static MeasureUnit *createTon(UErrorCode &status);
2490 
2496  static MeasureUnit getTon();
2497 
2505  static MeasureUnit *createGigawatt(UErrorCode &status);
2506 
2512  static MeasureUnit getGigawatt();
2513 
2521  static MeasureUnit *createHorsepower(UErrorCode &status);
2522 
2528  static MeasureUnit getHorsepower();
2529 
2537  static MeasureUnit *createKilowatt(UErrorCode &status);
2538 
2544  static MeasureUnit getKilowatt();
2545 
2553  static MeasureUnit *createMegawatt(UErrorCode &status);
2554 
2560  static MeasureUnit getMegawatt();
2561 
2569  static MeasureUnit *createMilliwatt(UErrorCode &status);
2570 
2576  static MeasureUnit getMilliwatt();
2577 
2585  static MeasureUnit *createWatt(UErrorCode &status);
2586 
2592  static MeasureUnit getWatt();
2593 
2601  static MeasureUnit *createAtmosphere(UErrorCode &status);
2602 
2608  static MeasureUnit getAtmosphere();
2609 
2610 #ifndef U_HIDE_DRAFT_API
2611 
2618  static MeasureUnit *createBar(UErrorCode &status);
2619 
2625  static MeasureUnit getBar();
2626 #endif /* U_HIDE_DRAFT_API */
2627 
2635  static MeasureUnit *createHectopascal(UErrorCode &status);
2636 
2642  static MeasureUnit getHectopascal();
2643 
2651  static MeasureUnit *createInchHg(UErrorCode &status);
2652 
2658  static MeasureUnit getInchHg();
2659 
2667  static MeasureUnit *createKilopascal(UErrorCode &status);
2668 
2674  static MeasureUnit getKilopascal();
2675 
2683  static MeasureUnit *createMegapascal(UErrorCode &status);
2684 
2690  static MeasureUnit getMegapascal();
2691 
2699  static MeasureUnit *createMillibar(UErrorCode &status);
2700 
2706  static MeasureUnit getMillibar();
2707 
2715  static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
2716 
2722  static MeasureUnit getMillimeterOfMercury();
2723 
2724 #ifndef U_HIDE_DRAFT_API
2725 
2732  static MeasureUnit *createPascal(UErrorCode &status);
2733 
2739  static MeasureUnit getPascal();
2740 #endif /* U_HIDE_DRAFT_API */
2741 
2749  static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
2750 
2756  static MeasureUnit getPoundPerSquareInch();
2757 
2765  static MeasureUnit *createKilometerPerHour(UErrorCode &status);
2766 
2772  static MeasureUnit getKilometerPerHour();
2773 
2781  static MeasureUnit *createKnot(UErrorCode &status);
2782 
2788  static MeasureUnit getKnot();
2789 
2797  static MeasureUnit *createMeterPerSecond(UErrorCode &status);
2798 
2804  static MeasureUnit getMeterPerSecond();
2805 
2813  static MeasureUnit *createMilePerHour(UErrorCode &status);
2814 
2820  static MeasureUnit getMilePerHour();
2821 
2829  static MeasureUnit *createCelsius(UErrorCode &status);
2830 
2836  static MeasureUnit getCelsius();
2837 
2845  static MeasureUnit *createFahrenheit(UErrorCode &status);
2846 
2852  static MeasureUnit getFahrenheit();
2853 
2861  static MeasureUnit *createGenericTemperature(UErrorCode &status);
2862 
2868  static MeasureUnit getGenericTemperature();
2869 
2877  static MeasureUnit *createKelvin(UErrorCode &status);
2878 
2884  static MeasureUnit getKelvin();
2885 
2893  static MeasureUnit *createNewtonMeter(UErrorCode &status);
2894 
2900  static MeasureUnit getNewtonMeter();
2901 
2909  static MeasureUnit *createPoundFoot(UErrorCode &status);
2910 
2916  static MeasureUnit getPoundFoot();
2917 
2925  static MeasureUnit *createAcreFoot(UErrorCode &status);
2926 
2932  static MeasureUnit getAcreFoot();
2933 
2941  static MeasureUnit *createBarrel(UErrorCode &status);
2942 
2948  static MeasureUnit getBarrel();
2949 
2957  static MeasureUnit *createBushel(UErrorCode &status);
2958 
2964  static MeasureUnit getBushel();
2965 
2973  static MeasureUnit *createCentiliter(UErrorCode &status);
2974 
2980  static MeasureUnit getCentiliter();
2981 
2989  static MeasureUnit *createCubicCentimeter(UErrorCode &status);
2990 
2996  static MeasureUnit getCubicCentimeter();
2997 
3005  static MeasureUnit *createCubicFoot(UErrorCode &status);
3006 
3012  static MeasureUnit getCubicFoot();
3013 
3021  static MeasureUnit *createCubicInch(UErrorCode &status);
3022 
3028  static MeasureUnit getCubicInch();
3029 
3037  static MeasureUnit *createCubicKilometer(UErrorCode &status);
3038 
3044  static MeasureUnit getCubicKilometer();
3045 
3053  static MeasureUnit *createCubicMeter(UErrorCode &status);
3054 
3060  static MeasureUnit getCubicMeter();
3061 
3069  static MeasureUnit *createCubicMile(UErrorCode &status);
3070 
3076  static MeasureUnit getCubicMile();
3077 
3085  static MeasureUnit *createCubicYard(UErrorCode &status);
3086 
3092  static MeasureUnit getCubicYard();
3093 
3101  static MeasureUnit *createCup(UErrorCode &status);
3102 
3108  static MeasureUnit getCup();
3109 
3117  static MeasureUnit *createCupMetric(UErrorCode &status);
3118 
3124  static MeasureUnit getCupMetric();
3125 
3133  static MeasureUnit *createDeciliter(UErrorCode &status);
3134 
3140  static MeasureUnit getDeciliter();
3141 
3149  static MeasureUnit *createFluidOunce(UErrorCode &status);
3150 
3156  static MeasureUnit getFluidOunce();
3157 
3165  static MeasureUnit *createFluidOunceImperial(UErrorCode &status);
3166 
3172  static MeasureUnit getFluidOunceImperial();
3173 
3181  static MeasureUnit *createGallon(UErrorCode &status);
3182 
3188  static MeasureUnit getGallon();
3189 
3197  static MeasureUnit *createGallonImperial(UErrorCode &status);
3198 
3204  static MeasureUnit getGallonImperial();
3205 
3213  static MeasureUnit *createHectoliter(UErrorCode &status);
3214 
3220  static MeasureUnit getHectoliter();
3221 
3229  static MeasureUnit *createLiter(UErrorCode &status);
3230 
3236  static MeasureUnit getLiter();
3237 
3245  static MeasureUnit *createMegaliter(UErrorCode &status);
3246 
3252  static MeasureUnit getMegaliter();
3253 
3261  static MeasureUnit *createMilliliter(UErrorCode &status);
3262 
3268  static MeasureUnit getMilliliter();
3269 
3277  static MeasureUnit *createPint(UErrorCode &status);
3278 
3284  static MeasureUnit getPint();
3285 
3293  static MeasureUnit *createPintMetric(UErrorCode &status);
3294 
3300  static MeasureUnit getPintMetric();
3301 
3309  static MeasureUnit *createQuart(UErrorCode &status);
3310 
3316  static MeasureUnit getQuart();
3317 
3325  static MeasureUnit *createTablespoon(UErrorCode &status);
3326 
3332  static MeasureUnit getTablespoon();
3333 
3341  static MeasureUnit *createTeaspoon(UErrorCode &status);
3342 
3348  static MeasureUnit getTeaspoon();
3349 
3350 
3351 // End generated createXXX methods
3352 
3353  protected:
3354 
3355 #ifndef U_HIDE_INTERNAL_API
3356 
3360  void initTime(const char *timeId);
3361 
3366  void initCurrency(StringPiece isoCurrency);
3367 
3372  void initNoUnit(const char *subtype);
3373 
3374 #endif /* U_HIDE_INTERNAL_API */
3375 
3376 private:
3377 
3378  // If non-null, fImpl is owned by the MeasureUnit.
3379  MeasureUnitImpl* fImpl;
3380 
3381  // These two ints are indices into static string lists in measunit.cpp
3382  int16_t fSubTypeId;
3383  int8_t fTypeId;
3384 
3385  MeasureUnit(int32_t typeId, int32_t subTypeId);
3386  MeasureUnit(MeasureUnitImpl&& impl);
3387  void setTo(int32_t typeId, int32_t subTypeId);
3388  int32_t getOffset() const;
3389  static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
3390 
3394  static bool findBySubType(StringPiece subType, MeasureUnit* output);
3395 
3396  friend struct MeasureUnitImpl;
3397 };
3398 
3399 U_NAMESPACE_END
3400 
3401 #endif // !UNCONFIG_NO_FORMATTING
3402 
3403 #endif /* U_SHOW_CPLUSPLUS_API */
3404 
3405 #endif // __MEASUREUNIT_H__
A unit such as length, mass, volume, currency, etc.
Definition: measunit.h:237
SI prefix: pico, 10^-12.
Definition: measunit.h:198
SI prefix: zetta, 10^21.
Definition: measunit.h:93
The absence of an SI prefix.
Definition: measunit.h:156
SI prefix: peta, 10^15.
Definition: measunit.h:107
C++ API: Unicode String.
enum icu::UMeasureSIPrefix UMeasureSIPrefix
Enumeration for SI prefixes, such as "kilo".
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
UBool operator!=(const UObject &other) const
Inequality operator.
Definition: measunit.h:314
A compound unit, like meter-per-second.
Definition: measunit.h:64
void * UClassID
UClassID is used to identify classes without using the compiler&#39;s RTTI.
Definition: uobject.h:96
Base class for &#39;pure&#39; C++ implementations of uenum api.
Definition: strenum.h:61
SI prefix: zepto, 10^-21.
Definition: measunit.h:219
#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: atto, 10^-18.
Definition: measunit.h:212
A mixed unit, like hour+minute.
Definition: measunit.h:71
C++ API: "Smart pointers" for use with and in ICU4C C++ code.
SI prefix: centi, 10^-2.
Definition: measunit.h:170
SI prefix: yocto, 10^-24.
Definition: measunit.h:226
"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: giga, 10^9.
Definition: measunit.h:121
SI prefix: yotta, 10^24.
Definition: measunit.h:86
SI prefix: hecto, 10^2.
Definition: measunit.h:142
UMeasureSIPrefix
Enumeration for SI prefixes, such as "kilo".
Definition: measunit.h:79
SI prefix: mega, 10^6.
Definition: measunit.h:128
SI prefix: deka, 10^1.
Definition: measunit.h:149
SI prefix: deci, 10^-1.
Definition: measunit.h:163
SI prefix: exa, 10^18.
Definition: measunit.h:100
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:415
SI prefix: femto, 10^-15.
Definition: measunit.h:205
SI prefix: micro, 10^-6.
Definition: measunit.h:184
SI prefix: tera, 10^12.
Definition: measunit.h:114
Basic definitions for ICU, for both C and C++ APIs.
A single unit, like kilojoule.
Definition: measunit.h:57
SI prefix: kilo, 10^3.
Definition: measunit.h:135
SI prefix: milli, 10^-3.
Definition: measunit.h:177
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
SI prefix: nano, 10^-9.
Definition: measunit.h:191
int8_t UBool
The ICU boolean type.
Definition: umachine.h:261
UMeasureUnitComplexity
Enumeration for unit complexity.
Definition: measunit.h:51