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