• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "utypeinfo.h" // for 'typeid' to work
14 
15 #include "unicode/measunit.h"
16 
17 #if !UCONFIG_NO_FORMATTING
18 
19 #include "unicode/uenum.h"
20 #include "unicode/errorcode.h"
21 #include "ustrenum.h"
22 #include "cstring.h"
23 #include "uassert.h"
24 #include "measunit_impl.h"
25 
26 U_NAMESPACE_BEGIN
27 
28 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MeasureUnit)
29 
30 // All code between the "Start generated code" comment and
31 // the "End generated code" comment is auto generated code
32 // and must not be edited manually. For instructions on how to correctly
33 // update this code, refer to:
34 // https://icu.unicode.org/design/formatting/measureformat/updating-measure-unit
35 //
36 // Start generated code for measunit.cpp
37 
38 // Maps from Type ID to offset in gSubTypes.
39 static const int32_t gOffsets[] = {
40     0,
41     2,
42     7,
43     17,
44     27,
45     31,
46     332,
47     343,
48     360,
49     364,
50     373,
51     376,
52     380,
53     388,
54     410,
55     414,
56     429,
57     430,
58     436,
59     446,
60     450,
61     454,
62     456,
63     490
64 };
65 
66 static const int32_t kCurrencyOffset = 5;
67 
68 // Must be sorted alphabetically.
69 static const char * const gTypes[] = {
70     "acceleration",
71     "angle",
72     "area",
73     "concentr",
74     "consumption",
75     "currency",
76     "digital",
77     "duration",
78     "electric",
79     "energy",
80     "force",
81     "frequency",
82     "graphics",
83     "length",
84     "light",
85     "mass",
86     "none",
87     "power",
88     "pressure",
89     "speed",
90     "temperature",
91     "torque",
92     "volume"
93 };
94 
95 // Must be grouped by type and sorted alphabetically within each type.
96 static const char * const gSubTypes[] = {
97     "g-force",
98     "meter-per-square-second",
99     "arc-minute",
100     "arc-second",
101     "degree",
102     "radian",
103     "revolution",
104     "acre",
105     "dunam",
106     "hectare",
107     "square-centimeter",
108     "square-foot",
109     "square-inch",
110     "square-kilometer",
111     "square-meter",
112     "square-mile",
113     "square-yard",
114     "item",
115     "karat",
116     "milligram-ofglucose-per-deciliter",
117     "milligram-per-deciliter",
118     "millimole-per-liter",
119     "mole",
120     "percent",
121     "permille",
122     "permillion",
123     "permyriad",
124     "liter-per-100-kilometer",
125     "liter-per-kilometer",
126     "mile-per-gallon",
127     "mile-per-gallon-imperial",
128     "ADP",
129     "AED",
130     "AFA",
131     "AFN",
132     "ALK",
133     "ALL",
134     "AMD",
135     "ANG",
136     "AOA",
137     "AOK",
138     "AON",
139     "AOR",
140     "ARA",
141     "ARP",
142     "ARS",
143     "ARY",
144     "ATS",
145     "AUD",
146     "AWG",
147     "AYM",
148     "AZM",
149     "AZN",
150     "BAD",
151     "BAM",
152     "BBD",
153     "BDT",
154     "BEC",
155     "BEF",
156     "BEL",
157     "BGJ",
158     "BGK",
159     "BGL",
160     "BGN",
161     "BHD",
162     "BIF",
163     "BMD",
164     "BND",
165     "BOB",
166     "BOP",
167     "BOV",
168     "BRB",
169     "BRC",
170     "BRE",
171     "BRL",
172     "BRN",
173     "BRR",
174     "BSD",
175     "BTN",
176     "BUK",
177     "BWP",
178     "BYB",
179     "BYN",
180     "BYR",
181     "BZD",
182     "CAD",
183     "CDF",
184     "CHC",
185     "CHE",
186     "CHF",
187     "CHW",
188     "CLF",
189     "CLP",
190     "CNY",
191     "COP",
192     "COU",
193     "CRC",
194     "CSD",
195     "CSJ",
196     "CSK",
197     "CUC",
198     "CUP",
199     "CVE",
200     "CYP",
201     "CZK",
202     "DDM",
203     "DEM",
204     "DJF",
205     "DKK",
206     "DOP",
207     "DZD",
208     "ECS",
209     "ECV",
210     "EEK",
211     "EGP",
212     "ERN",
213     "ESA",
214     "ESB",
215     "ESP",
216     "ETB",
217     "EUR",
218     "FIM",
219     "FJD",
220     "FKP",
221     "FRF",
222     "GBP",
223     "GEK",
224     "GEL",
225     "GHC",
226     "GHP",
227     "GHS",
228     "GIP",
229     "GMD",
230     "GNE",
231     "GNF",
232     "GNS",
233     "GQE",
234     "GRD",
235     "GTQ",
236     "GWE",
237     "GWP",
238     "GYD",
239     "HKD",
240     "HNL",
241     "HRD",
242     "HRK",
243     "HTG",
244     "HUF",
245     "IDR",
246     "IEP",
247     "ILP",
248     "ILR",
249     "ILS",
250     "INR",
251     "IQD",
252     "IRR",
253     "ISJ",
254     "ISK",
255     "ITL",
256     "JMD",
257     "JOD",
258     "JPY",
259     "KES",
260     "KGS",
261     "KHR",
262     "KMF",
263     "KPW",
264     "KRW",
265     "KWD",
266     "KYD",
267     "KZT",
268     "LAJ",
269     "LAK",
270     "LBP",
271     "LKR",
272     "LRD",
273     "LSL",
274     "LSM",
275     "LTL",
276     "LTT",
277     "LUC",
278     "LUF",
279     "LUL",
280     "LVL",
281     "LVR",
282     "LYD",
283     "MAD",
284     "MDL",
285     "MGA",
286     "MGF",
287     "MKD",
288     "MLF",
289     "MMK",
290     "MNT",
291     "MOP",
292     "MRO",
293     "MRU",
294     "MTL",
295     "MTP",
296     "MUR",
297     "MVQ",
298     "MVR",
299     "MWK",
300     "MXN",
301     "MXP",
302     "MXV",
303     "MYR",
304     "MZE",
305     "MZM",
306     "MZN",
307     "NAD",
308     "NGN",
309     "NIC",
310     "NIO",
311     "NLG",
312     "NOK",
313     "NPR",
314     "NZD",
315     "OMR",
316     "PAB",
317     "PEH",
318     "PEI",
319     "PEN",
320     "PES",
321     "PGK",
322     "PHP",
323     "PKR",
324     "PLN",
325     "PLZ",
326     "PTE",
327     "PYG",
328     "QAR",
329     "RHD",
330     "ROK",
331     "ROL",
332     "RON",
333     "RSD",
334     "RUB",
335     "RUR",
336     "RWF",
337     "SAR",
338     "SBD",
339     "SCR",
340     "SDD",
341     "SDG",
342     "SDP",
343     "SEK",
344     "SGD",
345     "SHP",
346     "SIT",
347     "SKK",
348     "SLE",
349     "SLL",
350     "SOS",
351     "SRD",
352     "SRG",
353     "SSP",
354     "STD",
355     "STN",
356     "SUR",
357     "SVC",
358     "SYP",
359     "SZL",
360     "THB",
361     "TJR",
362     "TJS",
363     "TMM",
364     "TMT",
365     "TND",
366     "TOP",
367     "TPE",
368     "TRL",
369     "TRY",
370     "TTD",
371     "TWD",
372     "TZS",
373     "UAH",
374     "UAK",
375     "UGS",
376     "UGW",
377     "UGX",
378     "USD",
379     "USN",
380     "USS",
381     "UYI",
382     "UYN",
383     "UYP",
384     "UYU",
385     "UYW",
386     "UZS",
387     "VEB",
388     "VED",
389     "VEF",
390     "VES",
391     "VNC",
392     "VND",
393     "VUV",
394     "WST",
395     "XAF",
396     "XAG",
397     "XAU",
398     "XBA",
399     "XBB",
400     "XBC",
401     "XBD",
402     "XCD",
403     "XDR",
404     "XEU",
405     "XOF",
406     "XPD",
407     "XPF",
408     "XPT",
409     "XSU",
410     "XTS",
411     "XUA",
412     "XXX",
413     "YDD",
414     "YER",
415     "YUD",
416     "YUM",
417     "YUN",
418     "ZAL",
419     "ZAR",
420     "ZMK",
421     "ZMW",
422     "ZRN",
423     "ZRZ",
424     "ZWC",
425     "ZWD",
426     "ZWL",
427     "ZWN",
428     "ZWR",
429     "bit",
430     "byte",
431     "gigabit",
432     "gigabyte",
433     "kilobit",
434     "kilobyte",
435     "megabit",
436     "megabyte",
437     "petabyte",
438     "terabit",
439     "terabyte",
440     "century",
441     "day",
442     "day-person",
443     "decade",
444     "hour",
445     "microsecond",
446     "millisecond",
447     "minute",
448     "month",
449     "month-person",
450     "nanosecond",
451     "quarter",
452     "second",
453     "week",
454     "week-person",
455     "year",
456     "year-person",
457     "ampere",
458     "milliampere",
459     "ohm",
460     "volt",
461     "british-thermal-unit",
462     "calorie",
463     "electronvolt",
464     "foodcalorie",
465     "joule",
466     "kilocalorie",
467     "kilojoule",
468     "kilowatt-hour",
469     "therm-us",
470     "kilowatt-hour-per-100-kilometer",
471     "newton",
472     "pound-force",
473     "gigahertz",
474     "hertz",
475     "kilohertz",
476     "megahertz",
477     "dot",
478     "dot-per-centimeter",
479     "dot-per-inch",
480     "em",
481     "megapixel",
482     "pixel",
483     "pixel-per-centimeter",
484     "pixel-per-inch",
485     "astronomical-unit",
486     "centimeter",
487     "decimeter",
488     "earth-radius",
489     "fathom",
490     "foot",
491     "furlong",
492     "inch",
493     "kilometer",
494     "light-year",
495     "meter",
496     "micrometer",
497     "mile",
498     "mile-scandinavian",
499     "millimeter",
500     "nanometer",
501     "nautical-mile",
502     "parsec",
503     "picometer",
504     "point",
505     "solar-radius",
506     "yard",
507     "candela",
508     "lumen",
509     "lux",
510     "solar-luminosity",
511     "carat",
512     "dalton",
513     "earth-mass",
514     "grain",
515     "gram",
516     "kilogram",
517     "microgram",
518     "milligram",
519     "ounce",
520     "ounce-troy",
521     "pound",
522     "solar-mass",
523     "stone",
524     "ton",
525     "tonne",
526     "",
527     "gigawatt",
528     "horsepower",
529     "kilowatt",
530     "megawatt",
531     "milliwatt",
532     "watt",
533     "atmosphere",
534     "bar",
535     "hectopascal",
536     "inch-ofhg",
537     "kilopascal",
538     "megapascal",
539     "millibar",
540     "millimeter-ofhg",
541     "pascal",
542     "pound-force-per-square-inch",
543     "kilometer-per-hour",
544     "knot",
545     "meter-per-second",
546     "mile-per-hour",
547     "celsius",
548     "fahrenheit",
549     "generic",
550     "kelvin",
551     "newton-meter",
552     "pound-force-foot",
553     "acre-foot",
554     "barrel",
555     "bushel",
556     "centiliter",
557     "cubic-centimeter",
558     "cubic-foot",
559     "cubic-inch",
560     "cubic-kilometer",
561     "cubic-meter",
562     "cubic-mile",
563     "cubic-yard",
564     "cup",
565     "cup-metric",
566     "deciliter",
567     "dessert-spoon",
568     "dessert-spoon-imperial",
569     "dram",
570     "drop",
571     "fluid-ounce",
572     "fluid-ounce-imperial",
573     "gallon",
574     "gallon-imperial",
575     "hectoliter",
576     "jigger",
577     "liter",
578     "megaliter",
579     "milliliter",
580     "pinch",
581     "pint",
582     "pint-metric",
583     "quart",
584     "quart-imperial",
585     "tablespoon",
586     "teaspoon"
587 };
588 
589 // Shortcuts to the base unit in order to make the default constructor fast
590 static const int32_t kBaseTypeIdx = 16;
591 static const int32_t kBaseSubTypeIdx = 0;
592 
createGForce(UErrorCode & status)593 MeasureUnit *MeasureUnit::createGForce(UErrorCode &status) {
594     return MeasureUnit::create(0, 0, status);
595 }
596 
getGForce()597 MeasureUnit MeasureUnit::getGForce() {
598     return MeasureUnit(0, 0);
599 }
600 
createMeterPerSecondSquared(UErrorCode & status)601 MeasureUnit *MeasureUnit::createMeterPerSecondSquared(UErrorCode &status) {
602     return MeasureUnit::create(0, 1, status);
603 }
604 
getMeterPerSecondSquared()605 MeasureUnit MeasureUnit::getMeterPerSecondSquared() {
606     return MeasureUnit(0, 1);
607 }
608 
createArcMinute(UErrorCode & status)609 MeasureUnit *MeasureUnit::createArcMinute(UErrorCode &status) {
610     return MeasureUnit::create(1, 0, status);
611 }
612 
getArcMinute()613 MeasureUnit MeasureUnit::getArcMinute() {
614     return MeasureUnit(1, 0);
615 }
616 
createArcSecond(UErrorCode & status)617 MeasureUnit *MeasureUnit::createArcSecond(UErrorCode &status) {
618     return MeasureUnit::create(1, 1, status);
619 }
620 
getArcSecond()621 MeasureUnit MeasureUnit::getArcSecond() {
622     return MeasureUnit(1, 1);
623 }
624 
createDegree(UErrorCode & status)625 MeasureUnit *MeasureUnit::createDegree(UErrorCode &status) {
626     return MeasureUnit::create(1, 2, status);
627 }
628 
getDegree()629 MeasureUnit MeasureUnit::getDegree() {
630     return MeasureUnit(1, 2);
631 }
632 
createRadian(UErrorCode & status)633 MeasureUnit *MeasureUnit::createRadian(UErrorCode &status) {
634     return MeasureUnit::create(1, 3, status);
635 }
636 
getRadian()637 MeasureUnit MeasureUnit::getRadian() {
638     return MeasureUnit(1, 3);
639 }
640 
createRevolutionAngle(UErrorCode & status)641 MeasureUnit *MeasureUnit::createRevolutionAngle(UErrorCode &status) {
642     return MeasureUnit::create(1, 4, status);
643 }
644 
getRevolutionAngle()645 MeasureUnit MeasureUnit::getRevolutionAngle() {
646     return MeasureUnit(1, 4);
647 }
648 
createAcre(UErrorCode & status)649 MeasureUnit *MeasureUnit::createAcre(UErrorCode &status) {
650     return MeasureUnit::create(2, 0, status);
651 }
652 
getAcre()653 MeasureUnit MeasureUnit::getAcre() {
654     return MeasureUnit(2, 0);
655 }
656 
createDunam(UErrorCode & status)657 MeasureUnit *MeasureUnit::createDunam(UErrorCode &status) {
658     return MeasureUnit::create(2, 1, status);
659 }
660 
getDunam()661 MeasureUnit MeasureUnit::getDunam() {
662     return MeasureUnit(2, 1);
663 }
664 
createHectare(UErrorCode & status)665 MeasureUnit *MeasureUnit::createHectare(UErrorCode &status) {
666     return MeasureUnit::create(2, 2, status);
667 }
668 
getHectare()669 MeasureUnit MeasureUnit::getHectare() {
670     return MeasureUnit(2, 2);
671 }
672 
createSquareCentimeter(UErrorCode & status)673 MeasureUnit *MeasureUnit::createSquareCentimeter(UErrorCode &status) {
674     return MeasureUnit::create(2, 3, status);
675 }
676 
getSquareCentimeter()677 MeasureUnit MeasureUnit::getSquareCentimeter() {
678     return MeasureUnit(2, 3);
679 }
680 
createSquareFoot(UErrorCode & status)681 MeasureUnit *MeasureUnit::createSquareFoot(UErrorCode &status) {
682     return MeasureUnit::create(2, 4, status);
683 }
684 
getSquareFoot()685 MeasureUnit MeasureUnit::getSquareFoot() {
686     return MeasureUnit(2, 4);
687 }
688 
createSquareInch(UErrorCode & status)689 MeasureUnit *MeasureUnit::createSquareInch(UErrorCode &status) {
690     return MeasureUnit::create(2, 5, status);
691 }
692 
getSquareInch()693 MeasureUnit MeasureUnit::getSquareInch() {
694     return MeasureUnit(2, 5);
695 }
696 
createSquareKilometer(UErrorCode & status)697 MeasureUnit *MeasureUnit::createSquareKilometer(UErrorCode &status) {
698     return MeasureUnit::create(2, 6, status);
699 }
700 
getSquareKilometer()701 MeasureUnit MeasureUnit::getSquareKilometer() {
702     return MeasureUnit(2, 6);
703 }
704 
createSquareMeter(UErrorCode & status)705 MeasureUnit *MeasureUnit::createSquareMeter(UErrorCode &status) {
706     return MeasureUnit::create(2, 7, status);
707 }
708 
getSquareMeter()709 MeasureUnit MeasureUnit::getSquareMeter() {
710     return MeasureUnit(2, 7);
711 }
712 
createSquareMile(UErrorCode & status)713 MeasureUnit *MeasureUnit::createSquareMile(UErrorCode &status) {
714     return MeasureUnit::create(2, 8, status);
715 }
716 
getSquareMile()717 MeasureUnit MeasureUnit::getSquareMile() {
718     return MeasureUnit(2, 8);
719 }
720 
createSquareYard(UErrorCode & status)721 MeasureUnit *MeasureUnit::createSquareYard(UErrorCode &status) {
722     return MeasureUnit::create(2, 9, status);
723 }
724 
getSquareYard()725 MeasureUnit MeasureUnit::getSquareYard() {
726     return MeasureUnit(2, 9);
727 }
728 
createItem(UErrorCode & status)729 MeasureUnit *MeasureUnit::createItem(UErrorCode &status) {
730     return MeasureUnit::create(3, 0, status);
731 }
732 
getItem()733 MeasureUnit MeasureUnit::getItem() {
734     return MeasureUnit(3, 0);
735 }
736 
createKarat(UErrorCode & status)737 MeasureUnit *MeasureUnit::createKarat(UErrorCode &status) {
738     return MeasureUnit::create(3, 1, status);
739 }
740 
getKarat()741 MeasureUnit MeasureUnit::getKarat() {
742     return MeasureUnit(3, 1);
743 }
744 
createMilligramOfglucosePerDeciliter(UErrorCode & status)745 MeasureUnit *MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode &status) {
746     return MeasureUnit::create(3, 2, status);
747 }
748 
getMilligramOfglucosePerDeciliter()749 MeasureUnit MeasureUnit::getMilligramOfglucosePerDeciliter() {
750     return MeasureUnit(3, 2);
751 }
752 
createMilligramPerDeciliter(UErrorCode & status)753 MeasureUnit *MeasureUnit::createMilligramPerDeciliter(UErrorCode &status) {
754     return MeasureUnit::create(3, 3, status);
755 }
756 
getMilligramPerDeciliter()757 MeasureUnit MeasureUnit::getMilligramPerDeciliter() {
758     return MeasureUnit(3, 3);
759 }
760 
createMillimolePerLiter(UErrorCode & status)761 MeasureUnit *MeasureUnit::createMillimolePerLiter(UErrorCode &status) {
762     return MeasureUnit::create(3, 4, status);
763 }
764 
getMillimolePerLiter()765 MeasureUnit MeasureUnit::getMillimolePerLiter() {
766     return MeasureUnit(3, 4);
767 }
768 
createMole(UErrorCode & status)769 MeasureUnit *MeasureUnit::createMole(UErrorCode &status) {
770     return MeasureUnit::create(3, 5, status);
771 }
772 
getMole()773 MeasureUnit MeasureUnit::getMole() {
774     return MeasureUnit(3, 5);
775 }
776 
createPercent(UErrorCode & status)777 MeasureUnit *MeasureUnit::createPercent(UErrorCode &status) {
778     return MeasureUnit::create(3, 6, status);
779 }
780 
getPercent()781 MeasureUnit MeasureUnit::getPercent() {
782     return MeasureUnit(3, 6);
783 }
784 
createPermille(UErrorCode & status)785 MeasureUnit *MeasureUnit::createPermille(UErrorCode &status) {
786     return MeasureUnit::create(3, 7, status);
787 }
788 
getPermille()789 MeasureUnit MeasureUnit::getPermille() {
790     return MeasureUnit(3, 7);
791 }
792 
createPartPerMillion(UErrorCode & status)793 MeasureUnit *MeasureUnit::createPartPerMillion(UErrorCode &status) {
794     return MeasureUnit::create(3, 8, status);
795 }
796 
getPartPerMillion()797 MeasureUnit MeasureUnit::getPartPerMillion() {
798     return MeasureUnit(3, 8);
799 }
800 
createPermyriad(UErrorCode & status)801 MeasureUnit *MeasureUnit::createPermyriad(UErrorCode &status) {
802     return MeasureUnit::create(3, 9, status);
803 }
804 
getPermyriad()805 MeasureUnit MeasureUnit::getPermyriad() {
806     return MeasureUnit(3, 9);
807 }
808 
createLiterPer100Kilometers(UErrorCode & status)809 MeasureUnit *MeasureUnit::createLiterPer100Kilometers(UErrorCode &status) {
810     return MeasureUnit::create(4, 0, status);
811 }
812 
getLiterPer100Kilometers()813 MeasureUnit MeasureUnit::getLiterPer100Kilometers() {
814     return MeasureUnit(4, 0);
815 }
816 
createLiterPerKilometer(UErrorCode & status)817 MeasureUnit *MeasureUnit::createLiterPerKilometer(UErrorCode &status) {
818     return MeasureUnit::create(4, 1, status);
819 }
820 
getLiterPerKilometer()821 MeasureUnit MeasureUnit::getLiterPerKilometer() {
822     return MeasureUnit(4, 1);
823 }
824 
createMilePerGallon(UErrorCode & status)825 MeasureUnit *MeasureUnit::createMilePerGallon(UErrorCode &status) {
826     return MeasureUnit::create(4, 2, status);
827 }
828 
getMilePerGallon()829 MeasureUnit MeasureUnit::getMilePerGallon() {
830     return MeasureUnit(4, 2);
831 }
832 
createMilePerGallonImperial(UErrorCode & status)833 MeasureUnit *MeasureUnit::createMilePerGallonImperial(UErrorCode &status) {
834     return MeasureUnit::create(4, 3, status);
835 }
836 
getMilePerGallonImperial()837 MeasureUnit MeasureUnit::getMilePerGallonImperial() {
838     return MeasureUnit(4, 3);
839 }
840 
createBit(UErrorCode & status)841 MeasureUnit *MeasureUnit::createBit(UErrorCode &status) {
842     return MeasureUnit::create(6, 0, status);
843 }
844 
getBit()845 MeasureUnit MeasureUnit::getBit() {
846     return MeasureUnit(6, 0);
847 }
848 
createByte(UErrorCode & status)849 MeasureUnit *MeasureUnit::createByte(UErrorCode &status) {
850     return MeasureUnit::create(6, 1, status);
851 }
852 
getByte()853 MeasureUnit MeasureUnit::getByte() {
854     return MeasureUnit(6, 1);
855 }
856 
createGigabit(UErrorCode & status)857 MeasureUnit *MeasureUnit::createGigabit(UErrorCode &status) {
858     return MeasureUnit::create(6, 2, status);
859 }
860 
getGigabit()861 MeasureUnit MeasureUnit::getGigabit() {
862     return MeasureUnit(6, 2);
863 }
864 
createGigabyte(UErrorCode & status)865 MeasureUnit *MeasureUnit::createGigabyte(UErrorCode &status) {
866     return MeasureUnit::create(6, 3, status);
867 }
868 
getGigabyte()869 MeasureUnit MeasureUnit::getGigabyte() {
870     return MeasureUnit(6, 3);
871 }
872 
createKilobit(UErrorCode & status)873 MeasureUnit *MeasureUnit::createKilobit(UErrorCode &status) {
874     return MeasureUnit::create(6, 4, status);
875 }
876 
getKilobit()877 MeasureUnit MeasureUnit::getKilobit() {
878     return MeasureUnit(6, 4);
879 }
880 
createKilobyte(UErrorCode & status)881 MeasureUnit *MeasureUnit::createKilobyte(UErrorCode &status) {
882     return MeasureUnit::create(6, 5, status);
883 }
884 
getKilobyte()885 MeasureUnit MeasureUnit::getKilobyte() {
886     return MeasureUnit(6, 5);
887 }
888 
createMegabit(UErrorCode & status)889 MeasureUnit *MeasureUnit::createMegabit(UErrorCode &status) {
890     return MeasureUnit::create(6, 6, status);
891 }
892 
getMegabit()893 MeasureUnit MeasureUnit::getMegabit() {
894     return MeasureUnit(6, 6);
895 }
896 
createMegabyte(UErrorCode & status)897 MeasureUnit *MeasureUnit::createMegabyte(UErrorCode &status) {
898     return MeasureUnit::create(6, 7, status);
899 }
900 
getMegabyte()901 MeasureUnit MeasureUnit::getMegabyte() {
902     return MeasureUnit(6, 7);
903 }
904 
createPetabyte(UErrorCode & status)905 MeasureUnit *MeasureUnit::createPetabyte(UErrorCode &status) {
906     return MeasureUnit::create(6, 8, status);
907 }
908 
getPetabyte()909 MeasureUnit MeasureUnit::getPetabyte() {
910     return MeasureUnit(6, 8);
911 }
912 
createTerabit(UErrorCode & status)913 MeasureUnit *MeasureUnit::createTerabit(UErrorCode &status) {
914     return MeasureUnit::create(6, 9, status);
915 }
916 
getTerabit()917 MeasureUnit MeasureUnit::getTerabit() {
918     return MeasureUnit(6, 9);
919 }
920 
createTerabyte(UErrorCode & status)921 MeasureUnit *MeasureUnit::createTerabyte(UErrorCode &status) {
922     return MeasureUnit::create(6, 10, status);
923 }
924 
getTerabyte()925 MeasureUnit MeasureUnit::getTerabyte() {
926     return MeasureUnit(6, 10);
927 }
928 
createCentury(UErrorCode & status)929 MeasureUnit *MeasureUnit::createCentury(UErrorCode &status) {
930     return MeasureUnit::create(7, 0, status);
931 }
932 
getCentury()933 MeasureUnit MeasureUnit::getCentury() {
934     return MeasureUnit(7, 0);
935 }
936 
createDay(UErrorCode & status)937 MeasureUnit *MeasureUnit::createDay(UErrorCode &status) {
938     return MeasureUnit::create(7, 1, status);
939 }
940 
getDay()941 MeasureUnit MeasureUnit::getDay() {
942     return MeasureUnit(7, 1);
943 }
944 
createDayPerson(UErrorCode & status)945 MeasureUnit *MeasureUnit::createDayPerson(UErrorCode &status) {
946     return MeasureUnit::create(7, 2, status);
947 }
948 
getDayPerson()949 MeasureUnit MeasureUnit::getDayPerson() {
950     return MeasureUnit(7, 2);
951 }
952 
createDecade(UErrorCode & status)953 MeasureUnit *MeasureUnit::createDecade(UErrorCode &status) {
954     return MeasureUnit::create(7, 3, status);
955 }
956 
getDecade()957 MeasureUnit MeasureUnit::getDecade() {
958     return MeasureUnit(7, 3);
959 }
960 
createHour(UErrorCode & status)961 MeasureUnit *MeasureUnit::createHour(UErrorCode &status) {
962     return MeasureUnit::create(7, 4, status);
963 }
964 
getHour()965 MeasureUnit MeasureUnit::getHour() {
966     return MeasureUnit(7, 4);
967 }
968 
createMicrosecond(UErrorCode & status)969 MeasureUnit *MeasureUnit::createMicrosecond(UErrorCode &status) {
970     return MeasureUnit::create(7, 5, status);
971 }
972 
getMicrosecond()973 MeasureUnit MeasureUnit::getMicrosecond() {
974     return MeasureUnit(7, 5);
975 }
976 
createMillisecond(UErrorCode & status)977 MeasureUnit *MeasureUnit::createMillisecond(UErrorCode &status) {
978     return MeasureUnit::create(7, 6, status);
979 }
980 
getMillisecond()981 MeasureUnit MeasureUnit::getMillisecond() {
982     return MeasureUnit(7, 6);
983 }
984 
createMinute(UErrorCode & status)985 MeasureUnit *MeasureUnit::createMinute(UErrorCode &status) {
986     return MeasureUnit::create(7, 7, status);
987 }
988 
getMinute()989 MeasureUnit MeasureUnit::getMinute() {
990     return MeasureUnit(7, 7);
991 }
992 
createMonth(UErrorCode & status)993 MeasureUnit *MeasureUnit::createMonth(UErrorCode &status) {
994     return MeasureUnit::create(7, 8, status);
995 }
996 
getMonth()997 MeasureUnit MeasureUnit::getMonth() {
998     return MeasureUnit(7, 8);
999 }
1000 
createMonthPerson(UErrorCode & status)1001 MeasureUnit *MeasureUnit::createMonthPerson(UErrorCode &status) {
1002     return MeasureUnit::create(7, 9, status);
1003 }
1004 
getMonthPerson()1005 MeasureUnit MeasureUnit::getMonthPerson() {
1006     return MeasureUnit(7, 9);
1007 }
1008 
createNanosecond(UErrorCode & status)1009 MeasureUnit *MeasureUnit::createNanosecond(UErrorCode &status) {
1010     return MeasureUnit::create(7, 10, status);
1011 }
1012 
getNanosecond()1013 MeasureUnit MeasureUnit::getNanosecond() {
1014     return MeasureUnit(7, 10);
1015 }
1016 
createQuarter(UErrorCode & status)1017 MeasureUnit *MeasureUnit::createQuarter(UErrorCode &status) {
1018     return MeasureUnit::create(7, 11, status);
1019 }
1020 
getQuarter()1021 MeasureUnit MeasureUnit::getQuarter() {
1022     return MeasureUnit(7, 11);
1023 }
1024 
createSecond(UErrorCode & status)1025 MeasureUnit *MeasureUnit::createSecond(UErrorCode &status) {
1026     return MeasureUnit::create(7, 12, status);
1027 }
1028 
getSecond()1029 MeasureUnit MeasureUnit::getSecond() {
1030     return MeasureUnit(7, 12);
1031 }
1032 
createWeek(UErrorCode & status)1033 MeasureUnit *MeasureUnit::createWeek(UErrorCode &status) {
1034     return MeasureUnit::create(7, 13, status);
1035 }
1036 
getWeek()1037 MeasureUnit MeasureUnit::getWeek() {
1038     return MeasureUnit(7, 13);
1039 }
1040 
createWeekPerson(UErrorCode & status)1041 MeasureUnit *MeasureUnit::createWeekPerson(UErrorCode &status) {
1042     return MeasureUnit::create(7, 14, status);
1043 }
1044 
getWeekPerson()1045 MeasureUnit MeasureUnit::getWeekPerson() {
1046     return MeasureUnit(7, 14);
1047 }
1048 
createYear(UErrorCode & status)1049 MeasureUnit *MeasureUnit::createYear(UErrorCode &status) {
1050     return MeasureUnit::create(7, 15, status);
1051 }
1052 
getYear()1053 MeasureUnit MeasureUnit::getYear() {
1054     return MeasureUnit(7, 15);
1055 }
1056 
createYearPerson(UErrorCode & status)1057 MeasureUnit *MeasureUnit::createYearPerson(UErrorCode &status) {
1058     return MeasureUnit::create(7, 16, status);
1059 }
1060 
getYearPerson()1061 MeasureUnit MeasureUnit::getYearPerson() {
1062     return MeasureUnit(7, 16);
1063 }
1064 
createAmpere(UErrorCode & status)1065 MeasureUnit *MeasureUnit::createAmpere(UErrorCode &status) {
1066     return MeasureUnit::create(8, 0, status);
1067 }
1068 
getAmpere()1069 MeasureUnit MeasureUnit::getAmpere() {
1070     return MeasureUnit(8, 0);
1071 }
1072 
createMilliampere(UErrorCode & status)1073 MeasureUnit *MeasureUnit::createMilliampere(UErrorCode &status) {
1074     return MeasureUnit::create(8, 1, status);
1075 }
1076 
getMilliampere()1077 MeasureUnit MeasureUnit::getMilliampere() {
1078     return MeasureUnit(8, 1);
1079 }
1080 
createOhm(UErrorCode & status)1081 MeasureUnit *MeasureUnit::createOhm(UErrorCode &status) {
1082     return MeasureUnit::create(8, 2, status);
1083 }
1084 
getOhm()1085 MeasureUnit MeasureUnit::getOhm() {
1086     return MeasureUnit(8, 2);
1087 }
1088 
createVolt(UErrorCode & status)1089 MeasureUnit *MeasureUnit::createVolt(UErrorCode &status) {
1090     return MeasureUnit::create(8, 3, status);
1091 }
1092 
getVolt()1093 MeasureUnit MeasureUnit::getVolt() {
1094     return MeasureUnit(8, 3);
1095 }
1096 
createBritishThermalUnit(UErrorCode & status)1097 MeasureUnit *MeasureUnit::createBritishThermalUnit(UErrorCode &status) {
1098     return MeasureUnit::create(9, 0, status);
1099 }
1100 
getBritishThermalUnit()1101 MeasureUnit MeasureUnit::getBritishThermalUnit() {
1102     return MeasureUnit(9, 0);
1103 }
1104 
createCalorie(UErrorCode & status)1105 MeasureUnit *MeasureUnit::createCalorie(UErrorCode &status) {
1106     return MeasureUnit::create(9, 1, status);
1107 }
1108 
getCalorie()1109 MeasureUnit MeasureUnit::getCalorie() {
1110     return MeasureUnit(9, 1);
1111 }
1112 
createElectronvolt(UErrorCode & status)1113 MeasureUnit *MeasureUnit::createElectronvolt(UErrorCode &status) {
1114     return MeasureUnit::create(9, 2, status);
1115 }
1116 
getElectronvolt()1117 MeasureUnit MeasureUnit::getElectronvolt() {
1118     return MeasureUnit(9, 2);
1119 }
1120 
createFoodcalorie(UErrorCode & status)1121 MeasureUnit *MeasureUnit::createFoodcalorie(UErrorCode &status) {
1122     return MeasureUnit::create(9, 3, status);
1123 }
1124 
getFoodcalorie()1125 MeasureUnit MeasureUnit::getFoodcalorie() {
1126     return MeasureUnit(9, 3);
1127 }
1128 
createJoule(UErrorCode & status)1129 MeasureUnit *MeasureUnit::createJoule(UErrorCode &status) {
1130     return MeasureUnit::create(9, 4, status);
1131 }
1132 
getJoule()1133 MeasureUnit MeasureUnit::getJoule() {
1134     return MeasureUnit(9, 4);
1135 }
1136 
createKilocalorie(UErrorCode & status)1137 MeasureUnit *MeasureUnit::createKilocalorie(UErrorCode &status) {
1138     return MeasureUnit::create(9, 5, status);
1139 }
1140 
getKilocalorie()1141 MeasureUnit MeasureUnit::getKilocalorie() {
1142     return MeasureUnit(9, 5);
1143 }
1144 
createKilojoule(UErrorCode & status)1145 MeasureUnit *MeasureUnit::createKilojoule(UErrorCode &status) {
1146     return MeasureUnit::create(9, 6, status);
1147 }
1148 
getKilojoule()1149 MeasureUnit MeasureUnit::getKilojoule() {
1150     return MeasureUnit(9, 6);
1151 }
1152 
createKilowattHour(UErrorCode & status)1153 MeasureUnit *MeasureUnit::createKilowattHour(UErrorCode &status) {
1154     return MeasureUnit::create(9, 7, status);
1155 }
1156 
getKilowattHour()1157 MeasureUnit MeasureUnit::getKilowattHour() {
1158     return MeasureUnit(9, 7);
1159 }
1160 
createThermUs(UErrorCode & status)1161 MeasureUnit *MeasureUnit::createThermUs(UErrorCode &status) {
1162     return MeasureUnit::create(9, 8, status);
1163 }
1164 
getThermUs()1165 MeasureUnit MeasureUnit::getThermUs() {
1166     return MeasureUnit(9, 8);
1167 }
1168 
createKilowattHourPer100Kilometer(UErrorCode & status)1169 MeasureUnit *MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode &status) {
1170     return MeasureUnit::create(10, 0, status);
1171 }
1172 
getKilowattHourPer100Kilometer()1173 MeasureUnit MeasureUnit::getKilowattHourPer100Kilometer() {
1174     return MeasureUnit(10, 0);
1175 }
1176 
createNewton(UErrorCode & status)1177 MeasureUnit *MeasureUnit::createNewton(UErrorCode &status) {
1178     return MeasureUnit::create(10, 1, status);
1179 }
1180 
getNewton()1181 MeasureUnit MeasureUnit::getNewton() {
1182     return MeasureUnit(10, 1);
1183 }
1184 
createPoundForce(UErrorCode & status)1185 MeasureUnit *MeasureUnit::createPoundForce(UErrorCode &status) {
1186     return MeasureUnit::create(10, 2, status);
1187 }
1188 
getPoundForce()1189 MeasureUnit MeasureUnit::getPoundForce() {
1190     return MeasureUnit(10, 2);
1191 }
1192 
createGigahertz(UErrorCode & status)1193 MeasureUnit *MeasureUnit::createGigahertz(UErrorCode &status) {
1194     return MeasureUnit::create(11, 0, status);
1195 }
1196 
getGigahertz()1197 MeasureUnit MeasureUnit::getGigahertz() {
1198     return MeasureUnit(11, 0);
1199 }
1200 
createHertz(UErrorCode & status)1201 MeasureUnit *MeasureUnit::createHertz(UErrorCode &status) {
1202     return MeasureUnit::create(11, 1, status);
1203 }
1204 
getHertz()1205 MeasureUnit MeasureUnit::getHertz() {
1206     return MeasureUnit(11, 1);
1207 }
1208 
createKilohertz(UErrorCode & status)1209 MeasureUnit *MeasureUnit::createKilohertz(UErrorCode &status) {
1210     return MeasureUnit::create(11, 2, status);
1211 }
1212 
getKilohertz()1213 MeasureUnit MeasureUnit::getKilohertz() {
1214     return MeasureUnit(11, 2);
1215 }
1216 
createMegahertz(UErrorCode & status)1217 MeasureUnit *MeasureUnit::createMegahertz(UErrorCode &status) {
1218     return MeasureUnit::create(11, 3, status);
1219 }
1220 
getMegahertz()1221 MeasureUnit MeasureUnit::getMegahertz() {
1222     return MeasureUnit(11, 3);
1223 }
1224 
createDot(UErrorCode & status)1225 MeasureUnit *MeasureUnit::createDot(UErrorCode &status) {
1226     return MeasureUnit::create(12, 0, status);
1227 }
1228 
getDot()1229 MeasureUnit MeasureUnit::getDot() {
1230     return MeasureUnit(12, 0);
1231 }
1232 
createDotPerCentimeter(UErrorCode & status)1233 MeasureUnit *MeasureUnit::createDotPerCentimeter(UErrorCode &status) {
1234     return MeasureUnit::create(12, 1, status);
1235 }
1236 
getDotPerCentimeter()1237 MeasureUnit MeasureUnit::getDotPerCentimeter() {
1238     return MeasureUnit(12, 1);
1239 }
1240 
createDotPerInch(UErrorCode & status)1241 MeasureUnit *MeasureUnit::createDotPerInch(UErrorCode &status) {
1242     return MeasureUnit::create(12, 2, status);
1243 }
1244 
getDotPerInch()1245 MeasureUnit MeasureUnit::getDotPerInch() {
1246     return MeasureUnit(12, 2);
1247 }
1248 
createEm(UErrorCode & status)1249 MeasureUnit *MeasureUnit::createEm(UErrorCode &status) {
1250     return MeasureUnit::create(12, 3, status);
1251 }
1252 
getEm()1253 MeasureUnit MeasureUnit::getEm() {
1254     return MeasureUnit(12, 3);
1255 }
1256 
createMegapixel(UErrorCode & status)1257 MeasureUnit *MeasureUnit::createMegapixel(UErrorCode &status) {
1258     return MeasureUnit::create(12, 4, status);
1259 }
1260 
getMegapixel()1261 MeasureUnit MeasureUnit::getMegapixel() {
1262     return MeasureUnit(12, 4);
1263 }
1264 
createPixel(UErrorCode & status)1265 MeasureUnit *MeasureUnit::createPixel(UErrorCode &status) {
1266     return MeasureUnit::create(12, 5, status);
1267 }
1268 
getPixel()1269 MeasureUnit MeasureUnit::getPixel() {
1270     return MeasureUnit(12, 5);
1271 }
1272 
createPixelPerCentimeter(UErrorCode & status)1273 MeasureUnit *MeasureUnit::createPixelPerCentimeter(UErrorCode &status) {
1274     return MeasureUnit::create(12, 6, status);
1275 }
1276 
getPixelPerCentimeter()1277 MeasureUnit MeasureUnit::getPixelPerCentimeter() {
1278     return MeasureUnit(12, 6);
1279 }
1280 
createPixelPerInch(UErrorCode & status)1281 MeasureUnit *MeasureUnit::createPixelPerInch(UErrorCode &status) {
1282     return MeasureUnit::create(12, 7, status);
1283 }
1284 
getPixelPerInch()1285 MeasureUnit MeasureUnit::getPixelPerInch() {
1286     return MeasureUnit(12, 7);
1287 }
1288 
createAstronomicalUnit(UErrorCode & status)1289 MeasureUnit *MeasureUnit::createAstronomicalUnit(UErrorCode &status) {
1290     return MeasureUnit::create(13, 0, status);
1291 }
1292 
getAstronomicalUnit()1293 MeasureUnit MeasureUnit::getAstronomicalUnit() {
1294     return MeasureUnit(13, 0);
1295 }
1296 
createCentimeter(UErrorCode & status)1297 MeasureUnit *MeasureUnit::createCentimeter(UErrorCode &status) {
1298     return MeasureUnit::create(13, 1, status);
1299 }
1300 
getCentimeter()1301 MeasureUnit MeasureUnit::getCentimeter() {
1302     return MeasureUnit(13, 1);
1303 }
1304 
createDecimeter(UErrorCode & status)1305 MeasureUnit *MeasureUnit::createDecimeter(UErrorCode &status) {
1306     return MeasureUnit::create(13, 2, status);
1307 }
1308 
getDecimeter()1309 MeasureUnit MeasureUnit::getDecimeter() {
1310     return MeasureUnit(13, 2);
1311 }
1312 
createEarthRadius(UErrorCode & status)1313 MeasureUnit *MeasureUnit::createEarthRadius(UErrorCode &status) {
1314     return MeasureUnit::create(13, 3, status);
1315 }
1316 
getEarthRadius()1317 MeasureUnit MeasureUnit::getEarthRadius() {
1318     return MeasureUnit(13, 3);
1319 }
1320 
createFathom(UErrorCode & status)1321 MeasureUnit *MeasureUnit::createFathom(UErrorCode &status) {
1322     return MeasureUnit::create(13, 4, status);
1323 }
1324 
getFathom()1325 MeasureUnit MeasureUnit::getFathom() {
1326     return MeasureUnit(13, 4);
1327 }
1328 
createFoot(UErrorCode & status)1329 MeasureUnit *MeasureUnit::createFoot(UErrorCode &status) {
1330     return MeasureUnit::create(13, 5, status);
1331 }
1332 
getFoot()1333 MeasureUnit MeasureUnit::getFoot() {
1334     return MeasureUnit(13, 5);
1335 }
1336 
createFurlong(UErrorCode & status)1337 MeasureUnit *MeasureUnit::createFurlong(UErrorCode &status) {
1338     return MeasureUnit::create(13, 6, status);
1339 }
1340 
getFurlong()1341 MeasureUnit MeasureUnit::getFurlong() {
1342     return MeasureUnit(13, 6);
1343 }
1344 
createInch(UErrorCode & status)1345 MeasureUnit *MeasureUnit::createInch(UErrorCode &status) {
1346     return MeasureUnit::create(13, 7, status);
1347 }
1348 
getInch()1349 MeasureUnit MeasureUnit::getInch() {
1350     return MeasureUnit(13, 7);
1351 }
1352 
createKilometer(UErrorCode & status)1353 MeasureUnit *MeasureUnit::createKilometer(UErrorCode &status) {
1354     return MeasureUnit::create(13, 8, status);
1355 }
1356 
getKilometer()1357 MeasureUnit MeasureUnit::getKilometer() {
1358     return MeasureUnit(13, 8);
1359 }
1360 
createLightYear(UErrorCode & status)1361 MeasureUnit *MeasureUnit::createLightYear(UErrorCode &status) {
1362     return MeasureUnit::create(13, 9, status);
1363 }
1364 
getLightYear()1365 MeasureUnit MeasureUnit::getLightYear() {
1366     return MeasureUnit(13, 9);
1367 }
1368 
createMeter(UErrorCode & status)1369 MeasureUnit *MeasureUnit::createMeter(UErrorCode &status) {
1370     return MeasureUnit::create(13, 10, status);
1371 }
1372 
getMeter()1373 MeasureUnit MeasureUnit::getMeter() {
1374     return MeasureUnit(13, 10);
1375 }
1376 
createMicrometer(UErrorCode & status)1377 MeasureUnit *MeasureUnit::createMicrometer(UErrorCode &status) {
1378     return MeasureUnit::create(13, 11, status);
1379 }
1380 
getMicrometer()1381 MeasureUnit MeasureUnit::getMicrometer() {
1382     return MeasureUnit(13, 11);
1383 }
1384 
createMile(UErrorCode & status)1385 MeasureUnit *MeasureUnit::createMile(UErrorCode &status) {
1386     return MeasureUnit::create(13, 12, status);
1387 }
1388 
getMile()1389 MeasureUnit MeasureUnit::getMile() {
1390     return MeasureUnit(13, 12);
1391 }
1392 
createMileScandinavian(UErrorCode & status)1393 MeasureUnit *MeasureUnit::createMileScandinavian(UErrorCode &status) {
1394     return MeasureUnit::create(13, 13, status);
1395 }
1396 
getMileScandinavian()1397 MeasureUnit MeasureUnit::getMileScandinavian() {
1398     return MeasureUnit(13, 13);
1399 }
1400 
createMillimeter(UErrorCode & status)1401 MeasureUnit *MeasureUnit::createMillimeter(UErrorCode &status) {
1402     return MeasureUnit::create(13, 14, status);
1403 }
1404 
getMillimeter()1405 MeasureUnit MeasureUnit::getMillimeter() {
1406     return MeasureUnit(13, 14);
1407 }
1408 
createNanometer(UErrorCode & status)1409 MeasureUnit *MeasureUnit::createNanometer(UErrorCode &status) {
1410     return MeasureUnit::create(13, 15, status);
1411 }
1412 
getNanometer()1413 MeasureUnit MeasureUnit::getNanometer() {
1414     return MeasureUnit(13, 15);
1415 }
1416 
createNauticalMile(UErrorCode & status)1417 MeasureUnit *MeasureUnit::createNauticalMile(UErrorCode &status) {
1418     return MeasureUnit::create(13, 16, status);
1419 }
1420 
getNauticalMile()1421 MeasureUnit MeasureUnit::getNauticalMile() {
1422     return MeasureUnit(13, 16);
1423 }
1424 
createParsec(UErrorCode & status)1425 MeasureUnit *MeasureUnit::createParsec(UErrorCode &status) {
1426     return MeasureUnit::create(13, 17, status);
1427 }
1428 
getParsec()1429 MeasureUnit MeasureUnit::getParsec() {
1430     return MeasureUnit(13, 17);
1431 }
1432 
createPicometer(UErrorCode & status)1433 MeasureUnit *MeasureUnit::createPicometer(UErrorCode &status) {
1434     return MeasureUnit::create(13, 18, status);
1435 }
1436 
getPicometer()1437 MeasureUnit MeasureUnit::getPicometer() {
1438     return MeasureUnit(13, 18);
1439 }
1440 
createPoint(UErrorCode & status)1441 MeasureUnit *MeasureUnit::createPoint(UErrorCode &status) {
1442     return MeasureUnit::create(13, 19, status);
1443 }
1444 
getPoint()1445 MeasureUnit MeasureUnit::getPoint() {
1446     return MeasureUnit(13, 19);
1447 }
1448 
createSolarRadius(UErrorCode & status)1449 MeasureUnit *MeasureUnit::createSolarRadius(UErrorCode &status) {
1450     return MeasureUnit::create(13, 20, status);
1451 }
1452 
getSolarRadius()1453 MeasureUnit MeasureUnit::getSolarRadius() {
1454     return MeasureUnit(13, 20);
1455 }
1456 
createYard(UErrorCode & status)1457 MeasureUnit *MeasureUnit::createYard(UErrorCode &status) {
1458     return MeasureUnit::create(13, 21, status);
1459 }
1460 
getYard()1461 MeasureUnit MeasureUnit::getYard() {
1462     return MeasureUnit(13, 21);
1463 }
1464 
createCandela(UErrorCode & status)1465 MeasureUnit *MeasureUnit::createCandela(UErrorCode &status) {
1466     return MeasureUnit::create(14, 0, status);
1467 }
1468 
getCandela()1469 MeasureUnit MeasureUnit::getCandela() {
1470     return MeasureUnit(14, 0);
1471 }
1472 
createLumen(UErrorCode & status)1473 MeasureUnit *MeasureUnit::createLumen(UErrorCode &status) {
1474     return MeasureUnit::create(14, 1, status);
1475 }
1476 
getLumen()1477 MeasureUnit MeasureUnit::getLumen() {
1478     return MeasureUnit(14, 1);
1479 }
1480 
createLux(UErrorCode & status)1481 MeasureUnit *MeasureUnit::createLux(UErrorCode &status) {
1482     return MeasureUnit::create(14, 2, status);
1483 }
1484 
getLux()1485 MeasureUnit MeasureUnit::getLux() {
1486     return MeasureUnit(14, 2);
1487 }
1488 
createSolarLuminosity(UErrorCode & status)1489 MeasureUnit *MeasureUnit::createSolarLuminosity(UErrorCode &status) {
1490     return MeasureUnit::create(14, 3, status);
1491 }
1492 
getSolarLuminosity()1493 MeasureUnit MeasureUnit::getSolarLuminosity() {
1494     return MeasureUnit(14, 3);
1495 }
1496 
createCarat(UErrorCode & status)1497 MeasureUnit *MeasureUnit::createCarat(UErrorCode &status) {
1498     return MeasureUnit::create(15, 0, status);
1499 }
1500 
getCarat()1501 MeasureUnit MeasureUnit::getCarat() {
1502     return MeasureUnit(15, 0);
1503 }
1504 
createDalton(UErrorCode & status)1505 MeasureUnit *MeasureUnit::createDalton(UErrorCode &status) {
1506     return MeasureUnit::create(15, 1, status);
1507 }
1508 
getDalton()1509 MeasureUnit MeasureUnit::getDalton() {
1510     return MeasureUnit(15, 1);
1511 }
1512 
createEarthMass(UErrorCode & status)1513 MeasureUnit *MeasureUnit::createEarthMass(UErrorCode &status) {
1514     return MeasureUnit::create(15, 2, status);
1515 }
1516 
getEarthMass()1517 MeasureUnit MeasureUnit::getEarthMass() {
1518     return MeasureUnit(15, 2);
1519 }
1520 
createGrain(UErrorCode & status)1521 MeasureUnit *MeasureUnit::createGrain(UErrorCode &status) {
1522     return MeasureUnit::create(15, 3, status);
1523 }
1524 
getGrain()1525 MeasureUnit MeasureUnit::getGrain() {
1526     return MeasureUnit(15, 3);
1527 }
1528 
createGram(UErrorCode & status)1529 MeasureUnit *MeasureUnit::createGram(UErrorCode &status) {
1530     return MeasureUnit::create(15, 4, status);
1531 }
1532 
getGram()1533 MeasureUnit MeasureUnit::getGram() {
1534     return MeasureUnit(15, 4);
1535 }
1536 
createKilogram(UErrorCode & status)1537 MeasureUnit *MeasureUnit::createKilogram(UErrorCode &status) {
1538     return MeasureUnit::create(15, 5, status);
1539 }
1540 
getKilogram()1541 MeasureUnit MeasureUnit::getKilogram() {
1542     return MeasureUnit(15, 5);
1543 }
1544 
createMetricTon(UErrorCode & status)1545 MeasureUnit *MeasureUnit::createMetricTon(UErrorCode &status) {
1546     return MeasureUnit::create(15, 14, status);
1547 }
1548 
getMetricTon()1549 MeasureUnit MeasureUnit::getMetricTon() {
1550     return MeasureUnit(15, 14);
1551 }
1552 
createMicrogram(UErrorCode & status)1553 MeasureUnit *MeasureUnit::createMicrogram(UErrorCode &status) {
1554     return MeasureUnit::create(15, 6, status);
1555 }
1556 
getMicrogram()1557 MeasureUnit MeasureUnit::getMicrogram() {
1558     return MeasureUnit(15, 6);
1559 }
1560 
createMilligram(UErrorCode & status)1561 MeasureUnit *MeasureUnit::createMilligram(UErrorCode &status) {
1562     return MeasureUnit::create(15, 7, status);
1563 }
1564 
getMilligram()1565 MeasureUnit MeasureUnit::getMilligram() {
1566     return MeasureUnit(15, 7);
1567 }
1568 
createOunce(UErrorCode & status)1569 MeasureUnit *MeasureUnit::createOunce(UErrorCode &status) {
1570     return MeasureUnit::create(15, 8, status);
1571 }
1572 
getOunce()1573 MeasureUnit MeasureUnit::getOunce() {
1574     return MeasureUnit(15, 8);
1575 }
1576 
createOunceTroy(UErrorCode & status)1577 MeasureUnit *MeasureUnit::createOunceTroy(UErrorCode &status) {
1578     return MeasureUnit::create(15, 9, status);
1579 }
1580 
getOunceTroy()1581 MeasureUnit MeasureUnit::getOunceTroy() {
1582     return MeasureUnit(15, 9);
1583 }
1584 
createPound(UErrorCode & status)1585 MeasureUnit *MeasureUnit::createPound(UErrorCode &status) {
1586     return MeasureUnit::create(15, 10, status);
1587 }
1588 
getPound()1589 MeasureUnit MeasureUnit::getPound() {
1590     return MeasureUnit(15, 10);
1591 }
1592 
createSolarMass(UErrorCode & status)1593 MeasureUnit *MeasureUnit::createSolarMass(UErrorCode &status) {
1594     return MeasureUnit::create(15, 11, status);
1595 }
1596 
getSolarMass()1597 MeasureUnit MeasureUnit::getSolarMass() {
1598     return MeasureUnit(15, 11);
1599 }
1600 
createStone(UErrorCode & status)1601 MeasureUnit *MeasureUnit::createStone(UErrorCode &status) {
1602     return MeasureUnit::create(15, 12, status);
1603 }
1604 
getStone()1605 MeasureUnit MeasureUnit::getStone() {
1606     return MeasureUnit(15, 12);
1607 }
1608 
createTon(UErrorCode & status)1609 MeasureUnit *MeasureUnit::createTon(UErrorCode &status) {
1610     return MeasureUnit::create(15, 13, status);
1611 }
1612 
getTon()1613 MeasureUnit MeasureUnit::getTon() {
1614     return MeasureUnit(15, 13);
1615 }
1616 
createTonne(UErrorCode & status)1617 MeasureUnit *MeasureUnit::createTonne(UErrorCode &status) {
1618     return MeasureUnit::create(15, 14, status);
1619 }
1620 
getTonne()1621 MeasureUnit MeasureUnit::getTonne() {
1622     return MeasureUnit(15, 14);
1623 }
1624 
createGigawatt(UErrorCode & status)1625 MeasureUnit *MeasureUnit::createGigawatt(UErrorCode &status) {
1626     return MeasureUnit::create(17, 0, status);
1627 }
1628 
getGigawatt()1629 MeasureUnit MeasureUnit::getGigawatt() {
1630     return MeasureUnit(17, 0);
1631 }
1632 
createHorsepower(UErrorCode & status)1633 MeasureUnit *MeasureUnit::createHorsepower(UErrorCode &status) {
1634     return MeasureUnit::create(17, 1, status);
1635 }
1636 
getHorsepower()1637 MeasureUnit MeasureUnit::getHorsepower() {
1638     return MeasureUnit(17, 1);
1639 }
1640 
createKilowatt(UErrorCode & status)1641 MeasureUnit *MeasureUnit::createKilowatt(UErrorCode &status) {
1642     return MeasureUnit::create(17, 2, status);
1643 }
1644 
getKilowatt()1645 MeasureUnit MeasureUnit::getKilowatt() {
1646     return MeasureUnit(17, 2);
1647 }
1648 
createMegawatt(UErrorCode & status)1649 MeasureUnit *MeasureUnit::createMegawatt(UErrorCode &status) {
1650     return MeasureUnit::create(17, 3, status);
1651 }
1652 
getMegawatt()1653 MeasureUnit MeasureUnit::getMegawatt() {
1654     return MeasureUnit(17, 3);
1655 }
1656 
createMilliwatt(UErrorCode & status)1657 MeasureUnit *MeasureUnit::createMilliwatt(UErrorCode &status) {
1658     return MeasureUnit::create(17, 4, status);
1659 }
1660 
getMilliwatt()1661 MeasureUnit MeasureUnit::getMilliwatt() {
1662     return MeasureUnit(17, 4);
1663 }
1664 
createWatt(UErrorCode & status)1665 MeasureUnit *MeasureUnit::createWatt(UErrorCode &status) {
1666     return MeasureUnit::create(17, 5, status);
1667 }
1668 
getWatt()1669 MeasureUnit MeasureUnit::getWatt() {
1670     return MeasureUnit(17, 5);
1671 }
1672 
createAtmosphere(UErrorCode & status)1673 MeasureUnit *MeasureUnit::createAtmosphere(UErrorCode &status) {
1674     return MeasureUnit::create(18, 0, status);
1675 }
1676 
getAtmosphere()1677 MeasureUnit MeasureUnit::getAtmosphere() {
1678     return MeasureUnit(18, 0);
1679 }
1680 
createBar(UErrorCode & status)1681 MeasureUnit *MeasureUnit::createBar(UErrorCode &status) {
1682     return MeasureUnit::create(18, 1, status);
1683 }
1684 
getBar()1685 MeasureUnit MeasureUnit::getBar() {
1686     return MeasureUnit(18, 1);
1687 }
1688 
createHectopascal(UErrorCode & status)1689 MeasureUnit *MeasureUnit::createHectopascal(UErrorCode &status) {
1690     return MeasureUnit::create(18, 2, status);
1691 }
1692 
getHectopascal()1693 MeasureUnit MeasureUnit::getHectopascal() {
1694     return MeasureUnit(18, 2);
1695 }
1696 
createInchHg(UErrorCode & status)1697 MeasureUnit *MeasureUnit::createInchHg(UErrorCode &status) {
1698     return MeasureUnit::create(18, 3, status);
1699 }
1700 
getInchHg()1701 MeasureUnit MeasureUnit::getInchHg() {
1702     return MeasureUnit(18, 3);
1703 }
1704 
createKilopascal(UErrorCode & status)1705 MeasureUnit *MeasureUnit::createKilopascal(UErrorCode &status) {
1706     return MeasureUnit::create(18, 4, status);
1707 }
1708 
getKilopascal()1709 MeasureUnit MeasureUnit::getKilopascal() {
1710     return MeasureUnit(18, 4);
1711 }
1712 
createMegapascal(UErrorCode & status)1713 MeasureUnit *MeasureUnit::createMegapascal(UErrorCode &status) {
1714     return MeasureUnit::create(18, 5, status);
1715 }
1716 
getMegapascal()1717 MeasureUnit MeasureUnit::getMegapascal() {
1718     return MeasureUnit(18, 5);
1719 }
1720 
createMillibar(UErrorCode & status)1721 MeasureUnit *MeasureUnit::createMillibar(UErrorCode &status) {
1722     return MeasureUnit::create(18, 6, status);
1723 }
1724 
getMillibar()1725 MeasureUnit MeasureUnit::getMillibar() {
1726     return MeasureUnit(18, 6);
1727 }
1728 
createMillimeterOfMercury(UErrorCode & status)1729 MeasureUnit *MeasureUnit::createMillimeterOfMercury(UErrorCode &status) {
1730     return MeasureUnit::create(18, 7, status);
1731 }
1732 
getMillimeterOfMercury()1733 MeasureUnit MeasureUnit::getMillimeterOfMercury() {
1734     return MeasureUnit(18, 7);
1735 }
1736 
createPascal(UErrorCode & status)1737 MeasureUnit *MeasureUnit::createPascal(UErrorCode &status) {
1738     return MeasureUnit::create(18, 8, status);
1739 }
1740 
getPascal()1741 MeasureUnit MeasureUnit::getPascal() {
1742     return MeasureUnit(18, 8);
1743 }
1744 
createPoundPerSquareInch(UErrorCode & status)1745 MeasureUnit *MeasureUnit::createPoundPerSquareInch(UErrorCode &status) {
1746     return MeasureUnit::create(18, 9, status);
1747 }
1748 
getPoundPerSquareInch()1749 MeasureUnit MeasureUnit::getPoundPerSquareInch() {
1750     return MeasureUnit(18, 9);
1751 }
1752 
createKilometerPerHour(UErrorCode & status)1753 MeasureUnit *MeasureUnit::createKilometerPerHour(UErrorCode &status) {
1754     return MeasureUnit::create(19, 0, status);
1755 }
1756 
getKilometerPerHour()1757 MeasureUnit MeasureUnit::getKilometerPerHour() {
1758     return MeasureUnit(19, 0);
1759 }
1760 
createKnot(UErrorCode & status)1761 MeasureUnit *MeasureUnit::createKnot(UErrorCode &status) {
1762     return MeasureUnit::create(19, 1, status);
1763 }
1764 
getKnot()1765 MeasureUnit MeasureUnit::getKnot() {
1766     return MeasureUnit(19, 1);
1767 }
1768 
createMeterPerSecond(UErrorCode & status)1769 MeasureUnit *MeasureUnit::createMeterPerSecond(UErrorCode &status) {
1770     return MeasureUnit::create(19, 2, status);
1771 }
1772 
getMeterPerSecond()1773 MeasureUnit MeasureUnit::getMeterPerSecond() {
1774     return MeasureUnit(19, 2);
1775 }
1776 
createMilePerHour(UErrorCode & status)1777 MeasureUnit *MeasureUnit::createMilePerHour(UErrorCode &status) {
1778     return MeasureUnit::create(19, 3, status);
1779 }
1780 
getMilePerHour()1781 MeasureUnit MeasureUnit::getMilePerHour() {
1782     return MeasureUnit(19, 3);
1783 }
1784 
createCelsius(UErrorCode & status)1785 MeasureUnit *MeasureUnit::createCelsius(UErrorCode &status) {
1786     return MeasureUnit::create(20, 0, status);
1787 }
1788 
getCelsius()1789 MeasureUnit MeasureUnit::getCelsius() {
1790     return MeasureUnit(20, 0);
1791 }
1792 
createFahrenheit(UErrorCode & status)1793 MeasureUnit *MeasureUnit::createFahrenheit(UErrorCode &status) {
1794     return MeasureUnit::create(20, 1, status);
1795 }
1796 
getFahrenheit()1797 MeasureUnit MeasureUnit::getFahrenheit() {
1798     return MeasureUnit(20, 1);
1799 }
1800 
createGenericTemperature(UErrorCode & status)1801 MeasureUnit *MeasureUnit::createGenericTemperature(UErrorCode &status) {
1802     return MeasureUnit::create(20, 2, status);
1803 }
1804 
getGenericTemperature()1805 MeasureUnit MeasureUnit::getGenericTemperature() {
1806     return MeasureUnit(20, 2);
1807 }
1808 
createKelvin(UErrorCode & status)1809 MeasureUnit *MeasureUnit::createKelvin(UErrorCode &status) {
1810     return MeasureUnit::create(20, 3, status);
1811 }
1812 
getKelvin()1813 MeasureUnit MeasureUnit::getKelvin() {
1814     return MeasureUnit(20, 3);
1815 }
1816 
createNewtonMeter(UErrorCode & status)1817 MeasureUnit *MeasureUnit::createNewtonMeter(UErrorCode &status) {
1818     return MeasureUnit::create(21, 0, status);
1819 }
1820 
getNewtonMeter()1821 MeasureUnit MeasureUnit::getNewtonMeter() {
1822     return MeasureUnit(21, 0);
1823 }
1824 
createPoundFoot(UErrorCode & status)1825 MeasureUnit *MeasureUnit::createPoundFoot(UErrorCode &status) {
1826     return MeasureUnit::create(21, 1, status);
1827 }
1828 
getPoundFoot()1829 MeasureUnit MeasureUnit::getPoundFoot() {
1830     return MeasureUnit(21, 1);
1831 }
1832 
createAcreFoot(UErrorCode & status)1833 MeasureUnit *MeasureUnit::createAcreFoot(UErrorCode &status) {
1834     return MeasureUnit::create(22, 0, status);
1835 }
1836 
getAcreFoot()1837 MeasureUnit MeasureUnit::getAcreFoot() {
1838     return MeasureUnit(22, 0);
1839 }
1840 
createBarrel(UErrorCode & status)1841 MeasureUnit *MeasureUnit::createBarrel(UErrorCode &status) {
1842     return MeasureUnit::create(22, 1, status);
1843 }
1844 
getBarrel()1845 MeasureUnit MeasureUnit::getBarrel() {
1846     return MeasureUnit(22, 1);
1847 }
1848 
createBushel(UErrorCode & status)1849 MeasureUnit *MeasureUnit::createBushel(UErrorCode &status) {
1850     return MeasureUnit::create(22, 2, status);
1851 }
1852 
getBushel()1853 MeasureUnit MeasureUnit::getBushel() {
1854     return MeasureUnit(22, 2);
1855 }
1856 
createCentiliter(UErrorCode & status)1857 MeasureUnit *MeasureUnit::createCentiliter(UErrorCode &status) {
1858     return MeasureUnit::create(22, 3, status);
1859 }
1860 
getCentiliter()1861 MeasureUnit MeasureUnit::getCentiliter() {
1862     return MeasureUnit(22, 3);
1863 }
1864 
createCubicCentimeter(UErrorCode & status)1865 MeasureUnit *MeasureUnit::createCubicCentimeter(UErrorCode &status) {
1866     return MeasureUnit::create(22, 4, status);
1867 }
1868 
getCubicCentimeter()1869 MeasureUnit MeasureUnit::getCubicCentimeter() {
1870     return MeasureUnit(22, 4);
1871 }
1872 
createCubicFoot(UErrorCode & status)1873 MeasureUnit *MeasureUnit::createCubicFoot(UErrorCode &status) {
1874     return MeasureUnit::create(22, 5, status);
1875 }
1876 
getCubicFoot()1877 MeasureUnit MeasureUnit::getCubicFoot() {
1878     return MeasureUnit(22, 5);
1879 }
1880 
createCubicInch(UErrorCode & status)1881 MeasureUnit *MeasureUnit::createCubicInch(UErrorCode &status) {
1882     return MeasureUnit::create(22, 6, status);
1883 }
1884 
getCubicInch()1885 MeasureUnit MeasureUnit::getCubicInch() {
1886     return MeasureUnit(22, 6);
1887 }
1888 
createCubicKilometer(UErrorCode & status)1889 MeasureUnit *MeasureUnit::createCubicKilometer(UErrorCode &status) {
1890     return MeasureUnit::create(22, 7, status);
1891 }
1892 
getCubicKilometer()1893 MeasureUnit MeasureUnit::getCubicKilometer() {
1894     return MeasureUnit(22, 7);
1895 }
1896 
createCubicMeter(UErrorCode & status)1897 MeasureUnit *MeasureUnit::createCubicMeter(UErrorCode &status) {
1898     return MeasureUnit::create(22, 8, status);
1899 }
1900 
getCubicMeter()1901 MeasureUnit MeasureUnit::getCubicMeter() {
1902     return MeasureUnit(22, 8);
1903 }
1904 
createCubicMile(UErrorCode & status)1905 MeasureUnit *MeasureUnit::createCubicMile(UErrorCode &status) {
1906     return MeasureUnit::create(22, 9, status);
1907 }
1908 
getCubicMile()1909 MeasureUnit MeasureUnit::getCubicMile() {
1910     return MeasureUnit(22, 9);
1911 }
1912 
createCubicYard(UErrorCode & status)1913 MeasureUnit *MeasureUnit::createCubicYard(UErrorCode &status) {
1914     return MeasureUnit::create(22, 10, status);
1915 }
1916 
getCubicYard()1917 MeasureUnit MeasureUnit::getCubicYard() {
1918     return MeasureUnit(22, 10);
1919 }
1920 
createCup(UErrorCode & status)1921 MeasureUnit *MeasureUnit::createCup(UErrorCode &status) {
1922     return MeasureUnit::create(22, 11, status);
1923 }
1924 
getCup()1925 MeasureUnit MeasureUnit::getCup() {
1926     return MeasureUnit(22, 11);
1927 }
1928 
createCupMetric(UErrorCode & status)1929 MeasureUnit *MeasureUnit::createCupMetric(UErrorCode &status) {
1930     return MeasureUnit::create(22, 12, status);
1931 }
1932 
getCupMetric()1933 MeasureUnit MeasureUnit::getCupMetric() {
1934     return MeasureUnit(22, 12);
1935 }
1936 
createDeciliter(UErrorCode & status)1937 MeasureUnit *MeasureUnit::createDeciliter(UErrorCode &status) {
1938     return MeasureUnit::create(22, 13, status);
1939 }
1940 
getDeciliter()1941 MeasureUnit MeasureUnit::getDeciliter() {
1942     return MeasureUnit(22, 13);
1943 }
1944 
createDessertSpoon(UErrorCode & status)1945 MeasureUnit *MeasureUnit::createDessertSpoon(UErrorCode &status) {
1946     return MeasureUnit::create(22, 14, status);
1947 }
1948 
getDessertSpoon()1949 MeasureUnit MeasureUnit::getDessertSpoon() {
1950     return MeasureUnit(22, 14);
1951 }
1952 
createDessertSpoonImperial(UErrorCode & status)1953 MeasureUnit *MeasureUnit::createDessertSpoonImperial(UErrorCode &status) {
1954     return MeasureUnit::create(22, 15, status);
1955 }
1956 
getDessertSpoonImperial()1957 MeasureUnit MeasureUnit::getDessertSpoonImperial() {
1958     return MeasureUnit(22, 15);
1959 }
1960 
createDram(UErrorCode & status)1961 MeasureUnit *MeasureUnit::createDram(UErrorCode &status) {
1962     return MeasureUnit::create(22, 16, status);
1963 }
1964 
getDram()1965 MeasureUnit MeasureUnit::getDram() {
1966     return MeasureUnit(22, 16);
1967 }
1968 
createDrop(UErrorCode & status)1969 MeasureUnit *MeasureUnit::createDrop(UErrorCode &status) {
1970     return MeasureUnit::create(22, 17, status);
1971 }
1972 
getDrop()1973 MeasureUnit MeasureUnit::getDrop() {
1974     return MeasureUnit(22, 17);
1975 }
1976 
createFluidOunce(UErrorCode & status)1977 MeasureUnit *MeasureUnit::createFluidOunce(UErrorCode &status) {
1978     return MeasureUnit::create(22, 18, status);
1979 }
1980 
getFluidOunce()1981 MeasureUnit MeasureUnit::getFluidOunce() {
1982     return MeasureUnit(22, 18);
1983 }
1984 
createFluidOunceImperial(UErrorCode & status)1985 MeasureUnit *MeasureUnit::createFluidOunceImperial(UErrorCode &status) {
1986     return MeasureUnit::create(22, 19, status);
1987 }
1988 
getFluidOunceImperial()1989 MeasureUnit MeasureUnit::getFluidOunceImperial() {
1990     return MeasureUnit(22, 19);
1991 }
1992 
createGallon(UErrorCode & status)1993 MeasureUnit *MeasureUnit::createGallon(UErrorCode &status) {
1994     return MeasureUnit::create(22, 20, status);
1995 }
1996 
getGallon()1997 MeasureUnit MeasureUnit::getGallon() {
1998     return MeasureUnit(22, 20);
1999 }
2000 
createGallonImperial(UErrorCode & status)2001 MeasureUnit *MeasureUnit::createGallonImperial(UErrorCode &status) {
2002     return MeasureUnit::create(22, 21, status);
2003 }
2004 
getGallonImperial()2005 MeasureUnit MeasureUnit::getGallonImperial() {
2006     return MeasureUnit(22, 21);
2007 }
2008 
createHectoliter(UErrorCode & status)2009 MeasureUnit *MeasureUnit::createHectoliter(UErrorCode &status) {
2010     return MeasureUnit::create(22, 22, status);
2011 }
2012 
getHectoliter()2013 MeasureUnit MeasureUnit::getHectoliter() {
2014     return MeasureUnit(22, 22);
2015 }
2016 
createJigger(UErrorCode & status)2017 MeasureUnit *MeasureUnit::createJigger(UErrorCode &status) {
2018     return MeasureUnit::create(22, 23, status);
2019 }
2020 
getJigger()2021 MeasureUnit MeasureUnit::getJigger() {
2022     return MeasureUnit(22, 23);
2023 }
2024 
createLiter(UErrorCode & status)2025 MeasureUnit *MeasureUnit::createLiter(UErrorCode &status) {
2026     return MeasureUnit::create(22, 24, status);
2027 }
2028 
getLiter()2029 MeasureUnit MeasureUnit::getLiter() {
2030     return MeasureUnit(22, 24);
2031 }
2032 
createMegaliter(UErrorCode & status)2033 MeasureUnit *MeasureUnit::createMegaliter(UErrorCode &status) {
2034     return MeasureUnit::create(22, 25, status);
2035 }
2036 
getMegaliter()2037 MeasureUnit MeasureUnit::getMegaliter() {
2038     return MeasureUnit(22, 25);
2039 }
2040 
createMilliliter(UErrorCode & status)2041 MeasureUnit *MeasureUnit::createMilliliter(UErrorCode &status) {
2042     return MeasureUnit::create(22, 26, status);
2043 }
2044 
getMilliliter()2045 MeasureUnit MeasureUnit::getMilliliter() {
2046     return MeasureUnit(22, 26);
2047 }
2048 
createPinch(UErrorCode & status)2049 MeasureUnit *MeasureUnit::createPinch(UErrorCode &status) {
2050     return MeasureUnit::create(22, 27, status);
2051 }
2052 
getPinch()2053 MeasureUnit MeasureUnit::getPinch() {
2054     return MeasureUnit(22, 27);
2055 }
2056 
createPint(UErrorCode & status)2057 MeasureUnit *MeasureUnit::createPint(UErrorCode &status) {
2058     return MeasureUnit::create(22, 28, status);
2059 }
2060 
getPint()2061 MeasureUnit MeasureUnit::getPint() {
2062     return MeasureUnit(22, 28);
2063 }
2064 
createPintMetric(UErrorCode & status)2065 MeasureUnit *MeasureUnit::createPintMetric(UErrorCode &status) {
2066     return MeasureUnit::create(22, 29, status);
2067 }
2068 
getPintMetric()2069 MeasureUnit MeasureUnit::getPintMetric() {
2070     return MeasureUnit(22, 29);
2071 }
2072 
createQuart(UErrorCode & status)2073 MeasureUnit *MeasureUnit::createQuart(UErrorCode &status) {
2074     return MeasureUnit::create(22, 30, status);
2075 }
2076 
getQuart()2077 MeasureUnit MeasureUnit::getQuart() {
2078     return MeasureUnit(22, 30);
2079 }
2080 
createQuartImperial(UErrorCode & status)2081 MeasureUnit *MeasureUnit::createQuartImperial(UErrorCode &status) {
2082     return MeasureUnit::create(22, 31, status);
2083 }
2084 
getQuartImperial()2085 MeasureUnit MeasureUnit::getQuartImperial() {
2086     return MeasureUnit(22, 31);
2087 }
2088 
createTablespoon(UErrorCode & status)2089 MeasureUnit *MeasureUnit::createTablespoon(UErrorCode &status) {
2090     return MeasureUnit::create(22, 32, status);
2091 }
2092 
getTablespoon()2093 MeasureUnit MeasureUnit::getTablespoon() {
2094     return MeasureUnit(22, 32);
2095 }
2096 
createTeaspoon(UErrorCode & status)2097 MeasureUnit *MeasureUnit::createTeaspoon(UErrorCode &status) {
2098     return MeasureUnit::create(22, 33, status);
2099 }
2100 
getTeaspoon()2101 MeasureUnit MeasureUnit::getTeaspoon() {
2102     return MeasureUnit(22, 33);
2103 }
2104 
2105 // End generated code for measunit.cpp
2106 
binarySearch(const char * const * array,int32_t start,int32_t end,StringPiece key)2107 static int32_t binarySearch(
2108         const char * const * array, int32_t start, int32_t end, StringPiece key) {
2109     while (start < end) {
2110         int32_t mid = (start + end) / 2;
2111         int32_t cmp = StringPiece(array[mid]).compare(key);
2112         if (cmp < 0) {
2113             start = mid + 1;
2114             continue;
2115         }
2116         if (cmp == 0) {
2117             return mid;
2118         }
2119         end = mid;
2120     }
2121     return -1;
2122 }
2123 
MeasureUnit()2124 MeasureUnit::MeasureUnit() : MeasureUnit(kBaseTypeIdx, kBaseSubTypeIdx) {
2125 }
2126 
MeasureUnit(int32_t typeId,int32_t subTypeId)2127 MeasureUnit::MeasureUnit(int32_t typeId, int32_t subTypeId)
2128         : fImpl(nullptr), fSubTypeId(subTypeId), fTypeId(typeId) {
2129 }
2130 
MeasureUnit(const MeasureUnit & other)2131 MeasureUnit::MeasureUnit(const MeasureUnit &other)
2132         : fImpl(nullptr) {
2133     *this = other;
2134 }
2135 
MeasureUnit(MeasureUnit && other)2136 MeasureUnit::MeasureUnit(MeasureUnit &&other) noexcept
2137         : fImpl(other.fImpl),
2138         fSubTypeId(other.fSubTypeId),
2139         fTypeId(other.fTypeId) {
2140     other.fImpl = nullptr;
2141 }
2142 
MeasureUnit(MeasureUnitImpl && impl)2143 MeasureUnit::MeasureUnit(MeasureUnitImpl&& impl)
2144         : fImpl(nullptr), fSubTypeId(-1), fTypeId(-1) {
2145     if (!findBySubType(impl.identifier.toStringPiece(), this)) {
2146         fImpl = new MeasureUnitImpl(std::move(impl));
2147     }
2148 }
2149 
operator =(const MeasureUnit & other)2150 MeasureUnit &MeasureUnit::operator=(const MeasureUnit &other) {
2151     if (this == &other) {
2152         return *this;
2153     }
2154     if (fImpl != nullptr) {
2155         delete fImpl;
2156     }
2157     if (other.fImpl) {
2158         ErrorCode localStatus;
2159         fImpl = new MeasureUnitImpl(other.fImpl->copy(localStatus));
2160         if (!fImpl || localStatus.isFailure()) {
2161             // Unrecoverable allocation error; set to the default unit
2162             *this = MeasureUnit();
2163             return *this;
2164         }
2165     } else {
2166         fImpl = nullptr;
2167     }
2168     fTypeId = other.fTypeId;
2169     fSubTypeId = other.fSubTypeId;
2170     return *this;
2171 }
2172 
operator =(MeasureUnit && other)2173 MeasureUnit &MeasureUnit::operator=(MeasureUnit &&other) noexcept {
2174     if (this == &other) {
2175         return *this;
2176     }
2177     if (fImpl != nullptr) {
2178         delete fImpl;
2179     }
2180     fImpl = other.fImpl;
2181     other.fImpl = nullptr;
2182     fTypeId = other.fTypeId;
2183     fSubTypeId = other.fSubTypeId;
2184     return *this;
2185 }
2186 
clone() const2187 MeasureUnit *MeasureUnit::clone() const {
2188     return new MeasureUnit(*this);
2189 }
2190 
~MeasureUnit()2191 MeasureUnit::~MeasureUnit() {
2192     if (fImpl != nullptr) {
2193         delete fImpl;
2194         fImpl = nullptr;
2195     }
2196 }
2197 
getType() const2198 const char *MeasureUnit::getType() const {
2199     // We have a type & subtype only if fTypeId is present.
2200     if (fTypeId == -1) {
2201         return "";
2202     }
2203     return gTypes[fTypeId];
2204 }
2205 
getSubtype() const2206 const char *MeasureUnit::getSubtype() const {
2207     // We have a type & subtype only if fTypeId is present.
2208     if (fTypeId == -1) {
2209         return "";
2210     }
2211     return getIdentifier();
2212 }
2213 
getIdentifier() const2214 const char *MeasureUnit::getIdentifier() const {
2215     return fImpl ? fImpl->identifier.data() : gSubTypes[getOffset()];
2216 }
2217 
operator ==(const UObject & other) const2218 bool MeasureUnit::operator==(const UObject& other) const {
2219     if (this == &other) {  // Same object, equal
2220         return true;
2221     }
2222     if (typeid(*this) != typeid(other)) { // Different types, not equal
2223         return false;
2224     }
2225     const MeasureUnit &rhs = static_cast<const MeasureUnit&>(other);
2226     return uprv_strcmp(getIdentifier(), rhs.getIdentifier()) == 0;
2227 }
2228 
getAvailable(MeasureUnit * dest,int32_t destCapacity,UErrorCode & errorCode)2229 int32_t MeasureUnit::getAvailable(
2230         MeasureUnit *dest,
2231         int32_t destCapacity,
2232         UErrorCode &errorCode) {
2233     if (U_FAILURE(errorCode)) {
2234         return 0;
2235     }
2236     if (destCapacity < UPRV_LENGTHOF(gSubTypes)) {
2237         errorCode = U_BUFFER_OVERFLOW_ERROR;
2238         return UPRV_LENGTHOF(gSubTypes);
2239     }
2240     int32_t idx = 0;
2241     for (int32_t typeIdx = 0; typeIdx < UPRV_LENGTHOF(gTypes); ++typeIdx) {
2242         int32_t len = gOffsets[typeIdx + 1] - gOffsets[typeIdx];
2243         for (int32_t subTypeIdx = 0; subTypeIdx < len; ++subTypeIdx) {
2244             dest[idx].setTo(typeIdx, subTypeIdx);
2245             ++idx;
2246         }
2247     }
2248     U_ASSERT(idx == UPRV_LENGTHOF(gSubTypes));
2249     return UPRV_LENGTHOF(gSubTypes);
2250 }
2251 
getAvailable(const char * type,MeasureUnit * dest,int32_t destCapacity,UErrorCode & errorCode)2252 int32_t MeasureUnit::getAvailable(
2253         const char *type,
2254         MeasureUnit *dest,
2255         int32_t destCapacity,
2256         UErrorCode &errorCode) {
2257     if (U_FAILURE(errorCode)) {
2258         return 0;
2259     }
2260     int32_t typeIdx = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), type);
2261     if (typeIdx == -1) {
2262         return 0;
2263     }
2264     int32_t len = gOffsets[typeIdx + 1] - gOffsets[typeIdx];
2265     if (destCapacity < len) {
2266         errorCode = U_BUFFER_OVERFLOW_ERROR;
2267         return len;
2268     }
2269     for (int subTypeIdx = 0; subTypeIdx < len; ++subTypeIdx) {
2270         dest[subTypeIdx].setTo(typeIdx, subTypeIdx);
2271     }
2272     return len;
2273 }
2274 
getAvailableTypes(UErrorCode & errorCode)2275 StringEnumeration* MeasureUnit::getAvailableTypes(UErrorCode &errorCode) {
2276     UEnumeration *uenum = uenum_openCharStringsEnumeration(
2277             gTypes, UPRV_LENGTHOF(gTypes), &errorCode);
2278     if (U_FAILURE(errorCode)) {
2279         uenum_close(uenum);
2280         return NULL;
2281     }
2282     StringEnumeration *result = new UStringEnumeration(uenum);
2283     if (result == NULL) {
2284         errorCode = U_MEMORY_ALLOCATION_ERROR;
2285         uenum_close(uenum);
2286         return NULL;
2287     }
2288     return result;
2289 }
2290 
findBySubType(StringPiece subType,MeasureUnit * output)2291 bool MeasureUnit::findBySubType(StringPiece subType, MeasureUnit* output) {
2292     // Sanity checking kCurrencyOffset and final entry in gOffsets
2293     U_ASSERT(uprv_strcmp(gTypes[kCurrencyOffset], "currency") == 0);
2294     U_ASSERT(gOffsets[UPRV_LENGTHOF(gOffsets) - 1] == UPRV_LENGTHOF(gSubTypes));
2295 
2296     for (int32_t t = 0; t < UPRV_LENGTHOF(gOffsets) - 1; t++) {
2297         // Skip currency units
2298         if (t == kCurrencyOffset) {
2299             continue;
2300         }
2301         int32_t st = binarySearch(gSubTypes, gOffsets[t], gOffsets[t + 1], subType);
2302         if (st >= 0) {
2303             output->setTo(t, st - gOffsets[t]);
2304             return true;
2305         }
2306     }
2307     return false;
2308 }
2309 
create(int typeId,int subTypeId,UErrorCode & status)2310 MeasureUnit *MeasureUnit::create(int typeId, int subTypeId, UErrorCode &status) {
2311     if (U_FAILURE(status)) {
2312         return NULL;
2313     }
2314     MeasureUnit *result = new MeasureUnit(typeId, subTypeId);
2315     if (result == NULL) {
2316         status = U_MEMORY_ALLOCATION_ERROR;
2317     }
2318     return result;
2319 }
2320 
initTime(const char * timeId)2321 void MeasureUnit::initTime(const char *timeId) {
2322     int32_t result = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), "duration");
2323     U_ASSERT(result != -1);
2324     fTypeId = result;
2325     result = binarySearch(gSubTypes, gOffsets[fTypeId], gOffsets[fTypeId + 1], timeId);
2326     U_ASSERT(result != -1);
2327     fSubTypeId = result - gOffsets[fTypeId];
2328 }
2329 
initCurrency(StringPiece isoCurrency)2330 void MeasureUnit::initCurrency(StringPiece isoCurrency) {
2331     int32_t result = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), "currency");
2332     U_ASSERT(result != -1);
2333     fTypeId = result;
2334     result = binarySearch(
2335             gSubTypes, gOffsets[fTypeId], gOffsets[fTypeId + 1], isoCurrency);
2336     if (result == -1) {
2337         fImpl = new MeasureUnitImpl(MeasureUnitImpl::forCurrencyCode(isoCurrency));
2338         if (fImpl) {
2339             fSubTypeId = -1;
2340             return;
2341         }
2342         // malloc error: fall back to the undefined currency
2343         result = binarySearch(
2344             gSubTypes, gOffsets[fTypeId], gOffsets[fTypeId + 1], kDefaultCurrency8);
2345         U_ASSERT(result != -1);
2346     }
2347     fSubTypeId = result - gOffsets[fTypeId];
2348 }
2349 
setTo(int32_t typeId,int32_t subTypeId)2350 void MeasureUnit::setTo(int32_t typeId, int32_t subTypeId) {
2351     fTypeId = typeId;
2352     fSubTypeId = subTypeId;
2353     if (fImpl != nullptr) {
2354         delete fImpl;
2355         fImpl = nullptr;
2356     }
2357 }
2358 
getOffset() const2359 int32_t MeasureUnit::getOffset() const {
2360     if (fTypeId < 0 || fSubTypeId < 0) {
2361         return -1;
2362     }
2363     return gOffsets[fTypeId] + fSubTypeId;
2364 }
2365 
copy(UErrorCode & status) const2366 MeasureUnitImpl MeasureUnitImpl::copy(UErrorCode &status) const {
2367     MeasureUnitImpl result;
2368     result.complexity = complexity;
2369     result.identifier.append(identifier, status);
2370     for (int32_t i = 0; i < singleUnits.length(); i++) {
2371         SingleUnitImpl *item = result.singleUnits.emplaceBack(*singleUnits[i]);
2372         if (!item) {
2373             status = U_MEMORY_ALLOCATION_ERROR;
2374             return result;
2375         }
2376     }
2377     return result;
2378 }
2379 
2380 U_NAMESPACE_END
2381 
2382 #endif /* !UNCONFIG_NO_FORMATTING */
2383