• 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     451,
61     455,
62     457,
63     491
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     "beaufort",
544     "kilometer-per-hour",
545     "knot",
546     "meter-per-second",
547     "mile-per-hour",
548     "celsius",
549     "fahrenheit",
550     "generic",
551     "kelvin",
552     "newton-meter",
553     "pound-force-foot",
554     "acre-foot",
555     "barrel",
556     "bushel",
557     "centiliter",
558     "cubic-centimeter",
559     "cubic-foot",
560     "cubic-inch",
561     "cubic-kilometer",
562     "cubic-meter",
563     "cubic-mile",
564     "cubic-yard",
565     "cup",
566     "cup-metric",
567     "deciliter",
568     "dessert-spoon",
569     "dessert-spoon-imperial",
570     "dram",
571     "drop",
572     "fluid-ounce",
573     "fluid-ounce-imperial",
574     "gallon",
575     "gallon-imperial",
576     "hectoliter",
577     "jigger",
578     "liter",
579     "megaliter",
580     "milliliter",
581     "pinch",
582     "pint",
583     "pint-metric",
584     "quart",
585     "quart-imperial",
586     "tablespoon",
587     "teaspoon"
588 };
589 
590 // Shortcuts to the base unit in order to make the default constructor fast
591 static const int32_t kBaseTypeIdx = 16;
592 static const int32_t kBaseSubTypeIdx = 0;
593 
createGForce(UErrorCode & status)594 MeasureUnit *MeasureUnit::createGForce(UErrorCode &status) {
595     return MeasureUnit::create(0, 0, status);
596 }
597 
getGForce()598 MeasureUnit MeasureUnit::getGForce() {
599     return MeasureUnit(0, 0);
600 }
601 
createMeterPerSecondSquared(UErrorCode & status)602 MeasureUnit *MeasureUnit::createMeterPerSecondSquared(UErrorCode &status) {
603     return MeasureUnit::create(0, 1, status);
604 }
605 
getMeterPerSecondSquared()606 MeasureUnit MeasureUnit::getMeterPerSecondSquared() {
607     return MeasureUnit(0, 1);
608 }
609 
createArcMinute(UErrorCode & status)610 MeasureUnit *MeasureUnit::createArcMinute(UErrorCode &status) {
611     return MeasureUnit::create(1, 0, status);
612 }
613 
getArcMinute()614 MeasureUnit MeasureUnit::getArcMinute() {
615     return MeasureUnit(1, 0);
616 }
617 
createArcSecond(UErrorCode & status)618 MeasureUnit *MeasureUnit::createArcSecond(UErrorCode &status) {
619     return MeasureUnit::create(1, 1, status);
620 }
621 
getArcSecond()622 MeasureUnit MeasureUnit::getArcSecond() {
623     return MeasureUnit(1, 1);
624 }
625 
createDegree(UErrorCode & status)626 MeasureUnit *MeasureUnit::createDegree(UErrorCode &status) {
627     return MeasureUnit::create(1, 2, status);
628 }
629 
getDegree()630 MeasureUnit MeasureUnit::getDegree() {
631     return MeasureUnit(1, 2);
632 }
633 
createRadian(UErrorCode & status)634 MeasureUnit *MeasureUnit::createRadian(UErrorCode &status) {
635     return MeasureUnit::create(1, 3, status);
636 }
637 
getRadian()638 MeasureUnit MeasureUnit::getRadian() {
639     return MeasureUnit(1, 3);
640 }
641 
createRevolutionAngle(UErrorCode & status)642 MeasureUnit *MeasureUnit::createRevolutionAngle(UErrorCode &status) {
643     return MeasureUnit::create(1, 4, status);
644 }
645 
getRevolutionAngle()646 MeasureUnit MeasureUnit::getRevolutionAngle() {
647     return MeasureUnit(1, 4);
648 }
649 
createAcre(UErrorCode & status)650 MeasureUnit *MeasureUnit::createAcre(UErrorCode &status) {
651     return MeasureUnit::create(2, 0, status);
652 }
653 
getAcre()654 MeasureUnit MeasureUnit::getAcre() {
655     return MeasureUnit(2, 0);
656 }
657 
createDunam(UErrorCode & status)658 MeasureUnit *MeasureUnit::createDunam(UErrorCode &status) {
659     return MeasureUnit::create(2, 1, status);
660 }
661 
getDunam()662 MeasureUnit MeasureUnit::getDunam() {
663     return MeasureUnit(2, 1);
664 }
665 
createHectare(UErrorCode & status)666 MeasureUnit *MeasureUnit::createHectare(UErrorCode &status) {
667     return MeasureUnit::create(2, 2, status);
668 }
669 
getHectare()670 MeasureUnit MeasureUnit::getHectare() {
671     return MeasureUnit(2, 2);
672 }
673 
createSquareCentimeter(UErrorCode & status)674 MeasureUnit *MeasureUnit::createSquareCentimeter(UErrorCode &status) {
675     return MeasureUnit::create(2, 3, status);
676 }
677 
getSquareCentimeter()678 MeasureUnit MeasureUnit::getSquareCentimeter() {
679     return MeasureUnit(2, 3);
680 }
681 
createSquareFoot(UErrorCode & status)682 MeasureUnit *MeasureUnit::createSquareFoot(UErrorCode &status) {
683     return MeasureUnit::create(2, 4, status);
684 }
685 
getSquareFoot()686 MeasureUnit MeasureUnit::getSquareFoot() {
687     return MeasureUnit(2, 4);
688 }
689 
createSquareInch(UErrorCode & status)690 MeasureUnit *MeasureUnit::createSquareInch(UErrorCode &status) {
691     return MeasureUnit::create(2, 5, status);
692 }
693 
getSquareInch()694 MeasureUnit MeasureUnit::getSquareInch() {
695     return MeasureUnit(2, 5);
696 }
697 
createSquareKilometer(UErrorCode & status)698 MeasureUnit *MeasureUnit::createSquareKilometer(UErrorCode &status) {
699     return MeasureUnit::create(2, 6, status);
700 }
701 
getSquareKilometer()702 MeasureUnit MeasureUnit::getSquareKilometer() {
703     return MeasureUnit(2, 6);
704 }
705 
createSquareMeter(UErrorCode & status)706 MeasureUnit *MeasureUnit::createSquareMeter(UErrorCode &status) {
707     return MeasureUnit::create(2, 7, status);
708 }
709 
getSquareMeter()710 MeasureUnit MeasureUnit::getSquareMeter() {
711     return MeasureUnit(2, 7);
712 }
713 
createSquareMile(UErrorCode & status)714 MeasureUnit *MeasureUnit::createSquareMile(UErrorCode &status) {
715     return MeasureUnit::create(2, 8, status);
716 }
717 
getSquareMile()718 MeasureUnit MeasureUnit::getSquareMile() {
719     return MeasureUnit(2, 8);
720 }
721 
createSquareYard(UErrorCode & status)722 MeasureUnit *MeasureUnit::createSquareYard(UErrorCode &status) {
723     return MeasureUnit::create(2, 9, status);
724 }
725 
getSquareYard()726 MeasureUnit MeasureUnit::getSquareYard() {
727     return MeasureUnit(2, 9);
728 }
729 
createItem(UErrorCode & status)730 MeasureUnit *MeasureUnit::createItem(UErrorCode &status) {
731     return MeasureUnit::create(3, 0, status);
732 }
733 
getItem()734 MeasureUnit MeasureUnit::getItem() {
735     return MeasureUnit(3, 0);
736 }
737 
createKarat(UErrorCode & status)738 MeasureUnit *MeasureUnit::createKarat(UErrorCode &status) {
739     return MeasureUnit::create(3, 1, status);
740 }
741 
getKarat()742 MeasureUnit MeasureUnit::getKarat() {
743     return MeasureUnit(3, 1);
744 }
745 
createMilligramOfglucosePerDeciliter(UErrorCode & status)746 MeasureUnit *MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode &status) {
747     return MeasureUnit::create(3, 2, status);
748 }
749 
getMilligramOfglucosePerDeciliter()750 MeasureUnit MeasureUnit::getMilligramOfglucosePerDeciliter() {
751     return MeasureUnit(3, 2);
752 }
753 
createMilligramPerDeciliter(UErrorCode & status)754 MeasureUnit *MeasureUnit::createMilligramPerDeciliter(UErrorCode &status) {
755     return MeasureUnit::create(3, 3, status);
756 }
757 
getMilligramPerDeciliter()758 MeasureUnit MeasureUnit::getMilligramPerDeciliter() {
759     return MeasureUnit(3, 3);
760 }
761 
createMillimolePerLiter(UErrorCode & status)762 MeasureUnit *MeasureUnit::createMillimolePerLiter(UErrorCode &status) {
763     return MeasureUnit::create(3, 4, status);
764 }
765 
getMillimolePerLiter()766 MeasureUnit MeasureUnit::getMillimolePerLiter() {
767     return MeasureUnit(3, 4);
768 }
769 
createMole(UErrorCode & status)770 MeasureUnit *MeasureUnit::createMole(UErrorCode &status) {
771     return MeasureUnit::create(3, 5, status);
772 }
773 
getMole()774 MeasureUnit MeasureUnit::getMole() {
775     return MeasureUnit(3, 5);
776 }
777 
createPercent(UErrorCode & status)778 MeasureUnit *MeasureUnit::createPercent(UErrorCode &status) {
779     return MeasureUnit::create(3, 6, status);
780 }
781 
getPercent()782 MeasureUnit MeasureUnit::getPercent() {
783     return MeasureUnit(3, 6);
784 }
785 
createPermille(UErrorCode & status)786 MeasureUnit *MeasureUnit::createPermille(UErrorCode &status) {
787     return MeasureUnit::create(3, 7, status);
788 }
789 
getPermille()790 MeasureUnit MeasureUnit::getPermille() {
791     return MeasureUnit(3, 7);
792 }
793 
createPartPerMillion(UErrorCode & status)794 MeasureUnit *MeasureUnit::createPartPerMillion(UErrorCode &status) {
795     return MeasureUnit::create(3, 8, status);
796 }
797 
getPartPerMillion()798 MeasureUnit MeasureUnit::getPartPerMillion() {
799     return MeasureUnit(3, 8);
800 }
801 
createPermyriad(UErrorCode & status)802 MeasureUnit *MeasureUnit::createPermyriad(UErrorCode &status) {
803     return MeasureUnit::create(3, 9, status);
804 }
805 
getPermyriad()806 MeasureUnit MeasureUnit::getPermyriad() {
807     return MeasureUnit(3, 9);
808 }
809 
createLiterPer100Kilometers(UErrorCode & status)810 MeasureUnit *MeasureUnit::createLiterPer100Kilometers(UErrorCode &status) {
811     return MeasureUnit::create(4, 0, status);
812 }
813 
getLiterPer100Kilometers()814 MeasureUnit MeasureUnit::getLiterPer100Kilometers() {
815     return MeasureUnit(4, 0);
816 }
817 
createLiterPerKilometer(UErrorCode & status)818 MeasureUnit *MeasureUnit::createLiterPerKilometer(UErrorCode &status) {
819     return MeasureUnit::create(4, 1, status);
820 }
821 
getLiterPerKilometer()822 MeasureUnit MeasureUnit::getLiterPerKilometer() {
823     return MeasureUnit(4, 1);
824 }
825 
createMilePerGallon(UErrorCode & status)826 MeasureUnit *MeasureUnit::createMilePerGallon(UErrorCode &status) {
827     return MeasureUnit::create(4, 2, status);
828 }
829 
getMilePerGallon()830 MeasureUnit MeasureUnit::getMilePerGallon() {
831     return MeasureUnit(4, 2);
832 }
833 
createMilePerGallonImperial(UErrorCode & status)834 MeasureUnit *MeasureUnit::createMilePerGallonImperial(UErrorCode &status) {
835     return MeasureUnit::create(4, 3, status);
836 }
837 
getMilePerGallonImperial()838 MeasureUnit MeasureUnit::getMilePerGallonImperial() {
839     return MeasureUnit(4, 3);
840 }
841 
createBit(UErrorCode & status)842 MeasureUnit *MeasureUnit::createBit(UErrorCode &status) {
843     return MeasureUnit::create(6, 0, status);
844 }
845 
getBit()846 MeasureUnit MeasureUnit::getBit() {
847     return MeasureUnit(6, 0);
848 }
849 
createByte(UErrorCode & status)850 MeasureUnit *MeasureUnit::createByte(UErrorCode &status) {
851     return MeasureUnit::create(6, 1, status);
852 }
853 
getByte()854 MeasureUnit MeasureUnit::getByte() {
855     return MeasureUnit(6, 1);
856 }
857 
createGigabit(UErrorCode & status)858 MeasureUnit *MeasureUnit::createGigabit(UErrorCode &status) {
859     return MeasureUnit::create(6, 2, status);
860 }
861 
getGigabit()862 MeasureUnit MeasureUnit::getGigabit() {
863     return MeasureUnit(6, 2);
864 }
865 
createGigabyte(UErrorCode & status)866 MeasureUnit *MeasureUnit::createGigabyte(UErrorCode &status) {
867     return MeasureUnit::create(6, 3, status);
868 }
869 
getGigabyte()870 MeasureUnit MeasureUnit::getGigabyte() {
871     return MeasureUnit(6, 3);
872 }
873 
createKilobit(UErrorCode & status)874 MeasureUnit *MeasureUnit::createKilobit(UErrorCode &status) {
875     return MeasureUnit::create(6, 4, status);
876 }
877 
getKilobit()878 MeasureUnit MeasureUnit::getKilobit() {
879     return MeasureUnit(6, 4);
880 }
881 
createKilobyte(UErrorCode & status)882 MeasureUnit *MeasureUnit::createKilobyte(UErrorCode &status) {
883     return MeasureUnit::create(6, 5, status);
884 }
885 
getKilobyte()886 MeasureUnit MeasureUnit::getKilobyte() {
887     return MeasureUnit(6, 5);
888 }
889 
createMegabit(UErrorCode & status)890 MeasureUnit *MeasureUnit::createMegabit(UErrorCode &status) {
891     return MeasureUnit::create(6, 6, status);
892 }
893 
getMegabit()894 MeasureUnit MeasureUnit::getMegabit() {
895     return MeasureUnit(6, 6);
896 }
897 
createMegabyte(UErrorCode & status)898 MeasureUnit *MeasureUnit::createMegabyte(UErrorCode &status) {
899     return MeasureUnit::create(6, 7, status);
900 }
901 
getMegabyte()902 MeasureUnit MeasureUnit::getMegabyte() {
903     return MeasureUnit(6, 7);
904 }
905 
createPetabyte(UErrorCode & status)906 MeasureUnit *MeasureUnit::createPetabyte(UErrorCode &status) {
907     return MeasureUnit::create(6, 8, status);
908 }
909 
getPetabyte()910 MeasureUnit MeasureUnit::getPetabyte() {
911     return MeasureUnit(6, 8);
912 }
913 
createTerabit(UErrorCode & status)914 MeasureUnit *MeasureUnit::createTerabit(UErrorCode &status) {
915     return MeasureUnit::create(6, 9, status);
916 }
917 
getTerabit()918 MeasureUnit MeasureUnit::getTerabit() {
919     return MeasureUnit(6, 9);
920 }
921 
createTerabyte(UErrorCode & status)922 MeasureUnit *MeasureUnit::createTerabyte(UErrorCode &status) {
923     return MeasureUnit::create(6, 10, status);
924 }
925 
getTerabyte()926 MeasureUnit MeasureUnit::getTerabyte() {
927     return MeasureUnit(6, 10);
928 }
929 
createCentury(UErrorCode & status)930 MeasureUnit *MeasureUnit::createCentury(UErrorCode &status) {
931     return MeasureUnit::create(7, 0, status);
932 }
933 
getCentury()934 MeasureUnit MeasureUnit::getCentury() {
935     return MeasureUnit(7, 0);
936 }
937 
createDay(UErrorCode & status)938 MeasureUnit *MeasureUnit::createDay(UErrorCode &status) {
939     return MeasureUnit::create(7, 1, status);
940 }
941 
getDay()942 MeasureUnit MeasureUnit::getDay() {
943     return MeasureUnit(7, 1);
944 }
945 
createDayPerson(UErrorCode & status)946 MeasureUnit *MeasureUnit::createDayPerson(UErrorCode &status) {
947     return MeasureUnit::create(7, 2, status);
948 }
949 
getDayPerson()950 MeasureUnit MeasureUnit::getDayPerson() {
951     return MeasureUnit(7, 2);
952 }
953 
createDecade(UErrorCode & status)954 MeasureUnit *MeasureUnit::createDecade(UErrorCode &status) {
955     return MeasureUnit::create(7, 3, status);
956 }
957 
getDecade()958 MeasureUnit MeasureUnit::getDecade() {
959     return MeasureUnit(7, 3);
960 }
961 
createHour(UErrorCode & status)962 MeasureUnit *MeasureUnit::createHour(UErrorCode &status) {
963     return MeasureUnit::create(7, 4, status);
964 }
965 
getHour()966 MeasureUnit MeasureUnit::getHour() {
967     return MeasureUnit(7, 4);
968 }
969 
createMicrosecond(UErrorCode & status)970 MeasureUnit *MeasureUnit::createMicrosecond(UErrorCode &status) {
971     return MeasureUnit::create(7, 5, status);
972 }
973 
getMicrosecond()974 MeasureUnit MeasureUnit::getMicrosecond() {
975     return MeasureUnit(7, 5);
976 }
977 
createMillisecond(UErrorCode & status)978 MeasureUnit *MeasureUnit::createMillisecond(UErrorCode &status) {
979     return MeasureUnit::create(7, 6, status);
980 }
981 
getMillisecond()982 MeasureUnit MeasureUnit::getMillisecond() {
983     return MeasureUnit(7, 6);
984 }
985 
createMinute(UErrorCode & status)986 MeasureUnit *MeasureUnit::createMinute(UErrorCode &status) {
987     return MeasureUnit::create(7, 7, status);
988 }
989 
getMinute()990 MeasureUnit MeasureUnit::getMinute() {
991     return MeasureUnit(7, 7);
992 }
993 
createMonth(UErrorCode & status)994 MeasureUnit *MeasureUnit::createMonth(UErrorCode &status) {
995     return MeasureUnit::create(7, 8, status);
996 }
997 
getMonth()998 MeasureUnit MeasureUnit::getMonth() {
999     return MeasureUnit(7, 8);
1000 }
1001 
createMonthPerson(UErrorCode & status)1002 MeasureUnit *MeasureUnit::createMonthPerson(UErrorCode &status) {
1003     return MeasureUnit::create(7, 9, status);
1004 }
1005 
getMonthPerson()1006 MeasureUnit MeasureUnit::getMonthPerson() {
1007     return MeasureUnit(7, 9);
1008 }
1009 
createNanosecond(UErrorCode & status)1010 MeasureUnit *MeasureUnit::createNanosecond(UErrorCode &status) {
1011     return MeasureUnit::create(7, 10, status);
1012 }
1013 
getNanosecond()1014 MeasureUnit MeasureUnit::getNanosecond() {
1015     return MeasureUnit(7, 10);
1016 }
1017 
createQuarter(UErrorCode & status)1018 MeasureUnit *MeasureUnit::createQuarter(UErrorCode &status) {
1019     return MeasureUnit::create(7, 11, status);
1020 }
1021 
getQuarter()1022 MeasureUnit MeasureUnit::getQuarter() {
1023     return MeasureUnit(7, 11);
1024 }
1025 
createSecond(UErrorCode & status)1026 MeasureUnit *MeasureUnit::createSecond(UErrorCode &status) {
1027     return MeasureUnit::create(7, 12, status);
1028 }
1029 
getSecond()1030 MeasureUnit MeasureUnit::getSecond() {
1031     return MeasureUnit(7, 12);
1032 }
1033 
createWeek(UErrorCode & status)1034 MeasureUnit *MeasureUnit::createWeek(UErrorCode &status) {
1035     return MeasureUnit::create(7, 13, status);
1036 }
1037 
getWeek()1038 MeasureUnit MeasureUnit::getWeek() {
1039     return MeasureUnit(7, 13);
1040 }
1041 
createWeekPerson(UErrorCode & status)1042 MeasureUnit *MeasureUnit::createWeekPerson(UErrorCode &status) {
1043     return MeasureUnit::create(7, 14, status);
1044 }
1045 
getWeekPerson()1046 MeasureUnit MeasureUnit::getWeekPerson() {
1047     return MeasureUnit(7, 14);
1048 }
1049 
createYear(UErrorCode & status)1050 MeasureUnit *MeasureUnit::createYear(UErrorCode &status) {
1051     return MeasureUnit::create(7, 15, status);
1052 }
1053 
getYear()1054 MeasureUnit MeasureUnit::getYear() {
1055     return MeasureUnit(7, 15);
1056 }
1057 
createYearPerson(UErrorCode & status)1058 MeasureUnit *MeasureUnit::createYearPerson(UErrorCode &status) {
1059     return MeasureUnit::create(7, 16, status);
1060 }
1061 
getYearPerson()1062 MeasureUnit MeasureUnit::getYearPerson() {
1063     return MeasureUnit(7, 16);
1064 }
1065 
createAmpere(UErrorCode & status)1066 MeasureUnit *MeasureUnit::createAmpere(UErrorCode &status) {
1067     return MeasureUnit::create(8, 0, status);
1068 }
1069 
getAmpere()1070 MeasureUnit MeasureUnit::getAmpere() {
1071     return MeasureUnit(8, 0);
1072 }
1073 
createMilliampere(UErrorCode & status)1074 MeasureUnit *MeasureUnit::createMilliampere(UErrorCode &status) {
1075     return MeasureUnit::create(8, 1, status);
1076 }
1077 
getMilliampere()1078 MeasureUnit MeasureUnit::getMilliampere() {
1079     return MeasureUnit(8, 1);
1080 }
1081 
createOhm(UErrorCode & status)1082 MeasureUnit *MeasureUnit::createOhm(UErrorCode &status) {
1083     return MeasureUnit::create(8, 2, status);
1084 }
1085 
getOhm()1086 MeasureUnit MeasureUnit::getOhm() {
1087     return MeasureUnit(8, 2);
1088 }
1089 
createVolt(UErrorCode & status)1090 MeasureUnit *MeasureUnit::createVolt(UErrorCode &status) {
1091     return MeasureUnit::create(8, 3, status);
1092 }
1093 
getVolt()1094 MeasureUnit MeasureUnit::getVolt() {
1095     return MeasureUnit(8, 3);
1096 }
1097 
createBritishThermalUnit(UErrorCode & status)1098 MeasureUnit *MeasureUnit::createBritishThermalUnit(UErrorCode &status) {
1099     return MeasureUnit::create(9, 0, status);
1100 }
1101 
getBritishThermalUnit()1102 MeasureUnit MeasureUnit::getBritishThermalUnit() {
1103     return MeasureUnit(9, 0);
1104 }
1105 
createCalorie(UErrorCode & status)1106 MeasureUnit *MeasureUnit::createCalorie(UErrorCode &status) {
1107     return MeasureUnit::create(9, 1, status);
1108 }
1109 
getCalorie()1110 MeasureUnit MeasureUnit::getCalorie() {
1111     return MeasureUnit(9, 1);
1112 }
1113 
createElectronvolt(UErrorCode & status)1114 MeasureUnit *MeasureUnit::createElectronvolt(UErrorCode &status) {
1115     return MeasureUnit::create(9, 2, status);
1116 }
1117 
getElectronvolt()1118 MeasureUnit MeasureUnit::getElectronvolt() {
1119     return MeasureUnit(9, 2);
1120 }
1121 
createFoodcalorie(UErrorCode & status)1122 MeasureUnit *MeasureUnit::createFoodcalorie(UErrorCode &status) {
1123     return MeasureUnit::create(9, 3, status);
1124 }
1125 
getFoodcalorie()1126 MeasureUnit MeasureUnit::getFoodcalorie() {
1127     return MeasureUnit(9, 3);
1128 }
1129 
createJoule(UErrorCode & status)1130 MeasureUnit *MeasureUnit::createJoule(UErrorCode &status) {
1131     return MeasureUnit::create(9, 4, status);
1132 }
1133 
getJoule()1134 MeasureUnit MeasureUnit::getJoule() {
1135     return MeasureUnit(9, 4);
1136 }
1137 
createKilocalorie(UErrorCode & status)1138 MeasureUnit *MeasureUnit::createKilocalorie(UErrorCode &status) {
1139     return MeasureUnit::create(9, 5, status);
1140 }
1141 
getKilocalorie()1142 MeasureUnit MeasureUnit::getKilocalorie() {
1143     return MeasureUnit(9, 5);
1144 }
1145 
createKilojoule(UErrorCode & status)1146 MeasureUnit *MeasureUnit::createKilojoule(UErrorCode &status) {
1147     return MeasureUnit::create(9, 6, status);
1148 }
1149 
getKilojoule()1150 MeasureUnit MeasureUnit::getKilojoule() {
1151     return MeasureUnit(9, 6);
1152 }
1153 
createKilowattHour(UErrorCode & status)1154 MeasureUnit *MeasureUnit::createKilowattHour(UErrorCode &status) {
1155     return MeasureUnit::create(9, 7, status);
1156 }
1157 
getKilowattHour()1158 MeasureUnit MeasureUnit::getKilowattHour() {
1159     return MeasureUnit(9, 7);
1160 }
1161 
createThermUs(UErrorCode & status)1162 MeasureUnit *MeasureUnit::createThermUs(UErrorCode &status) {
1163     return MeasureUnit::create(9, 8, status);
1164 }
1165 
getThermUs()1166 MeasureUnit MeasureUnit::getThermUs() {
1167     return MeasureUnit(9, 8);
1168 }
1169 
createKilowattHourPer100Kilometer(UErrorCode & status)1170 MeasureUnit *MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode &status) {
1171     return MeasureUnit::create(10, 0, status);
1172 }
1173 
getKilowattHourPer100Kilometer()1174 MeasureUnit MeasureUnit::getKilowattHourPer100Kilometer() {
1175     return MeasureUnit(10, 0);
1176 }
1177 
createNewton(UErrorCode & status)1178 MeasureUnit *MeasureUnit::createNewton(UErrorCode &status) {
1179     return MeasureUnit::create(10, 1, status);
1180 }
1181 
getNewton()1182 MeasureUnit MeasureUnit::getNewton() {
1183     return MeasureUnit(10, 1);
1184 }
1185 
createPoundForce(UErrorCode & status)1186 MeasureUnit *MeasureUnit::createPoundForce(UErrorCode &status) {
1187     return MeasureUnit::create(10, 2, status);
1188 }
1189 
getPoundForce()1190 MeasureUnit MeasureUnit::getPoundForce() {
1191     return MeasureUnit(10, 2);
1192 }
1193 
createGigahertz(UErrorCode & status)1194 MeasureUnit *MeasureUnit::createGigahertz(UErrorCode &status) {
1195     return MeasureUnit::create(11, 0, status);
1196 }
1197 
getGigahertz()1198 MeasureUnit MeasureUnit::getGigahertz() {
1199     return MeasureUnit(11, 0);
1200 }
1201 
createHertz(UErrorCode & status)1202 MeasureUnit *MeasureUnit::createHertz(UErrorCode &status) {
1203     return MeasureUnit::create(11, 1, status);
1204 }
1205 
getHertz()1206 MeasureUnit MeasureUnit::getHertz() {
1207     return MeasureUnit(11, 1);
1208 }
1209 
createKilohertz(UErrorCode & status)1210 MeasureUnit *MeasureUnit::createKilohertz(UErrorCode &status) {
1211     return MeasureUnit::create(11, 2, status);
1212 }
1213 
getKilohertz()1214 MeasureUnit MeasureUnit::getKilohertz() {
1215     return MeasureUnit(11, 2);
1216 }
1217 
createMegahertz(UErrorCode & status)1218 MeasureUnit *MeasureUnit::createMegahertz(UErrorCode &status) {
1219     return MeasureUnit::create(11, 3, status);
1220 }
1221 
getMegahertz()1222 MeasureUnit MeasureUnit::getMegahertz() {
1223     return MeasureUnit(11, 3);
1224 }
1225 
createDot(UErrorCode & status)1226 MeasureUnit *MeasureUnit::createDot(UErrorCode &status) {
1227     return MeasureUnit::create(12, 0, status);
1228 }
1229 
getDot()1230 MeasureUnit MeasureUnit::getDot() {
1231     return MeasureUnit(12, 0);
1232 }
1233 
createDotPerCentimeter(UErrorCode & status)1234 MeasureUnit *MeasureUnit::createDotPerCentimeter(UErrorCode &status) {
1235     return MeasureUnit::create(12, 1, status);
1236 }
1237 
getDotPerCentimeter()1238 MeasureUnit MeasureUnit::getDotPerCentimeter() {
1239     return MeasureUnit(12, 1);
1240 }
1241 
createDotPerInch(UErrorCode & status)1242 MeasureUnit *MeasureUnit::createDotPerInch(UErrorCode &status) {
1243     return MeasureUnit::create(12, 2, status);
1244 }
1245 
getDotPerInch()1246 MeasureUnit MeasureUnit::getDotPerInch() {
1247     return MeasureUnit(12, 2);
1248 }
1249 
createEm(UErrorCode & status)1250 MeasureUnit *MeasureUnit::createEm(UErrorCode &status) {
1251     return MeasureUnit::create(12, 3, status);
1252 }
1253 
getEm()1254 MeasureUnit MeasureUnit::getEm() {
1255     return MeasureUnit(12, 3);
1256 }
1257 
createMegapixel(UErrorCode & status)1258 MeasureUnit *MeasureUnit::createMegapixel(UErrorCode &status) {
1259     return MeasureUnit::create(12, 4, status);
1260 }
1261 
getMegapixel()1262 MeasureUnit MeasureUnit::getMegapixel() {
1263     return MeasureUnit(12, 4);
1264 }
1265 
createPixel(UErrorCode & status)1266 MeasureUnit *MeasureUnit::createPixel(UErrorCode &status) {
1267     return MeasureUnit::create(12, 5, status);
1268 }
1269 
getPixel()1270 MeasureUnit MeasureUnit::getPixel() {
1271     return MeasureUnit(12, 5);
1272 }
1273 
createPixelPerCentimeter(UErrorCode & status)1274 MeasureUnit *MeasureUnit::createPixelPerCentimeter(UErrorCode &status) {
1275     return MeasureUnit::create(12, 6, status);
1276 }
1277 
getPixelPerCentimeter()1278 MeasureUnit MeasureUnit::getPixelPerCentimeter() {
1279     return MeasureUnit(12, 6);
1280 }
1281 
createPixelPerInch(UErrorCode & status)1282 MeasureUnit *MeasureUnit::createPixelPerInch(UErrorCode &status) {
1283     return MeasureUnit::create(12, 7, status);
1284 }
1285 
getPixelPerInch()1286 MeasureUnit MeasureUnit::getPixelPerInch() {
1287     return MeasureUnit(12, 7);
1288 }
1289 
createAstronomicalUnit(UErrorCode & status)1290 MeasureUnit *MeasureUnit::createAstronomicalUnit(UErrorCode &status) {
1291     return MeasureUnit::create(13, 0, status);
1292 }
1293 
getAstronomicalUnit()1294 MeasureUnit MeasureUnit::getAstronomicalUnit() {
1295     return MeasureUnit(13, 0);
1296 }
1297 
createCentimeter(UErrorCode & status)1298 MeasureUnit *MeasureUnit::createCentimeter(UErrorCode &status) {
1299     return MeasureUnit::create(13, 1, status);
1300 }
1301 
getCentimeter()1302 MeasureUnit MeasureUnit::getCentimeter() {
1303     return MeasureUnit(13, 1);
1304 }
1305 
createDecimeter(UErrorCode & status)1306 MeasureUnit *MeasureUnit::createDecimeter(UErrorCode &status) {
1307     return MeasureUnit::create(13, 2, status);
1308 }
1309 
getDecimeter()1310 MeasureUnit MeasureUnit::getDecimeter() {
1311     return MeasureUnit(13, 2);
1312 }
1313 
createEarthRadius(UErrorCode & status)1314 MeasureUnit *MeasureUnit::createEarthRadius(UErrorCode &status) {
1315     return MeasureUnit::create(13, 3, status);
1316 }
1317 
getEarthRadius()1318 MeasureUnit MeasureUnit::getEarthRadius() {
1319     return MeasureUnit(13, 3);
1320 }
1321 
createFathom(UErrorCode & status)1322 MeasureUnit *MeasureUnit::createFathom(UErrorCode &status) {
1323     return MeasureUnit::create(13, 4, status);
1324 }
1325 
getFathom()1326 MeasureUnit MeasureUnit::getFathom() {
1327     return MeasureUnit(13, 4);
1328 }
1329 
createFoot(UErrorCode & status)1330 MeasureUnit *MeasureUnit::createFoot(UErrorCode &status) {
1331     return MeasureUnit::create(13, 5, status);
1332 }
1333 
getFoot()1334 MeasureUnit MeasureUnit::getFoot() {
1335     return MeasureUnit(13, 5);
1336 }
1337 
createFurlong(UErrorCode & status)1338 MeasureUnit *MeasureUnit::createFurlong(UErrorCode &status) {
1339     return MeasureUnit::create(13, 6, status);
1340 }
1341 
getFurlong()1342 MeasureUnit MeasureUnit::getFurlong() {
1343     return MeasureUnit(13, 6);
1344 }
1345 
createInch(UErrorCode & status)1346 MeasureUnit *MeasureUnit::createInch(UErrorCode &status) {
1347     return MeasureUnit::create(13, 7, status);
1348 }
1349 
getInch()1350 MeasureUnit MeasureUnit::getInch() {
1351     return MeasureUnit(13, 7);
1352 }
1353 
createKilometer(UErrorCode & status)1354 MeasureUnit *MeasureUnit::createKilometer(UErrorCode &status) {
1355     return MeasureUnit::create(13, 8, status);
1356 }
1357 
getKilometer()1358 MeasureUnit MeasureUnit::getKilometer() {
1359     return MeasureUnit(13, 8);
1360 }
1361 
createLightYear(UErrorCode & status)1362 MeasureUnit *MeasureUnit::createLightYear(UErrorCode &status) {
1363     return MeasureUnit::create(13, 9, status);
1364 }
1365 
getLightYear()1366 MeasureUnit MeasureUnit::getLightYear() {
1367     return MeasureUnit(13, 9);
1368 }
1369 
createMeter(UErrorCode & status)1370 MeasureUnit *MeasureUnit::createMeter(UErrorCode &status) {
1371     return MeasureUnit::create(13, 10, status);
1372 }
1373 
getMeter()1374 MeasureUnit MeasureUnit::getMeter() {
1375     return MeasureUnit(13, 10);
1376 }
1377 
createMicrometer(UErrorCode & status)1378 MeasureUnit *MeasureUnit::createMicrometer(UErrorCode &status) {
1379     return MeasureUnit::create(13, 11, status);
1380 }
1381 
getMicrometer()1382 MeasureUnit MeasureUnit::getMicrometer() {
1383     return MeasureUnit(13, 11);
1384 }
1385 
createMile(UErrorCode & status)1386 MeasureUnit *MeasureUnit::createMile(UErrorCode &status) {
1387     return MeasureUnit::create(13, 12, status);
1388 }
1389 
getMile()1390 MeasureUnit MeasureUnit::getMile() {
1391     return MeasureUnit(13, 12);
1392 }
1393 
createMileScandinavian(UErrorCode & status)1394 MeasureUnit *MeasureUnit::createMileScandinavian(UErrorCode &status) {
1395     return MeasureUnit::create(13, 13, status);
1396 }
1397 
getMileScandinavian()1398 MeasureUnit MeasureUnit::getMileScandinavian() {
1399     return MeasureUnit(13, 13);
1400 }
1401 
createMillimeter(UErrorCode & status)1402 MeasureUnit *MeasureUnit::createMillimeter(UErrorCode &status) {
1403     return MeasureUnit::create(13, 14, status);
1404 }
1405 
getMillimeter()1406 MeasureUnit MeasureUnit::getMillimeter() {
1407     return MeasureUnit(13, 14);
1408 }
1409 
createNanometer(UErrorCode & status)1410 MeasureUnit *MeasureUnit::createNanometer(UErrorCode &status) {
1411     return MeasureUnit::create(13, 15, status);
1412 }
1413 
getNanometer()1414 MeasureUnit MeasureUnit::getNanometer() {
1415     return MeasureUnit(13, 15);
1416 }
1417 
createNauticalMile(UErrorCode & status)1418 MeasureUnit *MeasureUnit::createNauticalMile(UErrorCode &status) {
1419     return MeasureUnit::create(13, 16, status);
1420 }
1421 
getNauticalMile()1422 MeasureUnit MeasureUnit::getNauticalMile() {
1423     return MeasureUnit(13, 16);
1424 }
1425 
createParsec(UErrorCode & status)1426 MeasureUnit *MeasureUnit::createParsec(UErrorCode &status) {
1427     return MeasureUnit::create(13, 17, status);
1428 }
1429 
getParsec()1430 MeasureUnit MeasureUnit::getParsec() {
1431     return MeasureUnit(13, 17);
1432 }
1433 
createPicometer(UErrorCode & status)1434 MeasureUnit *MeasureUnit::createPicometer(UErrorCode &status) {
1435     return MeasureUnit::create(13, 18, status);
1436 }
1437 
getPicometer()1438 MeasureUnit MeasureUnit::getPicometer() {
1439     return MeasureUnit(13, 18);
1440 }
1441 
createPoint(UErrorCode & status)1442 MeasureUnit *MeasureUnit::createPoint(UErrorCode &status) {
1443     return MeasureUnit::create(13, 19, status);
1444 }
1445 
getPoint()1446 MeasureUnit MeasureUnit::getPoint() {
1447     return MeasureUnit(13, 19);
1448 }
1449 
createSolarRadius(UErrorCode & status)1450 MeasureUnit *MeasureUnit::createSolarRadius(UErrorCode &status) {
1451     return MeasureUnit::create(13, 20, status);
1452 }
1453 
getSolarRadius()1454 MeasureUnit MeasureUnit::getSolarRadius() {
1455     return MeasureUnit(13, 20);
1456 }
1457 
createYard(UErrorCode & status)1458 MeasureUnit *MeasureUnit::createYard(UErrorCode &status) {
1459     return MeasureUnit::create(13, 21, status);
1460 }
1461 
getYard()1462 MeasureUnit MeasureUnit::getYard() {
1463     return MeasureUnit(13, 21);
1464 }
1465 
createCandela(UErrorCode & status)1466 MeasureUnit *MeasureUnit::createCandela(UErrorCode &status) {
1467     return MeasureUnit::create(14, 0, status);
1468 }
1469 
getCandela()1470 MeasureUnit MeasureUnit::getCandela() {
1471     return MeasureUnit(14, 0);
1472 }
1473 
createLumen(UErrorCode & status)1474 MeasureUnit *MeasureUnit::createLumen(UErrorCode &status) {
1475     return MeasureUnit::create(14, 1, status);
1476 }
1477 
getLumen()1478 MeasureUnit MeasureUnit::getLumen() {
1479     return MeasureUnit(14, 1);
1480 }
1481 
createLux(UErrorCode & status)1482 MeasureUnit *MeasureUnit::createLux(UErrorCode &status) {
1483     return MeasureUnit::create(14, 2, status);
1484 }
1485 
getLux()1486 MeasureUnit MeasureUnit::getLux() {
1487     return MeasureUnit(14, 2);
1488 }
1489 
createSolarLuminosity(UErrorCode & status)1490 MeasureUnit *MeasureUnit::createSolarLuminosity(UErrorCode &status) {
1491     return MeasureUnit::create(14, 3, status);
1492 }
1493 
getSolarLuminosity()1494 MeasureUnit MeasureUnit::getSolarLuminosity() {
1495     return MeasureUnit(14, 3);
1496 }
1497 
createCarat(UErrorCode & status)1498 MeasureUnit *MeasureUnit::createCarat(UErrorCode &status) {
1499     return MeasureUnit::create(15, 0, status);
1500 }
1501 
getCarat()1502 MeasureUnit MeasureUnit::getCarat() {
1503     return MeasureUnit(15, 0);
1504 }
1505 
createDalton(UErrorCode & status)1506 MeasureUnit *MeasureUnit::createDalton(UErrorCode &status) {
1507     return MeasureUnit::create(15, 1, status);
1508 }
1509 
getDalton()1510 MeasureUnit MeasureUnit::getDalton() {
1511     return MeasureUnit(15, 1);
1512 }
1513 
createEarthMass(UErrorCode & status)1514 MeasureUnit *MeasureUnit::createEarthMass(UErrorCode &status) {
1515     return MeasureUnit::create(15, 2, status);
1516 }
1517 
getEarthMass()1518 MeasureUnit MeasureUnit::getEarthMass() {
1519     return MeasureUnit(15, 2);
1520 }
1521 
createGrain(UErrorCode & status)1522 MeasureUnit *MeasureUnit::createGrain(UErrorCode &status) {
1523     return MeasureUnit::create(15, 3, status);
1524 }
1525 
getGrain()1526 MeasureUnit MeasureUnit::getGrain() {
1527     return MeasureUnit(15, 3);
1528 }
1529 
createGram(UErrorCode & status)1530 MeasureUnit *MeasureUnit::createGram(UErrorCode &status) {
1531     return MeasureUnit::create(15, 4, status);
1532 }
1533 
getGram()1534 MeasureUnit MeasureUnit::getGram() {
1535     return MeasureUnit(15, 4);
1536 }
1537 
createKilogram(UErrorCode & status)1538 MeasureUnit *MeasureUnit::createKilogram(UErrorCode &status) {
1539     return MeasureUnit::create(15, 5, status);
1540 }
1541 
getKilogram()1542 MeasureUnit MeasureUnit::getKilogram() {
1543     return MeasureUnit(15, 5);
1544 }
1545 
createMetricTon(UErrorCode & status)1546 MeasureUnit *MeasureUnit::createMetricTon(UErrorCode &status) {
1547     return MeasureUnit::create(15, 14, status);
1548 }
1549 
getMetricTon()1550 MeasureUnit MeasureUnit::getMetricTon() {
1551     return MeasureUnit(15, 14);
1552 }
1553 
createMicrogram(UErrorCode & status)1554 MeasureUnit *MeasureUnit::createMicrogram(UErrorCode &status) {
1555     return MeasureUnit::create(15, 6, status);
1556 }
1557 
getMicrogram()1558 MeasureUnit MeasureUnit::getMicrogram() {
1559     return MeasureUnit(15, 6);
1560 }
1561 
createMilligram(UErrorCode & status)1562 MeasureUnit *MeasureUnit::createMilligram(UErrorCode &status) {
1563     return MeasureUnit::create(15, 7, status);
1564 }
1565 
getMilligram()1566 MeasureUnit MeasureUnit::getMilligram() {
1567     return MeasureUnit(15, 7);
1568 }
1569 
createOunce(UErrorCode & status)1570 MeasureUnit *MeasureUnit::createOunce(UErrorCode &status) {
1571     return MeasureUnit::create(15, 8, status);
1572 }
1573 
getOunce()1574 MeasureUnit MeasureUnit::getOunce() {
1575     return MeasureUnit(15, 8);
1576 }
1577 
createOunceTroy(UErrorCode & status)1578 MeasureUnit *MeasureUnit::createOunceTroy(UErrorCode &status) {
1579     return MeasureUnit::create(15, 9, status);
1580 }
1581 
getOunceTroy()1582 MeasureUnit MeasureUnit::getOunceTroy() {
1583     return MeasureUnit(15, 9);
1584 }
1585 
createPound(UErrorCode & status)1586 MeasureUnit *MeasureUnit::createPound(UErrorCode &status) {
1587     return MeasureUnit::create(15, 10, status);
1588 }
1589 
getPound()1590 MeasureUnit MeasureUnit::getPound() {
1591     return MeasureUnit(15, 10);
1592 }
1593 
createSolarMass(UErrorCode & status)1594 MeasureUnit *MeasureUnit::createSolarMass(UErrorCode &status) {
1595     return MeasureUnit::create(15, 11, status);
1596 }
1597 
getSolarMass()1598 MeasureUnit MeasureUnit::getSolarMass() {
1599     return MeasureUnit(15, 11);
1600 }
1601 
createStone(UErrorCode & status)1602 MeasureUnit *MeasureUnit::createStone(UErrorCode &status) {
1603     return MeasureUnit::create(15, 12, status);
1604 }
1605 
getStone()1606 MeasureUnit MeasureUnit::getStone() {
1607     return MeasureUnit(15, 12);
1608 }
1609 
createTon(UErrorCode & status)1610 MeasureUnit *MeasureUnit::createTon(UErrorCode &status) {
1611     return MeasureUnit::create(15, 13, status);
1612 }
1613 
getTon()1614 MeasureUnit MeasureUnit::getTon() {
1615     return MeasureUnit(15, 13);
1616 }
1617 
createTonne(UErrorCode & status)1618 MeasureUnit *MeasureUnit::createTonne(UErrorCode &status) {
1619     return MeasureUnit::create(15, 14, status);
1620 }
1621 
getTonne()1622 MeasureUnit MeasureUnit::getTonne() {
1623     return MeasureUnit(15, 14);
1624 }
1625 
createGigawatt(UErrorCode & status)1626 MeasureUnit *MeasureUnit::createGigawatt(UErrorCode &status) {
1627     return MeasureUnit::create(17, 0, status);
1628 }
1629 
getGigawatt()1630 MeasureUnit MeasureUnit::getGigawatt() {
1631     return MeasureUnit(17, 0);
1632 }
1633 
createHorsepower(UErrorCode & status)1634 MeasureUnit *MeasureUnit::createHorsepower(UErrorCode &status) {
1635     return MeasureUnit::create(17, 1, status);
1636 }
1637 
getHorsepower()1638 MeasureUnit MeasureUnit::getHorsepower() {
1639     return MeasureUnit(17, 1);
1640 }
1641 
createKilowatt(UErrorCode & status)1642 MeasureUnit *MeasureUnit::createKilowatt(UErrorCode &status) {
1643     return MeasureUnit::create(17, 2, status);
1644 }
1645 
getKilowatt()1646 MeasureUnit MeasureUnit::getKilowatt() {
1647     return MeasureUnit(17, 2);
1648 }
1649 
createMegawatt(UErrorCode & status)1650 MeasureUnit *MeasureUnit::createMegawatt(UErrorCode &status) {
1651     return MeasureUnit::create(17, 3, status);
1652 }
1653 
getMegawatt()1654 MeasureUnit MeasureUnit::getMegawatt() {
1655     return MeasureUnit(17, 3);
1656 }
1657 
createMilliwatt(UErrorCode & status)1658 MeasureUnit *MeasureUnit::createMilliwatt(UErrorCode &status) {
1659     return MeasureUnit::create(17, 4, status);
1660 }
1661 
getMilliwatt()1662 MeasureUnit MeasureUnit::getMilliwatt() {
1663     return MeasureUnit(17, 4);
1664 }
1665 
createWatt(UErrorCode & status)1666 MeasureUnit *MeasureUnit::createWatt(UErrorCode &status) {
1667     return MeasureUnit::create(17, 5, status);
1668 }
1669 
getWatt()1670 MeasureUnit MeasureUnit::getWatt() {
1671     return MeasureUnit(17, 5);
1672 }
1673 
createAtmosphere(UErrorCode & status)1674 MeasureUnit *MeasureUnit::createAtmosphere(UErrorCode &status) {
1675     return MeasureUnit::create(18, 0, status);
1676 }
1677 
getAtmosphere()1678 MeasureUnit MeasureUnit::getAtmosphere() {
1679     return MeasureUnit(18, 0);
1680 }
1681 
createBar(UErrorCode & status)1682 MeasureUnit *MeasureUnit::createBar(UErrorCode &status) {
1683     return MeasureUnit::create(18, 1, status);
1684 }
1685 
getBar()1686 MeasureUnit MeasureUnit::getBar() {
1687     return MeasureUnit(18, 1);
1688 }
1689 
createHectopascal(UErrorCode & status)1690 MeasureUnit *MeasureUnit::createHectopascal(UErrorCode &status) {
1691     return MeasureUnit::create(18, 2, status);
1692 }
1693 
getHectopascal()1694 MeasureUnit MeasureUnit::getHectopascal() {
1695     return MeasureUnit(18, 2);
1696 }
1697 
createInchHg(UErrorCode & status)1698 MeasureUnit *MeasureUnit::createInchHg(UErrorCode &status) {
1699     return MeasureUnit::create(18, 3, status);
1700 }
1701 
getInchHg()1702 MeasureUnit MeasureUnit::getInchHg() {
1703     return MeasureUnit(18, 3);
1704 }
1705 
createKilopascal(UErrorCode & status)1706 MeasureUnit *MeasureUnit::createKilopascal(UErrorCode &status) {
1707     return MeasureUnit::create(18, 4, status);
1708 }
1709 
getKilopascal()1710 MeasureUnit MeasureUnit::getKilopascal() {
1711     return MeasureUnit(18, 4);
1712 }
1713 
createMegapascal(UErrorCode & status)1714 MeasureUnit *MeasureUnit::createMegapascal(UErrorCode &status) {
1715     return MeasureUnit::create(18, 5, status);
1716 }
1717 
getMegapascal()1718 MeasureUnit MeasureUnit::getMegapascal() {
1719     return MeasureUnit(18, 5);
1720 }
1721 
createMillibar(UErrorCode & status)1722 MeasureUnit *MeasureUnit::createMillibar(UErrorCode &status) {
1723     return MeasureUnit::create(18, 6, status);
1724 }
1725 
getMillibar()1726 MeasureUnit MeasureUnit::getMillibar() {
1727     return MeasureUnit(18, 6);
1728 }
1729 
createMillimeterOfMercury(UErrorCode & status)1730 MeasureUnit *MeasureUnit::createMillimeterOfMercury(UErrorCode &status) {
1731     return MeasureUnit::create(18, 7, status);
1732 }
1733 
getMillimeterOfMercury()1734 MeasureUnit MeasureUnit::getMillimeterOfMercury() {
1735     return MeasureUnit(18, 7);
1736 }
1737 
createPascal(UErrorCode & status)1738 MeasureUnit *MeasureUnit::createPascal(UErrorCode &status) {
1739     return MeasureUnit::create(18, 8, status);
1740 }
1741 
getPascal()1742 MeasureUnit MeasureUnit::getPascal() {
1743     return MeasureUnit(18, 8);
1744 }
1745 
createPoundPerSquareInch(UErrorCode & status)1746 MeasureUnit *MeasureUnit::createPoundPerSquareInch(UErrorCode &status) {
1747     return MeasureUnit::create(18, 9, status);
1748 }
1749 
getPoundPerSquareInch()1750 MeasureUnit MeasureUnit::getPoundPerSquareInch() {
1751     return MeasureUnit(18, 9);
1752 }
1753 
createBeaufort(UErrorCode & status)1754 MeasureUnit *MeasureUnit::createBeaufort(UErrorCode &status) {
1755     return MeasureUnit::create(19, 0, status);
1756 }
1757 
getBeaufort()1758 MeasureUnit MeasureUnit::getBeaufort() {
1759     return MeasureUnit(19, 0);
1760 }
1761 
createKilometerPerHour(UErrorCode & status)1762 MeasureUnit *MeasureUnit::createKilometerPerHour(UErrorCode &status) {
1763     return MeasureUnit::create(19, 1, status);
1764 }
1765 
getKilometerPerHour()1766 MeasureUnit MeasureUnit::getKilometerPerHour() {
1767     return MeasureUnit(19, 1);
1768 }
1769 
createKnot(UErrorCode & status)1770 MeasureUnit *MeasureUnit::createKnot(UErrorCode &status) {
1771     return MeasureUnit::create(19, 2, status);
1772 }
1773 
getKnot()1774 MeasureUnit MeasureUnit::getKnot() {
1775     return MeasureUnit(19, 2);
1776 }
1777 
createMeterPerSecond(UErrorCode & status)1778 MeasureUnit *MeasureUnit::createMeterPerSecond(UErrorCode &status) {
1779     return MeasureUnit::create(19, 3, status);
1780 }
1781 
getMeterPerSecond()1782 MeasureUnit MeasureUnit::getMeterPerSecond() {
1783     return MeasureUnit(19, 3);
1784 }
1785 
createMilePerHour(UErrorCode & status)1786 MeasureUnit *MeasureUnit::createMilePerHour(UErrorCode &status) {
1787     return MeasureUnit::create(19, 4, status);
1788 }
1789 
getMilePerHour()1790 MeasureUnit MeasureUnit::getMilePerHour() {
1791     return MeasureUnit(19, 4);
1792 }
1793 
createCelsius(UErrorCode & status)1794 MeasureUnit *MeasureUnit::createCelsius(UErrorCode &status) {
1795     return MeasureUnit::create(20, 0, status);
1796 }
1797 
getCelsius()1798 MeasureUnit MeasureUnit::getCelsius() {
1799     return MeasureUnit(20, 0);
1800 }
1801 
createFahrenheit(UErrorCode & status)1802 MeasureUnit *MeasureUnit::createFahrenheit(UErrorCode &status) {
1803     return MeasureUnit::create(20, 1, status);
1804 }
1805 
getFahrenheit()1806 MeasureUnit MeasureUnit::getFahrenheit() {
1807     return MeasureUnit(20, 1);
1808 }
1809 
createGenericTemperature(UErrorCode & status)1810 MeasureUnit *MeasureUnit::createGenericTemperature(UErrorCode &status) {
1811     return MeasureUnit::create(20, 2, status);
1812 }
1813 
getGenericTemperature()1814 MeasureUnit MeasureUnit::getGenericTemperature() {
1815     return MeasureUnit(20, 2);
1816 }
1817 
createKelvin(UErrorCode & status)1818 MeasureUnit *MeasureUnit::createKelvin(UErrorCode &status) {
1819     return MeasureUnit::create(20, 3, status);
1820 }
1821 
getKelvin()1822 MeasureUnit MeasureUnit::getKelvin() {
1823     return MeasureUnit(20, 3);
1824 }
1825 
createNewtonMeter(UErrorCode & status)1826 MeasureUnit *MeasureUnit::createNewtonMeter(UErrorCode &status) {
1827     return MeasureUnit::create(21, 0, status);
1828 }
1829 
getNewtonMeter()1830 MeasureUnit MeasureUnit::getNewtonMeter() {
1831     return MeasureUnit(21, 0);
1832 }
1833 
createPoundFoot(UErrorCode & status)1834 MeasureUnit *MeasureUnit::createPoundFoot(UErrorCode &status) {
1835     return MeasureUnit::create(21, 1, status);
1836 }
1837 
getPoundFoot()1838 MeasureUnit MeasureUnit::getPoundFoot() {
1839     return MeasureUnit(21, 1);
1840 }
1841 
createAcreFoot(UErrorCode & status)1842 MeasureUnit *MeasureUnit::createAcreFoot(UErrorCode &status) {
1843     return MeasureUnit::create(22, 0, status);
1844 }
1845 
getAcreFoot()1846 MeasureUnit MeasureUnit::getAcreFoot() {
1847     return MeasureUnit(22, 0);
1848 }
1849 
createBarrel(UErrorCode & status)1850 MeasureUnit *MeasureUnit::createBarrel(UErrorCode &status) {
1851     return MeasureUnit::create(22, 1, status);
1852 }
1853 
getBarrel()1854 MeasureUnit MeasureUnit::getBarrel() {
1855     return MeasureUnit(22, 1);
1856 }
1857 
createBushel(UErrorCode & status)1858 MeasureUnit *MeasureUnit::createBushel(UErrorCode &status) {
1859     return MeasureUnit::create(22, 2, status);
1860 }
1861 
getBushel()1862 MeasureUnit MeasureUnit::getBushel() {
1863     return MeasureUnit(22, 2);
1864 }
1865 
createCentiliter(UErrorCode & status)1866 MeasureUnit *MeasureUnit::createCentiliter(UErrorCode &status) {
1867     return MeasureUnit::create(22, 3, status);
1868 }
1869 
getCentiliter()1870 MeasureUnit MeasureUnit::getCentiliter() {
1871     return MeasureUnit(22, 3);
1872 }
1873 
createCubicCentimeter(UErrorCode & status)1874 MeasureUnit *MeasureUnit::createCubicCentimeter(UErrorCode &status) {
1875     return MeasureUnit::create(22, 4, status);
1876 }
1877 
getCubicCentimeter()1878 MeasureUnit MeasureUnit::getCubicCentimeter() {
1879     return MeasureUnit(22, 4);
1880 }
1881 
createCubicFoot(UErrorCode & status)1882 MeasureUnit *MeasureUnit::createCubicFoot(UErrorCode &status) {
1883     return MeasureUnit::create(22, 5, status);
1884 }
1885 
getCubicFoot()1886 MeasureUnit MeasureUnit::getCubicFoot() {
1887     return MeasureUnit(22, 5);
1888 }
1889 
createCubicInch(UErrorCode & status)1890 MeasureUnit *MeasureUnit::createCubicInch(UErrorCode &status) {
1891     return MeasureUnit::create(22, 6, status);
1892 }
1893 
getCubicInch()1894 MeasureUnit MeasureUnit::getCubicInch() {
1895     return MeasureUnit(22, 6);
1896 }
1897 
createCubicKilometer(UErrorCode & status)1898 MeasureUnit *MeasureUnit::createCubicKilometer(UErrorCode &status) {
1899     return MeasureUnit::create(22, 7, status);
1900 }
1901 
getCubicKilometer()1902 MeasureUnit MeasureUnit::getCubicKilometer() {
1903     return MeasureUnit(22, 7);
1904 }
1905 
createCubicMeter(UErrorCode & status)1906 MeasureUnit *MeasureUnit::createCubicMeter(UErrorCode &status) {
1907     return MeasureUnit::create(22, 8, status);
1908 }
1909 
getCubicMeter()1910 MeasureUnit MeasureUnit::getCubicMeter() {
1911     return MeasureUnit(22, 8);
1912 }
1913 
createCubicMile(UErrorCode & status)1914 MeasureUnit *MeasureUnit::createCubicMile(UErrorCode &status) {
1915     return MeasureUnit::create(22, 9, status);
1916 }
1917 
getCubicMile()1918 MeasureUnit MeasureUnit::getCubicMile() {
1919     return MeasureUnit(22, 9);
1920 }
1921 
createCubicYard(UErrorCode & status)1922 MeasureUnit *MeasureUnit::createCubicYard(UErrorCode &status) {
1923     return MeasureUnit::create(22, 10, status);
1924 }
1925 
getCubicYard()1926 MeasureUnit MeasureUnit::getCubicYard() {
1927     return MeasureUnit(22, 10);
1928 }
1929 
createCup(UErrorCode & status)1930 MeasureUnit *MeasureUnit::createCup(UErrorCode &status) {
1931     return MeasureUnit::create(22, 11, status);
1932 }
1933 
getCup()1934 MeasureUnit MeasureUnit::getCup() {
1935     return MeasureUnit(22, 11);
1936 }
1937 
createCupMetric(UErrorCode & status)1938 MeasureUnit *MeasureUnit::createCupMetric(UErrorCode &status) {
1939     return MeasureUnit::create(22, 12, status);
1940 }
1941 
getCupMetric()1942 MeasureUnit MeasureUnit::getCupMetric() {
1943     return MeasureUnit(22, 12);
1944 }
1945 
createDeciliter(UErrorCode & status)1946 MeasureUnit *MeasureUnit::createDeciliter(UErrorCode &status) {
1947     return MeasureUnit::create(22, 13, status);
1948 }
1949 
getDeciliter()1950 MeasureUnit MeasureUnit::getDeciliter() {
1951     return MeasureUnit(22, 13);
1952 }
1953 
createDessertSpoon(UErrorCode & status)1954 MeasureUnit *MeasureUnit::createDessertSpoon(UErrorCode &status) {
1955     return MeasureUnit::create(22, 14, status);
1956 }
1957 
getDessertSpoon()1958 MeasureUnit MeasureUnit::getDessertSpoon() {
1959     return MeasureUnit(22, 14);
1960 }
1961 
createDessertSpoonImperial(UErrorCode & status)1962 MeasureUnit *MeasureUnit::createDessertSpoonImperial(UErrorCode &status) {
1963     return MeasureUnit::create(22, 15, status);
1964 }
1965 
getDessertSpoonImperial()1966 MeasureUnit MeasureUnit::getDessertSpoonImperial() {
1967     return MeasureUnit(22, 15);
1968 }
1969 
createDram(UErrorCode & status)1970 MeasureUnit *MeasureUnit::createDram(UErrorCode &status) {
1971     return MeasureUnit::create(22, 16, status);
1972 }
1973 
getDram()1974 MeasureUnit MeasureUnit::getDram() {
1975     return MeasureUnit(22, 16);
1976 }
1977 
createDrop(UErrorCode & status)1978 MeasureUnit *MeasureUnit::createDrop(UErrorCode &status) {
1979     return MeasureUnit::create(22, 17, status);
1980 }
1981 
getDrop()1982 MeasureUnit MeasureUnit::getDrop() {
1983     return MeasureUnit(22, 17);
1984 }
1985 
createFluidOunce(UErrorCode & status)1986 MeasureUnit *MeasureUnit::createFluidOunce(UErrorCode &status) {
1987     return MeasureUnit::create(22, 18, status);
1988 }
1989 
getFluidOunce()1990 MeasureUnit MeasureUnit::getFluidOunce() {
1991     return MeasureUnit(22, 18);
1992 }
1993 
createFluidOunceImperial(UErrorCode & status)1994 MeasureUnit *MeasureUnit::createFluidOunceImperial(UErrorCode &status) {
1995     return MeasureUnit::create(22, 19, status);
1996 }
1997 
getFluidOunceImperial()1998 MeasureUnit MeasureUnit::getFluidOunceImperial() {
1999     return MeasureUnit(22, 19);
2000 }
2001 
createGallon(UErrorCode & status)2002 MeasureUnit *MeasureUnit::createGallon(UErrorCode &status) {
2003     return MeasureUnit::create(22, 20, status);
2004 }
2005 
getGallon()2006 MeasureUnit MeasureUnit::getGallon() {
2007     return MeasureUnit(22, 20);
2008 }
2009 
createGallonImperial(UErrorCode & status)2010 MeasureUnit *MeasureUnit::createGallonImperial(UErrorCode &status) {
2011     return MeasureUnit::create(22, 21, status);
2012 }
2013 
getGallonImperial()2014 MeasureUnit MeasureUnit::getGallonImperial() {
2015     return MeasureUnit(22, 21);
2016 }
2017 
createHectoliter(UErrorCode & status)2018 MeasureUnit *MeasureUnit::createHectoliter(UErrorCode &status) {
2019     return MeasureUnit::create(22, 22, status);
2020 }
2021 
getHectoliter()2022 MeasureUnit MeasureUnit::getHectoliter() {
2023     return MeasureUnit(22, 22);
2024 }
2025 
createJigger(UErrorCode & status)2026 MeasureUnit *MeasureUnit::createJigger(UErrorCode &status) {
2027     return MeasureUnit::create(22, 23, status);
2028 }
2029 
getJigger()2030 MeasureUnit MeasureUnit::getJigger() {
2031     return MeasureUnit(22, 23);
2032 }
2033 
createLiter(UErrorCode & status)2034 MeasureUnit *MeasureUnit::createLiter(UErrorCode &status) {
2035     return MeasureUnit::create(22, 24, status);
2036 }
2037 
getLiter()2038 MeasureUnit MeasureUnit::getLiter() {
2039     return MeasureUnit(22, 24);
2040 }
2041 
createMegaliter(UErrorCode & status)2042 MeasureUnit *MeasureUnit::createMegaliter(UErrorCode &status) {
2043     return MeasureUnit::create(22, 25, status);
2044 }
2045 
getMegaliter()2046 MeasureUnit MeasureUnit::getMegaliter() {
2047     return MeasureUnit(22, 25);
2048 }
2049 
createMilliliter(UErrorCode & status)2050 MeasureUnit *MeasureUnit::createMilliliter(UErrorCode &status) {
2051     return MeasureUnit::create(22, 26, status);
2052 }
2053 
getMilliliter()2054 MeasureUnit MeasureUnit::getMilliliter() {
2055     return MeasureUnit(22, 26);
2056 }
2057 
createPinch(UErrorCode & status)2058 MeasureUnit *MeasureUnit::createPinch(UErrorCode &status) {
2059     return MeasureUnit::create(22, 27, status);
2060 }
2061 
getPinch()2062 MeasureUnit MeasureUnit::getPinch() {
2063     return MeasureUnit(22, 27);
2064 }
2065 
createPint(UErrorCode & status)2066 MeasureUnit *MeasureUnit::createPint(UErrorCode &status) {
2067     return MeasureUnit::create(22, 28, status);
2068 }
2069 
getPint()2070 MeasureUnit MeasureUnit::getPint() {
2071     return MeasureUnit(22, 28);
2072 }
2073 
createPintMetric(UErrorCode & status)2074 MeasureUnit *MeasureUnit::createPintMetric(UErrorCode &status) {
2075     return MeasureUnit::create(22, 29, status);
2076 }
2077 
getPintMetric()2078 MeasureUnit MeasureUnit::getPintMetric() {
2079     return MeasureUnit(22, 29);
2080 }
2081 
createQuart(UErrorCode & status)2082 MeasureUnit *MeasureUnit::createQuart(UErrorCode &status) {
2083     return MeasureUnit::create(22, 30, status);
2084 }
2085 
getQuart()2086 MeasureUnit MeasureUnit::getQuart() {
2087     return MeasureUnit(22, 30);
2088 }
2089 
createQuartImperial(UErrorCode & status)2090 MeasureUnit *MeasureUnit::createQuartImperial(UErrorCode &status) {
2091     return MeasureUnit::create(22, 31, status);
2092 }
2093 
getQuartImperial()2094 MeasureUnit MeasureUnit::getQuartImperial() {
2095     return MeasureUnit(22, 31);
2096 }
2097 
createTablespoon(UErrorCode & status)2098 MeasureUnit *MeasureUnit::createTablespoon(UErrorCode &status) {
2099     return MeasureUnit::create(22, 32, status);
2100 }
2101 
getTablespoon()2102 MeasureUnit MeasureUnit::getTablespoon() {
2103     return MeasureUnit(22, 32);
2104 }
2105 
createTeaspoon(UErrorCode & status)2106 MeasureUnit *MeasureUnit::createTeaspoon(UErrorCode &status) {
2107     return MeasureUnit::create(22, 33, status);
2108 }
2109 
getTeaspoon()2110 MeasureUnit MeasureUnit::getTeaspoon() {
2111     return MeasureUnit(22, 33);
2112 }
2113 
2114 // End generated code for measunit.cpp
2115 
binarySearch(const char * const * array,int32_t start,int32_t end,StringPiece key)2116 static int32_t binarySearch(
2117         const char * const * array, int32_t start, int32_t end, StringPiece key) {
2118     while (start < end) {
2119         int32_t mid = (start + end) / 2;
2120         int32_t cmp = StringPiece(array[mid]).compare(key);
2121         if (cmp < 0) {
2122             start = mid + 1;
2123             continue;
2124         }
2125         if (cmp == 0) {
2126             return mid;
2127         }
2128         end = mid;
2129     }
2130     return -1;
2131 }
2132 
MeasureUnit()2133 MeasureUnit::MeasureUnit() : MeasureUnit(kBaseTypeIdx, kBaseSubTypeIdx) {
2134 }
2135 
MeasureUnit(int32_t typeId,int32_t subTypeId)2136 MeasureUnit::MeasureUnit(int32_t typeId, int32_t subTypeId)
2137         : fImpl(nullptr), fSubTypeId(subTypeId), fTypeId(typeId) {
2138 }
2139 
MeasureUnit(const MeasureUnit & other)2140 MeasureUnit::MeasureUnit(const MeasureUnit &other)
2141         : fImpl(nullptr) {
2142     *this = other;
2143 }
2144 
MeasureUnit(MeasureUnit && other)2145 MeasureUnit::MeasureUnit(MeasureUnit &&other) noexcept
2146         : fImpl(other.fImpl),
2147         fSubTypeId(other.fSubTypeId),
2148         fTypeId(other.fTypeId) {
2149     other.fImpl = nullptr;
2150 }
2151 
MeasureUnit(MeasureUnitImpl && impl)2152 MeasureUnit::MeasureUnit(MeasureUnitImpl&& impl)
2153         : fImpl(nullptr), fSubTypeId(-1), fTypeId(-1) {
2154     if (!findBySubType(impl.identifier.toStringPiece(), this)) {
2155         fImpl = new MeasureUnitImpl(std::move(impl));
2156     }
2157 }
2158 
operator =(const MeasureUnit & other)2159 MeasureUnit &MeasureUnit::operator=(const MeasureUnit &other) {
2160     if (this == &other) {
2161         return *this;
2162     }
2163     if (fImpl != nullptr) {
2164         delete fImpl;
2165     }
2166     if (other.fImpl) {
2167         ErrorCode localStatus;
2168         fImpl = new MeasureUnitImpl(other.fImpl->copy(localStatus));
2169         if (!fImpl || localStatus.isFailure()) {
2170             // Unrecoverable allocation error; set to the default unit
2171             *this = MeasureUnit();
2172             return *this;
2173         }
2174     } else {
2175         fImpl = nullptr;
2176     }
2177     fTypeId = other.fTypeId;
2178     fSubTypeId = other.fSubTypeId;
2179     return *this;
2180 }
2181 
operator =(MeasureUnit && other)2182 MeasureUnit &MeasureUnit::operator=(MeasureUnit &&other) noexcept {
2183     if (this == &other) {
2184         return *this;
2185     }
2186     if (fImpl != nullptr) {
2187         delete fImpl;
2188     }
2189     fImpl = other.fImpl;
2190     other.fImpl = nullptr;
2191     fTypeId = other.fTypeId;
2192     fSubTypeId = other.fSubTypeId;
2193     return *this;
2194 }
2195 
clone() const2196 MeasureUnit *MeasureUnit::clone() const {
2197     return new MeasureUnit(*this);
2198 }
2199 
~MeasureUnit()2200 MeasureUnit::~MeasureUnit() {
2201     if (fImpl != nullptr) {
2202         delete fImpl;
2203         fImpl = nullptr;
2204     }
2205 }
2206 
getType() const2207 const char *MeasureUnit::getType() const {
2208     // We have a type & subtype only if fTypeId is present.
2209     if (fTypeId == -1) {
2210         return "";
2211     }
2212     return gTypes[fTypeId];
2213 }
2214 
getSubtype() const2215 const char *MeasureUnit::getSubtype() const {
2216     // We have a type & subtype only if fTypeId is present.
2217     if (fTypeId == -1) {
2218         return "";
2219     }
2220     return getIdentifier();
2221 }
2222 
getIdentifier() const2223 const char *MeasureUnit::getIdentifier() const {
2224     return fImpl ? fImpl->identifier.data() : gSubTypes[getOffset()];
2225 }
2226 
operator ==(const UObject & other) const2227 bool MeasureUnit::operator==(const UObject& other) const {
2228     if (this == &other) {  // Same object, equal
2229         return true;
2230     }
2231     if (typeid(*this) != typeid(other)) { // Different types, not equal
2232         return false;
2233     }
2234     const MeasureUnit &rhs = static_cast<const MeasureUnit&>(other);
2235     return uprv_strcmp(getIdentifier(), rhs.getIdentifier()) == 0;
2236 }
2237 
getAvailable(MeasureUnit * dest,int32_t destCapacity,UErrorCode & errorCode)2238 int32_t MeasureUnit::getAvailable(
2239         MeasureUnit *dest,
2240         int32_t destCapacity,
2241         UErrorCode &errorCode) {
2242     if (U_FAILURE(errorCode)) {
2243         return 0;
2244     }
2245     if (destCapacity < UPRV_LENGTHOF(gSubTypes)) {
2246         errorCode = U_BUFFER_OVERFLOW_ERROR;
2247         return UPRV_LENGTHOF(gSubTypes);
2248     }
2249     int32_t idx = 0;
2250     for (int32_t typeIdx = 0; typeIdx < UPRV_LENGTHOF(gTypes); ++typeIdx) {
2251         int32_t len = gOffsets[typeIdx + 1] - gOffsets[typeIdx];
2252         for (int32_t subTypeIdx = 0; subTypeIdx < len; ++subTypeIdx) {
2253             dest[idx].setTo(typeIdx, subTypeIdx);
2254             ++idx;
2255         }
2256     }
2257     U_ASSERT(idx == UPRV_LENGTHOF(gSubTypes));
2258     return UPRV_LENGTHOF(gSubTypes);
2259 }
2260 
getAvailable(const char * type,MeasureUnit * dest,int32_t destCapacity,UErrorCode & errorCode)2261 int32_t MeasureUnit::getAvailable(
2262         const char *type,
2263         MeasureUnit *dest,
2264         int32_t destCapacity,
2265         UErrorCode &errorCode) {
2266     if (U_FAILURE(errorCode)) {
2267         return 0;
2268     }
2269     int32_t typeIdx = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), type);
2270     if (typeIdx == -1) {
2271         return 0;
2272     }
2273     int32_t len = gOffsets[typeIdx + 1] - gOffsets[typeIdx];
2274     if (destCapacity < len) {
2275         errorCode = U_BUFFER_OVERFLOW_ERROR;
2276         return len;
2277     }
2278     for (int subTypeIdx = 0; subTypeIdx < len; ++subTypeIdx) {
2279         dest[subTypeIdx].setTo(typeIdx, subTypeIdx);
2280     }
2281     return len;
2282 }
2283 
getAvailableTypes(UErrorCode & errorCode)2284 StringEnumeration* MeasureUnit::getAvailableTypes(UErrorCode &errorCode) {
2285     UEnumeration *uenum = uenum_openCharStringsEnumeration(
2286             gTypes, UPRV_LENGTHOF(gTypes), &errorCode);
2287     if (U_FAILURE(errorCode)) {
2288         uenum_close(uenum);
2289         return nullptr;
2290     }
2291     StringEnumeration *result = new UStringEnumeration(uenum);
2292     if (result == nullptr) {
2293         errorCode = U_MEMORY_ALLOCATION_ERROR;
2294         uenum_close(uenum);
2295         return nullptr;
2296     }
2297     return result;
2298 }
2299 
findBySubType(StringPiece subType,MeasureUnit * output)2300 bool MeasureUnit::findBySubType(StringPiece subType, MeasureUnit* output) {
2301     // Sanity checking kCurrencyOffset and final entry in gOffsets
2302     U_ASSERT(uprv_strcmp(gTypes[kCurrencyOffset], "currency") == 0);
2303     U_ASSERT(gOffsets[UPRV_LENGTHOF(gOffsets) - 1] == UPRV_LENGTHOF(gSubTypes));
2304 
2305     for (int32_t t = 0; t < UPRV_LENGTHOF(gOffsets) - 1; t++) {
2306         // Skip currency units
2307         if (t == kCurrencyOffset) {
2308             continue;
2309         }
2310         int32_t st = binarySearch(gSubTypes, gOffsets[t], gOffsets[t + 1], subType);
2311         if (st >= 0) {
2312             output->setTo(t, st - gOffsets[t]);
2313             return true;
2314         }
2315     }
2316     return false;
2317 }
2318 
create(int typeId,int subTypeId,UErrorCode & status)2319 MeasureUnit *MeasureUnit::create(int typeId, int subTypeId, UErrorCode &status) {
2320     if (U_FAILURE(status)) {
2321         return nullptr;
2322     }
2323     MeasureUnit *result = new MeasureUnit(typeId, subTypeId);
2324     if (result == nullptr) {
2325         status = U_MEMORY_ALLOCATION_ERROR;
2326     }
2327     return result;
2328 }
2329 
initTime(const char * timeId)2330 void MeasureUnit::initTime(const char *timeId) {
2331     int32_t result = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), "duration");
2332     U_ASSERT(result != -1);
2333     fTypeId = result;
2334     result = binarySearch(gSubTypes, gOffsets[fTypeId], gOffsets[fTypeId + 1], timeId);
2335     U_ASSERT(result != -1);
2336     fSubTypeId = result - gOffsets[fTypeId];
2337 }
2338 
initCurrency(StringPiece isoCurrency)2339 void MeasureUnit::initCurrency(StringPiece isoCurrency) {
2340     int32_t result = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), "currency");
2341     U_ASSERT(result != -1);
2342     fTypeId = result;
2343     result = binarySearch(
2344             gSubTypes, gOffsets[fTypeId], gOffsets[fTypeId + 1], isoCurrency);
2345     if (result == -1) {
2346         fImpl = new MeasureUnitImpl(MeasureUnitImpl::forCurrencyCode(isoCurrency));
2347         if (fImpl) {
2348             fSubTypeId = -1;
2349             return;
2350         }
2351         // malloc error: fall back to the undefined currency
2352         result = binarySearch(
2353             gSubTypes, gOffsets[fTypeId], gOffsets[fTypeId + 1], kDefaultCurrency8);
2354         U_ASSERT(result != -1);
2355     }
2356     fSubTypeId = result - gOffsets[fTypeId];
2357 }
2358 
setTo(int32_t typeId,int32_t subTypeId)2359 void MeasureUnit::setTo(int32_t typeId, int32_t subTypeId) {
2360     fTypeId = typeId;
2361     fSubTypeId = subTypeId;
2362     if (fImpl != nullptr) {
2363         delete fImpl;
2364         fImpl = nullptr;
2365     }
2366 }
2367 
getOffset() const2368 int32_t MeasureUnit::getOffset() const {
2369     if (fTypeId < 0 || fSubTypeId < 0) {
2370         return -1;
2371     }
2372     return gOffsets[fTypeId] + fSubTypeId;
2373 }
2374 
copy(UErrorCode & status) const2375 MeasureUnitImpl MeasureUnitImpl::copy(UErrorCode &status) const {
2376     MeasureUnitImpl result;
2377     result.complexity = complexity;
2378     result.identifier.append(identifier, status);
2379     for (int32_t i = 0; i < singleUnits.length(); i++) {
2380         SingleUnitImpl *item = result.singleUnits.emplaceBack(*singleUnits[i]);
2381         if (!item) {
2382             status = U_MEMORY_ALLOCATION_ERROR;
2383             return result;
2384         }
2385     }
2386     return result;
2387 }
2388 
2389 U_NAMESPACE_END
2390 
2391 #endif /* !UNCONFIG_NO_FORMATTING */
2392