1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
4 **********************************************************************
5 * Copyright (c) 2004-2016, International Business Machines
6 * Corporation and others. All Rights Reserved.
7 **********************************************************************
9 * Created: April 26, 2004
11 **********************************************************************
13 #ifndef __MEASUREUNIT_H__
14 #define __MEASUREUNIT_H__
16 #include "unicode/utypes.h"
18 #if !UCONFIG_NO_FORMATTING
20 #include "unicode/unistr.h"
24 * \brief C++ API: A unit for measuring a quantity.
29 class StringEnumeration;
32 * A unit such as length, mass, volume, currency, etc. A unit is
33 * coupled with a numeric amount to produce a Measure.
38 class U_I18N_API MeasureUnit: public UObject {
42 * Default constructor.
45 MeasureUnit() : fTypeId(0), fSubTypeId(0) {
53 MeasureUnit(const MeasureUnit &other);
56 * Assignment operator.
59 MeasureUnit &operator=(const MeasureUnit &other);
62 * Returns a polymorphic clone of this object. The result will
63 * have the same class as returned by getDynamicClassID().
66 virtual UObject* clone() const;
72 virtual ~MeasureUnit();
75 * Equality operator. Return true if this object is equal
76 * to the given object.
79 virtual UBool operator==(const UObject& other) const;
82 * Inequality operator. Return true if this object is not equal
83 * to the given object.
86 UBool operator!=(const UObject& other) const {
87 return !(*this == other);
94 const char *getType() const;
100 const char *getSubtype() const;
103 * getAvailable gets all of the available units.
104 * If there are too many units to fit into destCapacity then the
105 * error code is set to U_BUFFER_OVERFLOW_ERROR.
107 * @param destArray destination buffer.
108 * @param destCapacity number of MeasureUnit instances available at dest.
109 * @param errorCode ICU error code.
110 * @return number of available units.
113 static int32_t getAvailable(
114 MeasureUnit *destArray,
115 int32_t destCapacity,
116 UErrorCode &errorCode);
119 * getAvailable gets all of the available units for a specific type.
120 * If there are too many units to fit into destCapacity then the
121 * error code is set to U_BUFFER_OVERFLOW_ERROR.
123 * @param type the type
124 * @param destArray destination buffer.
125 * @param destCapacity number of MeasureUnit instances available at dest.
126 * @param errorCode ICU error code.
127 * @return number of available units for type.
130 static int32_t getAvailable(
132 MeasureUnit *destArray,
133 int32_t destCapacity,
134 UErrorCode &errorCode);
137 * getAvailableTypes gets all of the available types. Caller owns the
138 * returned StringEnumeration and must delete it when finished using it.
140 * @param errorCode ICU error code.
144 static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
147 * Return the class ID for this class. This is useful only for comparing to
148 * a return value from getDynamicClassID(). For example:
150 * . Base* polymorphic_pointer = createPolymorphicObject();
151 * . if (polymorphic_pointer->getDynamicClassID() ==
152 * . erived::getStaticClassID()) ...
154 * @return The class ID for all objects of this class.
157 static UClassID U_EXPORT2 getStaticClassID(void);
160 * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
161 * method is to implement a simple version of RTTI, since not all C++
162 * compilers support genuine RTTI. Polymorphic operator==() and clone()
163 * methods call this method.
165 * @return The class ID for this object. All objects of a
166 * given class have the same class ID. Objects of
167 * other classes have different class IDs.
170 virtual UClassID getDynamicClassID(void) const;
172 #ifndef U_HIDE_INTERNAL_API
175 * Returns associated array index for this measure unit. Only valid for
176 * non-currency measure units.
179 int32_t getIndex() const;
183 * Returns maximum value from getIndex plus 1.
186 static int32_t getIndexCount();
190 * @return the unit.getIndex() of the unit which has this unit.getType() and unit.getSubtype(),
191 * or a negative value if there is no such unit
194 static int32_t internalGetIndexForTypeAndSubtype(const char *type, const char *subtype);
200 static MeasureUnit *resolveUnitPerUnit(
201 const MeasureUnit &unit, const MeasureUnit &perUnit);
202 #endif /* U_HIDE_INTERNAL_API */
204 // All code between the "Start generated createXXX methods" comment and
205 // the "End generated createXXX methods" comment is auto generated code
206 // and must not be edited manually. For instructions on how to correctly
207 // update this code, refer to:
208 // http://site.icu-project.org/design/formatting/measureformat/updating-measure-unit
210 // Start generated createXXX methods
213 * Returns unit of acceleration: g-force.
214 * Caller owns returned value and must free it.
215 * @param status ICU error code.
218 static MeasureUnit *createGForce(UErrorCode &status);
221 * Returns unit of acceleration: meter-per-second-squared.
222 * Caller owns returned value and must free it.
223 * @param status ICU error code.
226 static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
229 * Returns unit of angle: arc-minute.
230 * Caller owns returned value and must free it.
231 * @param status ICU error code.
234 static MeasureUnit *createArcMinute(UErrorCode &status);
237 * Returns unit of angle: arc-second.
238 * Caller owns returned value and must free it.
239 * @param status ICU error code.
242 static MeasureUnit *createArcSecond(UErrorCode &status);
245 * Returns unit of angle: degree.
246 * Caller owns returned value and must free it.
247 * @param status ICU error code.
250 static MeasureUnit *createDegree(UErrorCode &status);
253 * Returns unit of angle: radian.
254 * Caller owns returned value and must free it.
255 * @param status ICU error code.
258 static MeasureUnit *createRadian(UErrorCode &status);
261 * Returns unit of angle: revolution.
262 * Caller owns returned value and must free it.
263 * @param status ICU error code.
266 static MeasureUnit *createRevolutionAngle(UErrorCode &status);
269 * Returns unit of area: acre.
270 * Caller owns returned value and must free it.
271 * @param status ICU error code.
274 static MeasureUnit *createAcre(UErrorCode &status);
277 * Returns unit of area: hectare.
278 * Caller owns returned value and must free it.
279 * @param status ICU error code.
282 static MeasureUnit *createHectare(UErrorCode &status);
285 * Returns unit of area: square-centimeter.
286 * Caller owns returned value and must free it.
287 * @param status ICU error code.
290 static MeasureUnit *createSquareCentimeter(UErrorCode &status);
293 * Returns unit of area: square-foot.
294 * Caller owns returned value and must free it.
295 * @param status ICU error code.
298 static MeasureUnit *createSquareFoot(UErrorCode &status);
301 * Returns unit of area: square-inch.
302 * Caller owns returned value and must free it.
303 * @param status ICU error code.
306 static MeasureUnit *createSquareInch(UErrorCode &status);
309 * Returns unit of area: square-kilometer.
310 * Caller owns returned value and must free it.
311 * @param status ICU error code.
314 static MeasureUnit *createSquareKilometer(UErrorCode &status);
317 * Returns unit of area: square-meter.
318 * Caller owns returned value and must free it.
319 * @param status ICU error code.
322 static MeasureUnit *createSquareMeter(UErrorCode &status);
325 * Returns unit of area: square-mile.
326 * Caller owns returned value and must free it.
327 * @param status ICU error code.
330 static MeasureUnit *createSquareMile(UErrorCode &status);
333 * Returns unit of area: square-yard.
334 * Caller owns returned value and must free it.
335 * @param status ICU error code.
338 static MeasureUnit *createSquareYard(UErrorCode &status);
341 * Returns unit of concentr: karat.
342 * Caller owns returned value and must free it.
343 * @param status ICU error code.
346 static MeasureUnit *createKarat(UErrorCode &status);
349 * Returns unit of concentr: milligram-per-deciliter.
350 * Caller owns returned value and must free it.
351 * @param status ICU error code.
354 static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
357 * Returns unit of concentr: millimole-per-liter.
358 * Caller owns returned value and must free it.
359 * @param status ICU error code.
362 static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
365 * Returns unit of concentr: part-per-million.
366 * Caller owns returned value and must free it.
367 * @param status ICU error code.
370 static MeasureUnit *createPartPerMillion(UErrorCode &status);
373 * Returns unit of consumption: liter-per-100kilometers.
374 * Caller owns returned value and must free it.
375 * @param status ICU error code.
378 static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
381 * Returns unit of consumption: liter-per-kilometer.
382 * Caller owns returned value and must free it.
383 * @param status ICU error code.
386 static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
389 * Returns unit of consumption: mile-per-gallon.
390 * Caller owns returned value and must free it.
391 * @param status ICU error code.
394 static MeasureUnit *createMilePerGallon(UErrorCode &status);
397 * Returns unit of consumption: mile-per-gallon-imperial.
398 * Caller owns returned value and must free it.
399 * @param status ICU error code.
402 static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
405 * The following were draft ICU 58, but have been withdrawn:
406 * static MeasureUnit *createEast(UErrorCode &status);
407 * static MeasureUnit *createNorth(UErrorCode &status);
408 * static MeasureUnit *createSouth(UErrorCode &status);
409 * static MeasureUnit *createWest(UErrorCode &status);
413 * Returns unit of digital: bit.
414 * Caller owns returned value and must free it.
415 * @param status ICU error code.
418 static MeasureUnit *createBit(UErrorCode &status);
421 * Returns unit of digital: byte.
422 * Caller owns returned value and must free it.
423 * @param status ICU error code.
426 static MeasureUnit *createByte(UErrorCode &status);
429 * Returns unit of digital: gigabit.
430 * Caller owns returned value and must free it.
431 * @param status ICU error code.
434 static MeasureUnit *createGigabit(UErrorCode &status);
437 * Returns unit of digital: gigabyte.
438 * Caller owns returned value and must free it.
439 * @param status ICU error code.
442 static MeasureUnit *createGigabyte(UErrorCode &status);
445 * Returns unit of digital: kilobit.
446 * Caller owns returned value and must free it.
447 * @param status ICU error code.
450 static MeasureUnit *createKilobit(UErrorCode &status);
453 * Returns unit of digital: kilobyte.
454 * Caller owns returned value and must free it.
455 * @param status ICU error code.
458 static MeasureUnit *createKilobyte(UErrorCode &status);
461 * Returns unit of digital: megabit.
462 * Caller owns returned value and must free it.
463 * @param status ICU error code.
466 static MeasureUnit *createMegabit(UErrorCode &status);
469 * Returns unit of digital: megabyte.
470 * Caller owns returned value and must free it.
471 * @param status ICU error code.
474 static MeasureUnit *createMegabyte(UErrorCode &status);
477 * Returns unit of digital: terabit.
478 * Caller owns returned value and must free it.
479 * @param status ICU error code.
482 static MeasureUnit *createTerabit(UErrorCode &status);
485 * Returns unit of digital: terabyte.
486 * Caller owns returned value and must free it.
487 * @param status ICU error code.
490 static MeasureUnit *createTerabyte(UErrorCode &status);
493 * Returns unit of duration: century.
494 * Caller owns returned value and must free it.
495 * @param status ICU error code.
498 static MeasureUnit *createCentury(UErrorCode &status);
501 * Returns unit of duration: day.
502 * Caller owns returned value and must free it.
503 * @param status ICU error code.
506 static MeasureUnit *createDay(UErrorCode &status);
509 * Returns unit of duration: hour.
510 * Caller owns returned value and must free it.
511 * @param status ICU error code.
514 static MeasureUnit *createHour(UErrorCode &status);
517 * Returns unit of duration: microsecond.
518 * Caller owns returned value and must free it.
519 * @param status ICU error code.
522 static MeasureUnit *createMicrosecond(UErrorCode &status);
525 * Returns unit of duration: millisecond.
526 * Caller owns returned value and must free it.
527 * @param status ICU error code.
530 static MeasureUnit *createMillisecond(UErrorCode &status);
533 * Returns unit of duration: minute.
534 * Caller owns returned value and must free it.
535 * @param status ICU error code.
538 static MeasureUnit *createMinute(UErrorCode &status);
541 * Returns unit of duration: month.
542 * Caller owns returned value and must free it.
543 * @param status ICU error code.
546 static MeasureUnit *createMonth(UErrorCode &status);
549 * Returns unit of duration: nanosecond.
550 * Caller owns returned value and must free it.
551 * @param status ICU error code.
554 static MeasureUnit *createNanosecond(UErrorCode &status);
557 * Returns unit of duration: second.
558 * Caller owns returned value and must free it.
559 * @param status ICU error code.
562 static MeasureUnit *createSecond(UErrorCode &status);
565 * Returns unit of duration: week.
566 * Caller owns returned value and must free it.
567 * @param status ICU error code.
570 static MeasureUnit *createWeek(UErrorCode &status);
573 * Returns unit of duration: year.
574 * Caller owns returned value and must free it.
575 * @param status ICU error code.
578 static MeasureUnit *createYear(UErrorCode &status);
581 * Returns unit of electric: ampere.
582 * Caller owns returned value and must free it.
583 * @param status ICU error code.
586 static MeasureUnit *createAmpere(UErrorCode &status);
589 * Returns unit of electric: milliampere.
590 * Caller owns returned value and must free it.
591 * @param status ICU error code.
594 static MeasureUnit *createMilliampere(UErrorCode &status);
597 * Returns unit of electric: ohm.
598 * Caller owns returned value and must free it.
599 * @param status ICU error code.
602 static MeasureUnit *createOhm(UErrorCode &status);
605 * Returns unit of electric: volt.
606 * Caller owns returned value and must free it.
607 * @param status ICU error code.
610 static MeasureUnit *createVolt(UErrorCode &status);
613 * Returns unit of energy: calorie.
614 * Caller owns returned value and must free it.
615 * @param status ICU error code.
618 static MeasureUnit *createCalorie(UErrorCode &status);
621 * Returns unit of energy: foodcalorie.
622 * Caller owns returned value and must free it.
623 * @param status ICU error code.
626 static MeasureUnit *createFoodcalorie(UErrorCode &status);
629 * Returns unit of energy: joule.
630 * Caller owns returned value and must free it.
631 * @param status ICU error code.
634 static MeasureUnit *createJoule(UErrorCode &status);
637 * Returns unit of energy: kilocalorie.
638 * Caller owns returned value and must free it.
639 * @param status ICU error code.
642 static MeasureUnit *createKilocalorie(UErrorCode &status);
645 * Returns unit of energy: kilojoule.
646 * Caller owns returned value and must free it.
647 * @param status ICU error code.
650 static MeasureUnit *createKilojoule(UErrorCode &status);
653 * Returns unit of energy: kilowatt-hour.
654 * Caller owns returned value and must free it.
655 * @param status ICU error code.
658 static MeasureUnit *createKilowattHour(UErrorCode &status);
661 * Returns unit of frequency: gigahertz.
662 * Caller owns returned value and must free it.
663 * @param status ICU error code.
666 static MeasureUnit *createGigahertz(UErrorCode &status);
669 * Returns unit of frequency: hertz.
670 * Caller owns returned value and must free it.
671 * @param status ICU error code.
674 static MeasureUnit *createHertz(UErrorCode &status);
677 * Returns unit of frequency: kilohertz.
678 * Caller owns returned value and must free it.
679 * @param status ICU error code.
682 static MeasureUnit *createKilohertz(UErrorCode &status);
685 * Returns unit of frequency: megahertz.
686 * Caller owns returned value and must free it.
687 * @param status ICU error code.
690 static MeasureUnit *createMegahertz(UErrorCode &status);
693 * Returns unit of length: astronomical-unit.
694 * Caller owns returned value and must free it.
695 * @param status ICU error code.
698 static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
701 * Returns unit of length: centimeter.
702 * Caller owns returned value and must free it.
703 * @param status ICU error code.
706 static MeasureUnit *createCentimeter(UErrorCode &status);
709 * Returns unit of length: decimeter.
710 * Caller owns returned value and must free it.
711 * @param status ICU error code.
714 static MeasureUnit *createDecimeter(UErrorCode &status);
717 * Returns unit of length: fathom.
718 * Caller owns returned value and must free it.
719 * @param status ICU error code.
722 static MeasureUnit *createFathom(UErrorCode &status);
725 * Returns unit of length: foot.
726 * Caller owns returned value and must free it.
727 * @param status ICU error code.
730 static MeasureUnit *createFoot(UErrorCode &status);
733 * Returns unit of length: furlong.
734 * Caller owns returned value and must free it.
735 * @param status ICU error code.
738 static MeasureUnit *createFurlong(UErrorCode &status);
741 * Returns unit of length: inch.
742 * Caller owns returned value and must free it.
743 * @param status ICU error code.
746 static MeasureUnit *createInch(UErrorCode &status);
749 * Returns unit of length: kilometer.
750 * Caller owns returned value and must free it.
751 * @param status ICU error code.
754 static MeasureUnit *createKilometer(UErrorCode &status);
757 * Returns unit of length: light-year.
758 * Caller owns returned value and must free it.
759 * @param status ICU error code.
762 static MeasureUnit *createLightYear(UErrorCode &status);
765 * Returns unit of length: meter.
766 * Caller owns returned value and must free it.
767 * @param status ICU error code.
770 static MeasureUnit *createMeter(UErrorCode &status);
773 * Returns unit of length: micrometer.
774 * Caller owns returned value and must free it.
775 * @param status ICU error code.
778 static MeasureUnit *createMicrometer(UErrorCode &status);
781 * Returns unit of length: mile.
782 * Caller owns returned value and must free it.
783 * @param status ICU error code.
786 static MeasureUnit *createMile(UErrorCode &status);
789 * Returns unit of length: mile-scandinavian.
790 * Caller owns returned value and must free it.
791 * @param status ICU error code.
794 static MeasureUnit *createMileScandinavian(UErrorCode &status);
797 * Returns unit of length: millimeter.
798 * Caller owns returned value and must free it.
799 * @param status ICU error code.
802 static MeasureUnit *createMillimeter(UErrorCode &status);
805 * Returns unit of length: nanometer.
806 * Caller owns returned value and must free it.
807 * @param status ICU error code.
810 static MeasureUnit *createNanometer(UErrorCode &status);
813 * Returns unit of length: nautical-mile.
814 * Caller owns returned value and must free it.
815 * @param status ICU error code.
818 static MeasureUnit *createNauticalMile(UErrorCode &status);
821 * Returns unit of length: parsec.
822 * Caller owns returned value and must free it.
823 * @param status ICU error code.
826 static MeasureUnit *createParsec(UErrorCode &status);
829 * Returns unit of length: picometer.
830 * Caller owns returned value and must free it.
831 * @param status ICU error code.
834 static MeasureUnit *createPicometer(UErrorCode &status);
836 #ifndef U_HIDE_DRAFT_API
838 * Returns unit of length: point.
839 * Caller owns returned value and must free it.
840 * @param status ICU error code.
843 static MeasureUnit *createPoint(UErrorCode &status);
844 #endif /* U_HIDE_DRAFT_API */
847 * Returns unit of length: yard.
848 * Caller owns returned value and must free it.
849 * @param status ICU error code.
852 static MeasureUnit *createYard(UErrorCode &status);
855 * Returns unit of light: lux.
856 * Caller owns returned value and must free it.
857 * @param status ICU error code.
860 static MeasureUnit *createLux(UErrorCode &status);
863 * Returns unit of mass: carat.
864 * Caller owns returned value and must free it.
865 * @param status ICU error code.
868 static MeasureUnit *createCarat(UErrorCode &status);
871 * Returns unit of mass: gram.
872 * Caller owns returned value and must free it.
873 * @param status ICU error code.
876 static MeasureUnit *createGram(UErrorCode &status);
879 * Returns unit of mass: kilogram.
880 * Caller owns returned value and must free it.
881 * @param status ICU error code.
884 static MeasureUnit *createKilogram(UErrorCode &status);
887 * Returns unit of mass: metric-ton.
888 * Caller owns returned value and must free it.
889 * @param status ICU error code.
892 static MeasureUnit *createMetricTon(UErrorCode &status);
895 * Returns unit of mass: microgram.
896 * Caller owns returned value and must free it.
897 * @param status ICU error code.
900 static MeasureUnit *createMicrogram(UErrorCode &status);
903 * Returns unit of mass: milligram.
904 * Caller owns returned value and must free it.
905 * @param status ICU error code.
908 static MeasureUnit *createMilligram(UErrorCode &status);
911 * Returns unit of mass: ounce.
912 * Caller owns returned value and must free it.
913 * @param status ICU error code.
916 static MeasureUnit *createOunce(UErrorCode &status);
919 * Returns unit of mass: ounce-troy.
920 * Caller owns returned value and must free it.
921 * @param status ICU error code.
924 static MeasureUnit *createOunceTroy(UErrorCode &status);
927 * Returns unit of mass: pound.
928 * Caller owns returned value and must free it.
929 * @param status ICU error code.
932 static MeasureUnit *createPound(UErrorCode &status);
935 * Returns unit of mass: stone.
936 * Caller owns returned value and must free it.
937 * @param status ICU error code.
940 static MeasureUnit *createStone(UErrorCode &status);
943 * Returns unit of mass: ton.
944 * Caller owns returned value and must free it.
945 * @param status ICU error code.
948 static MeasureUnit *createTon(UErrorCode &status);
951 * Returns unit of power: gigawatt.
952 * Caller owns returned value and must free it.
953 * @param status ICU error code.
956 static MeasureUnit *createGigawatt(UErrorCode &status);
959 * Returns unit of power: horsepower.
960 * Caller owns returned value and must free it.
961 * @param status ICU error code.
964 static MeasureUnit *createHorsepower(UErrorCode &status);
967 * Returns unit of power: kilowatt.
968 * Caller owns returned value and must free it.
969 * @param status ICU error code.
972 static MeasureUnit *createKilowatt(UErrorCode &status);
975 * Returns unit of power: megawatt.
976 * Caller owns returned value and must free it.
977 * @param status ICU error code.
980 static MeasureUnit *createMegawatt(UErrorCode &status);
983 * Returns unit of power: milliwatt.
984 * Caller owns returned value and must free it.
985 * @param status ICU error code.
988 static MeasureUnit *createMilliwatt(UErrorCode &status);
991 * Returns unit of power: watt.
992 * Caller owns returned value and must free it.
993 * @param status ICU error code.
996 static MeasureUnit *createWatt(UErrorCode &status);
999 * Returns unit of pressure: hectopascal.
1000 * Caller owns returned value and must free it.
1001 * @param status ICU error code.
1004 static MeasureUnit *createHectopascal(UErrorCode &status);
1007 * Returns unit of pressure: inch-hg.
1008 * Caller owns returned value and must free it.
1009 * @param status ICU error code.
1012 static MeasureUnit *createInchHg(UErrorCode &status);
1015 * Returns unit of pressure: millibar.
1016 * Caller owns returned value and must free it.
1017 * @param status ICU error code.
1020 static MeasureUnit *createMillibar(UErrorCode &status);
1023 * Returns unit of pressure: millimeter-of-mercury.
1024 * Caller owns returned value and must free it.
1025 * @param status ICU error code.
1028 static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
1031 * Returns unit of pressure: pound-per-square-inch.
1032 * Caller owns returned value and must free it.
1033 * @param status ICU error code.
1036 static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
1039 * Returns unit of speed: kilometer-per-hour.
1040 * Caller owns returned value and must free it.
1041 * @param status ICU error code.
1044 static MeasureUnit *createKilometerPerHour(UErrorCode &status);
1047 * Returns unit of speed: knot.
1048 * Caller owns returned value and must free it.
1049 * @param status ICU error code.
1052 static MeasureUnit *createKnot(UErrorCode &status);
1055 * Returns unit of speed: meter-per-second.
1056 * Caller owns returned value and must free it.
1057 * @param status ICU error code.
1060 static MeasureUnit *createMeterPerSecond(UErrorCode &status);
1063 * Returns unit of speed: mile-per-hour.
1064 * Caller owns returned value and must free it.
1065 * @param status ICU error code.
1068 static MeasureUnit *createMilePerHour(UErrorCode &status);
1071 * Returns unit of temperature: celsius.
1072 * Caller owns returned value and must free it.
1073 * @param status ICU error code.
1076 static MeasureUnit *createCelsius(UErrorCode &status);
1079 * Returns unit of temperature: fahrenheit.
1080 * Caller owns returned value and must free it.
1081 * @param status ICU error code.
1084 static MeasureUnit *createFahrenheit(UErrorCode &status);
1087 * Returns unit of temperature: generic.
1088 * Caller owns returned value and must free it.
1089 * @param status ICU error code.
1092 static MeasureUnit *createGenericTemperature(UErrorCode &status);
1095 * Returns unit of temperature: kelvin.
1096 * Caller owns returned value and must free it.
1097 * @param status ICU error code.
1100 static MeasureUnit *createKelvin(UErrorCode &status);
1103 * Returns unit of volume: acre-foot.
1104 * Caller owns returned value and must free it.
1105 * @param status ICU error code.
1108 static MeasureUnit *createAcreFoot(UErrorCode &status);
1111 * Returns unit of volume: bushel.
1112 * Caller owns returned value and must free it.
1113 * @param status ICU error code.
1116 static MeasureUnit *createBushel(UErrorCode &status);
1119 * Returns unit of volume: centiliter.
1120 * Caller owns returned value and must free it.
1121 * @param status ICU error code.
1124 static MeasureUnit *createCentiliter(UErrorCode &status);
1127 * Returns unit of volume: cubic-centimeter.
1128 * Caller owns returned value and must free it.
1129 * @param status ICU error code.
1132 static MeasureUnit *createCubicCentimeter(UErrorCode &status);
1135 * Returns unit of volume: cubic-foot.
1136 * Caller owns returned value and must free it.
1137 * @param status ICU error code.
1140 static MeasureUnit *createCubicFoot(UErrorCode &status);
1143 * Returns unit of volume: cubic-inch.
1144 * Caller owns returned value and must free it.
1145 * @param status ICU error code.
1148 static MeasureUnit *createCubicInch(UErrorCode &status);
1151 * Returns unit of volume: cubic-kilometer.
1152 * Caller owns returned value and must free it.
1153 * @param status ICU error code.
1156 static MeasureUnit *createCubicKilometer(UErrorCode &status);
1159 * Returns unit of volume: cubic-meter.
1160 * Caller owns returned value and must free it.
1161 * @param status ICU error code.
1164 static MeasureUnit *createCubicMeter(UErrorCode &status);
1167 * Returns unit of volume: cubic-mile.
1168 * Caller owns returned value and must free it.
1169 * @param status ICU error code.
1172 static MeasureUnit *createCubicMile(UErrorCode &status);
1175 * Returns unit of volume: cubic-yard.
1176 * Caller owns returned value and must free it.
1177 * @param status ICU error code.
1180 static MeasureUnit *createCubicYard(UErrorCode &status);
1183 * Returns unit of volume: cup.
1184 * Caller owns returned value and must free it.
1185 * @param status ICU error code.
1188 static MeasureUnit *createCup(UErrorCode &status);
1191 * Returns unit of volume: cup-metric.
1192 * Caller owns returned value and must free it.
1193 * @param status ICU error code.
1196 static MeasureUnit *createCupMetric(UErrorCode &status);
1199 * Returns unit of volume: deciliter.
1200 * Caller owns returned value and must free it.
1201 * @param status ICU error code.
1204 static MeasureUnit *createDeciliter(UErrorCode &status);
1207 * Returns unit of volume: fluid-ounce.
1208 * Caller owns returned value and must free it.
1209 * @param status ICU error code.
1212 static MeasureUnit *createFluidOunce(UErrorCode &status);
1215 * Returns unit of volume: gallon.
1216 * Caller owns returned value and must free it.
1217 * @param status ICU error code.
1220 static MeasureUnit *createGallon(UErrorCode &status);
1223 * Returns unit of volume: gallon-imperial.
1224 * Caller owns returned value and must free it.
1225 * @param status ICU error code.
1228 static MeasureUnit *createGallonImperial(UErrorCode &status);
1231 * Returns unit of volume: hectoliter.
1232 * Caller owns returned value and must free it.
1233 * @param status ICU error code.
1236 static MeasureUnit *createHectoliter(UErrorCode &status);
1239 * Returns unit of volume: liter.
1240 * Caller owns returned value and must free it.
1241 * @param status ICU error code.
1244 static MeasureUnit *createLiter(UErrorCode &status);
1247 * Returns unit of volume: megaliter.
1248 * Caller owns returned value and must free it.
1249 * @param status ICU error code.
1252 static MeasureUnit *createMegaliter(UErrorCode &status);
1255 * Returns unit of volume: milliliter.
1256 * Caller owns returned value and must free it.
1257 * @param status ICU error code.
1260 static MeasureUnit *createMilliliter(UErrorCode &status);
1263 * Returns unit of volume: pint.
1264 * Caller owns returned value and must free it.
1265 * @param status ICU error code.
1268 static MeasureUnit *createPint(UErrorCode &status);
1271 * Returns unit of volume: pint-metric.
1272 * Caller owns returned value and must free it.
1273 * @param status ICU error code.
1276 static MeasureUnit *createPintMetric(UErrorCode &status);
1279 * Returns unit of volume: quart.
1280 * Caller owns returned value and must free it.
1281 * @param status ICU error code.
1284 static MeasureUnit *createQuart(UErrorCode &status);
1287 * Returns unit of volume: tablespoon.
1288 * Caller owns returned value and must free it.
1289 * @param status ICU error code.
1292 static MeasureUnit *createTablespoon(UErrorCode &status);
1295 * Returns unit of volume: teaspoon.
1296 * Caller owns returned value and must free it.
1297 * @param status ICU error code.
1300 static MeasureUnit *createTeaspoon(UErrorCode &status);
1303 // End generated createXXX methods
1307 #ifndef U_HIDE_INTERNAL_API
1312 void initTime(const char *timeId);
1318 void initCurrency(const char *isoCurrency);
1320 #endif /* U_HIDE_INTERNAL_API */
1327 MeasureUnit(int32_t typeId, int32_t subTypeId) : fTypeId(typeId), fSubTypeId(subTypeId) {
1330 void setTo(int32_t typeId, int32_t subTypeId);
1331 int32_t getOffset() const;
1332 static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
1337 #endif // !UNCONFIG_NO_FORMATTING
1338 #endif // __MEASUREUNIT_H__