1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 **********************************************************************
5 * Copyright (c) 2004-2016, International Business Machines
6 * Corporation and others. All Rights Reserved.
7 **********************************************************************
8 * Author: Alan Liu
9 * Created: April 26, 2004
10 * Since: ICU 3.0
11 **********************************************************************
12 */
13 #include "utypeinfo.h" // for 'typeid' to work
14
15 #include "unicode/measunit.h"
16
17 #if !UCONFIG_NO_FORMATTING
18
19 #include "unicode/uenum.h"
20 #include "unicode/errorcode.h"
21 #include "ustrenum.h"
22 #include "cstring.h"
23 #include "uassert.h"
24 #include "measunit_impl.h"
25
26 U_NAMESPACE_BEGIN
27
28 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MeasureUnit)
29
30 // All code between the "Start generated code" comment and
31 // the "End generated code" comment is auto generated code
32 // and must not be edited manually. For instructions on how to correctly
33 // update this code, refer to:
34 // https://icu.unicode.org/design/formatting/measureformat/updating-measure-unit
35 //
36 // Start generated code for measunit.cpp
37
38 // Maps from Type ID to offset in gSubTypes.
39 static const int32_t gOffsets[] = {
40 0,
41 2,
42 7,
43 17,
44 27,
45 31,
46 332,
47 343,
48 360,
49 364,
50 373,
51 376,
52 380,
53 388,
54 410,
55 414,
56 429,
57 430,
58 436,
59 446,
60 450,
61 454,
62 456,
63 490,
64 /* IASH19 Add 10 measure units 20241104 begin */
65 500
66 /* IASH19 Add 10 measure units 20241104 end */
67 };
68
69 static const int32_t kCurrencyOffset = 5;
70
71 // Must be sorted alphabetically.
72 static const char * const gTypes[] = {
73 "acceleration",
74 "angle",
75 "area",
76 "concentr",
77 "consumption",
78 "currency",
79 "digital",
80 "duration",
81 "electric",
82 "energy",
83 "force",
84 "frequency",
85 "graphics",
86 "length",
87 "light",
88 "mass",
89 "none",
90 "power",
91 "pressure",
92 "speed",
93 "temperature",
94 "torque",
95 "volume",
96 /* IASH19 Add 10 measure units 20241104 begin */
97 "zohos"
98 /* IASH19 Add 10 measure units 20241104 end */
99 };
100
101 // Must be grouped by type and sorted alphabetically within each type.
102 static const char * const gSubTypes[] = {
103 "g-force",
104 "meter-per-square-second",
105 "arc-minute",
106 "arc-second",
107 "degree",
108 "radian",
109 "revolution",
110 "acre",
111 "dunam",
112 "hectare",
113 "square-centimeter",
114 "square-foot",
115 "square-inch",
116 "square-kilometer",
117 "square-meter",
118 "square-mile",
119 "square-yard",
120 "item",
121 "karat",
122 "milligram-ofglucose-per-deciliter",
123 "milligram-per-deciliter",
124 "millimole-per-liter",
125 "mole",
126 "percent",
127 "permille",
128 "permillion",
129 "permyriad",
130 "liter-per-100-kilometer",
131 "liter-per-kilometer",
132 "mile-per-gallon",
133 "mile-per-gallon-imperial",
134 "ADP",
135 "AED",
136 "AFA",
137 "AFN",
138 "ALK",
139 "ALL",
140 "AMD",
141 "ANG",
142 "AOA",
143 "AOK",
144 "AON",
145 "AOR",
146 "ARA",
147 "ARP",
148 "ARS",
149 "ARY",
150 "ATS",
151 "AUD",
152 "AWG",
153 "AYM",
154 "AZM",
155 "AZN",
156 "BAD",
157 "BAM",
158 "BBD",
159 "BDT",
160 "BEC",
161 "BEF",
162 "BEL",
163 "BGJ",
164 "BGK",
165 "BGL",
166 "BGN",
167 "BHD",
168 "BIF",
169 "BMD",
170 "BND",
171 "BOB",
172 "BOP",
173 "BOV",
174 "BRB",
175 "BRC",
176 "BRE",
177 "BRL",
178 "BRN",
179 "BRR",
180 "BSD",
181 "BTN",
182 "BUK",
183 "BWP",
184 "BYB",
185 "BYN",
186 "BYR",
187 "BZD",
188 "CAD",
189 "CDF",
190 "CHC",
191 "CHE",
192 "CHF",
193 "CHW",
194 "CLF",
195 "CLP",
196 "CNY",
197 "COP",
198 "COU",
199 "CRC",
200 "CSD",
201 "CSJ",
202 "CSK",
203 "CUC",
204 "CUP",
205 "CVE",
206 "CYP",
207 "CZK",
208 "DDM",
209 "DEM",
210 "DJF",
211 "DKK",
212 "DOP",
213 "DZD",
214 "ECS",
215 "ECV",
216 "EEK",
217 "EGP",
218 "ERN",
219 "ESA",
220 "ESB",
221 "ESP",
222 "ETB",
223 "EUR",
224 "FIM",
225 "FJD",
226 "FKP",
227 "FRF",
228 "GBP",
229 "GEK",
230 "GEL",
231 "GHC",
232 "GHP",
233 "GHS",
234 "GIP",
235 "GMD",
236 "GNE",
237 "GNF",
238 "GNS",
239 "GQE",
240 "GRD",
241 "GTQ",
242 "GWE",
243 "GWP",
244 "GYD",
245 "HKD",
246 "HNL",
247 "HRD",
248 "HRK",
249 "HTG",
250 "HUF",
251 "IDR",
252 "IEP",
253 "ILP",
254 "ILR",
255 "ILS",
256 "INR",
257 "IQD",
258 "IRR",
259 "ISJ",
260 "ISK",
261 "ITL",
262 "JMD",
263 "JOD",
264 "JPY",
265 "KES",
266 "KGS",
267 "KHR",
268 "KMF",
269 "KPW",
270 "KRW",
271 "KWD",
272 "KYD",
273 "KZT",
274 "LAJ",
275 "LAK",
276 "LBP",
277 "LKR",
278 "LRD",
279 "LSL",
280 "LSM",
281 "LTL",
282 "LTT",
283 "LUC",
284 "LUF",
285 "LUL",
286 "LVL",
287 "LVR",
288 "LYD",
289 "MAD",
290 "MDL",
291 "MGA",
292 "MGF",
293 "MKD",
294 "MLF",
295 "MMK",
296 "MNT",
297 "MOP",
298 "MRO",
299 "MRU",
300 "MTL",
301 "MTP",
302 "MUR",
303 "MVQ",
304 "MVR",
305 "MWK",
306 "MXN",
307 "MXP",
308 "MXV",
309 "MYR",
310 "MZE",
311 "MZM",
312 "MZN",
313 "NAD",
314 "NGN",
315 "NIC",
316 "NIO",
317 "NLG",
318 "NOK",
319 "NPR",
320 "NZD",
321 "OMR",
322 "PAB",
323 "PEH",
324 "PEI",
325 "PEN",
326 "PES",
327 "PGK",
328 "PHP",
329 "PKR",
330 "PLN",
331 "PLZ",
332 "PTE",
333 "PYG",
334 "QAR",
335 "RHD",
336 "ROK",
337 "ROL",
338 "RON",
339 "RSD",
340 "RUB",
341 "RUR",
342 "RWF",
343 "SAR",
344 "SBD",
345 "SCR",
346 "SDD",
347 "SDG",
348 "SDP",
349 "SEK",
350 "SGD",
351 "SHP",
352 "SIT",
353 "SKK",
354 "SLE",
355 "SLL",
356 "SOS",
357 "SRD",
358 "SRG",
359 "SSP",
360 "STD",
361 "STN",
362 "SUR",
363 "SVC",
364 "SYP",
365 "SZL",
366 "THB",
367 "TJR",
368 "TJS",
369 "TMM",
370 "TMT",
371 "TND",
372 "TOP",
373 "TPE",
374 "TRL",
375 "TRY",
376 "TTD",
377 "TWD",
378 "TZS",
379 "UAH",
380 "UAK",
381 "UGS",
382 "UGW",
383 "UGX",
384 "USD",
385 "USN",
386 "USS",
387 "UYI",
388 "UYN",
389 "UYP",
390 "UYU",
391 "UYW",
392 "UZS",
393 "VEB",
394 "VED",
395 "VEF",
396 "VES",
397 "VNC",
398 "VND",
399 "VUV",
400 "WST",
401 "XAF",
402 "XAG",
403 "XAU",
404 "XBA",
405 "XBB",
406 "XBC",
407 "XBD",
408 "XCD",
409 "XDR",
410 "XEU",
411 "XOF",
412 "XPD",
413 "XPF",
414 "XPT",
415 "XSU",
416 "XTS",
417 "XUA",
418 "XXX",
419 "YDD",
420 "YER",
421 "YUD",
422 "YUM",
423 "YUN",
424 "ZAL",
425 "ZAR",
426 "ZMK",
427 "ZMW",
428 "ZRN",
429 "ZRZ",
430 "ZWC",
431 "ZWD",
432 "ZWL",
433 "ZWN",
434 "ZWR",
435 "bit",
436 "byte",
437 "gigabit",
438 "gigabyte",
439 "kilobit",
440 "kilobyte",
441 "megabit",
442 "megabyte",
443 "petabyte",
444 "terabit",
445 "terabyte",
446 "century",
447 "day",
448 "day-person",
449 "decade",
450 "hour",
451 "microsecond",
452 "millisecond",
453 "minute",
454 "month",
455 "month-person",
456 "nanosecond",
457 "quarter",
458 "second",
459 "week",
460 "week-person",
461 "year",
462 "year-person",
463 "ampere",
464 "milliampere",
465 "ohm",
466 "volt",
467 "british-thermal-unit",
468 "calorie",
469 "electronvolt",
470 "foodcalorie",
471 "joule",
472 "kilocalorie",
473 "kilojoule",
474 "kilowatt-hour",
475 "therm-us",
476 "kilowatt-hour-per-100-kilometer",
477 "newton",
478 "pound-force",
479 "gigahertz",
480 "hertz",
481 "kilohertz",
482 "megahertz",
483 "dot",
484 "dot-per-centimeter",
485 "dot-per-inch",
486 "em",
487 "megapixel",
488 "pixel",
489 "pixel-per-centimeter",
490 "pixel-per-inch",
491 "astronomical-unit",
492 "centimeter",
493 "decimeter",
494 "earth-radius",
495 "fathom",
496 "foot",
497 "furlong",
498 "inch",
499 "kilometer",
500 "light-year",
501 "meter",
502 "micrometer",
503 "mile",
504 "mile-scandinavian",
505 "millimeter",
506 "nanometer",
507 "nautical-mile",
508 "parsec",
509 "picometer",
510 "point",
511 "solar-radius",
512 "yard",
513 "candela",
514 "lumen",
515 "lux",
516 "solar-luminosity",
517 "carat",
518 "dalton",
519 "earth-mass",
520 "grain",
521 "gram",
522 "kilogram",
523 "microgram",
524 "milligram",
525 "ounce",
526 "ounce-troy",
527 "pound",
528 "solar-mass",
529 "stone",
530 "ton",
531 "tonne",
532 "",
533 "gigawatt",
534 "horsepower",
535 "kilowatt",
536 "megawatt",
537 "milliwatt",
538 "watt",
539 "atmosphere",
540 "bar",
541 "hectopascal",
542 "inch-ofhg",
543 "kilopascal",
544 "megapascal",
545 "millibar",
546 "millimeter-ofhg",
547 "pascal",
548 "pound-force-per-square-inch",
549 "kilometer-per-hour",
550 "knot",
551 "meter-per-second",
552 "mile-per-hour",
553 "celsius",
554 "fahrenheit",
555 "generic",
556 "kelvin",
557 "newton-meter",
558 "pound-force-foot",
559 "acre-foot",
560 "barrel",
561 "bushel",
562 "centiliter",
563 "cubic-centimeter",
564 "cubic-foot",
565 "cubic-inch",
566 "cubic-kilometer",
567 "cubic-meter",
568 "cubic-mile",
569 "cubic-yard",
570 "cup",
571 "cup-metric",
572 "deciliter",
573 "dessert-spoon",
574 "dessert-spoon-imperial",
575 "dram",
576 "drop",
577 "fluid-ounce",
578 "fluid-ounce-imperial",
579 "gallon",
580 "gallon-imperial",
581 "hectoliter",
582 "jigger",
583 "liter",
584 "megaliter",
585 "milliliter",
586 "pinch",
587 "pint",
588 "pint-metric",
589 "quart",
590 "quart-imperial",
591 "tablespoon",
592 "teaspoon",
593 /* IASH19 Add 10 measure units 20241104 begin */
594 "beat-per-minute",
595 "body-weight-per-second",
596 "breath-per-minute",
597 "foot-per-hour",
598 "jump-rope-per-minute",
599 "meter-per-hour",
600 "milliliter-per-minute-per-kilogram",
601 "rotation-per-minute",
602 "step-per-minute",
603 "stroke-per-minute"
604 /* IASH19 Add 10 measure units 20241104 end */
605 };
606
607 // Shortcuts to the base unit in order to make the default constructor fast
608 static const int32_t kBaseTypeIdx = 16;
609 static const int32_t kBaseSubTypeIdx = 0;
610
createGForce(UErrorCode & status)611 MeasureUnit *MeasureUnit::createGForce(UErrorCode &status) {
612 return MeasureUnit::create(0, 0, status);
613 }
614
getGForce()615 MeasureUnit MeasureUnit::getGForce() {
616 return MeasureUnit(0, 0);
617 }
618
createMeterPerSecondSquared(UErrorCode & status)619 MeasureUnit *MeasureUnit::createMeterPerSecondSquared(UErrorCode &status) {
620 return MeasureUnit::create(0, 1, status);
621 }
622
getMeterPerSecondSquared()623 MeasureUnit MeasureUnit::getMeterPerSecondSquared() {
624 return MeasureUnit(0, 1);
625 }
626
createArcMinute(UErrorCode & status)627 MeasureUnit *MeasureUnit::createArcMinute(UErrorCode &status) {
628 return MeasureUnit::create(1, 0, status);
629 }
630
getArcMinute()631 MeasureUnit MeasureUnit::getArcMinute() {
632 return MeasureUnit(1, 0);
633 }
634
createArcSecond(UErrorCode & status)635 MeasureUnit *MeasureUnit::createArcSecond(UErrorCode &status) {
636 return MeasureUnit::create(1, 1, status);
637 }
638
getArcSecond()639 MeasureUnit MeasureUnit::getArcSecond() {
640 return MeasureUnit(1, 1);
641 }
642
createDegree(UErrorCode & status)643 MeasureUnit *MeasureUnit::createDegree(UErrorCode &status) {
644 return MeasureUnit::create(1, 2, status);
645 }
646
getDegree()647 MeasureUnit MeasureUnit::getDegree() {
648 return MeasureUnit(1, 2);
649 }
650
createRadian(UErrorCode & status)651 MeasureUnit *MeasureUnit::createRadian(UErrorCode &status) {
652 return MeasureUnit::create(1, 3, status);
653 }
654
getRadian()655 MeasureUnit MeasureUnit::getRadian() {
656 return MeasureUnit(1, 3);
657 }
658
createRevolutionAngle(UErrorCode & status)659 MeasureUnit *MeasureUnit::createRevolutionAngle(UErrorCode &status) {
660 return MeasureUnit::create(1, 4, status);
661 }
662
getRevolutionAngle()663 MeasureUnit MeasureUnit::getRevolutionAngle() {
664 return MeasureUnit(1, 4);
665 }
666
createAcre(UErrorCode & status)667 MeasureUnit *MeasureUnit::createAcre(UErrorCode &status) {
668 return MeasureUnit::create(2, 0, status);
669 }
670
getAcre()671 MeasureUnit MeasureUnit::getAcre() {
672 return MeasureUnit(2, 0);
673 }
674
createDunam(UErrorCode & status)675 MeasureUnit *MeasureUnit::createDunam(UErrorCode &status) {
676 return MeasureUnit::create(2, 1, status);
677 }
678
getDunam()679 MeasureUnit MeasureUnit::getDunam() {
680 return MeasureUnit(2, 1);
681 }
682
createHectare(UErrorCode & status)683 MeasureUnit *MeasureUnit::createHectare(UErrorCode &status) {
684 return MeasureUnit::create(2, 2, status);
685 }
686
getHectare()687 MeasureUnit MeasureUnit::getHectare() {
688 return MeasureUnit(2, 2);
689 }
690
createSquareCentimeter(UErrorCode & status)691 MeasureUnit *MeasureUnit::createSquareCentimeter(UErrorCode &status) {
692 return MeasureUnit::create(2, 3, status);
693 }
694
getSquareCentimeter()695 MeasureUnit MeasureUnit::getSquareCentimeter() {
696 return MeasureUnit(2, 3);
697 }
698
createSquareFoot(UErrorCode & status)699 MeasureUnit *MeasureUnit::createSquareFoot(UErrorCode &status) {
700 return MeasureUnit::create(2, 4, status);
701 }
702
getSquareFoot()703 MeasureUnit MeasureUnit::getSquareFoot() {
704 return MeasureUnit(2, 4);
705 }
706
createSquareInch(UErrorCode & status)707 MeasureUnit *MeasureUnit::createSquareInch(UErrorCode &status) {
708 return MeasureUnit::create(2, 5, status);
709 }
710
getSquareInch()711 MeasureUnit MeasureUnit::getSquareInch() {
712 return MeasureUnit(2, 5);
713 }
714
createSquareKilometer(UErrorCode & status)715 MeasureUnit *MeasureUnit::createSquareKilometer(UErrorCode &status) {
716 return MeasureUnit::create(2, 6, status);
717 }
718
getSquareKilometer()719 MeasureUnit MeasureUnit::getSquareKilometer() {
720 return MeasureUnit(2, 6);
721 }
722
createSquareMeter(UErrorCode & status)723 MeasureUnit *MeasureUnit::createSquareMeter(UErrorCode &status) {
724 return MeasureUnit::create(2, 7, status);
725 }
726
getSquareMeter()727 MeasureUnit MeasureUnit::getSquareMeter() {
728 return MeasureUnit(2, 7);
729 }
730
createSquareMile(UErrorCode & status)731 MeasureUnit *MeasureUnit::createSquareMile(UErrorCode &status) {
732 return MeasureUnit::create(2, 8, status);
733 }
734
getSquareMile()735 MeasureUnit MeasureUnit::getSquareMile() {
736 return MeasureUnit(2, 8);
737 }
738
createSquareYard(UErrorCode & status)739 MeasureUnit *MeasureUnit::createSquareYard(UErrorCode &status) {
740 return MeasureUnit::create(2, 9, status);
741 }
742
getSquareYard()743 MeasureUnit MeasureUnit::getSquareYard() {
744 return MeasureUnit(2, 9);
745 }
746
createItem(UErrorCode & status)747 MeasureUnit *MeasureUnit::createItem(UErrorCode &status) {
748 return MeasureUnit::create(3, 0, status);
749 }
750
getItem()751 MeasureUnit MeasureUnit::getItem() {
752 return MeasureUnit(3, 0);
753 }
754
createKarat(UErrorCode & status)755 MeasureUnit *MeasureUnit::createKarat(UErrorCode &status) {
756 return MeasureUnit::create(3, 1, status);
757 }
758
getKarat()759 MeasureUnit MeasureUnit::getKarat() {
760 return MeasureUnit(3, 1);
761 }
762
createMilligramOfglucosePerDeciliter(UErrorCode & status)763 MeasureUnit *MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode &status) {
764 return MeasureUnit::create(3, 2, status);
765 }
766
getMilligramOfglucosePerDeciliter()767 MeasureUnit MeasureUnit::getMilligramOfglucosePerDeciliter() {
768 return MeasureUnit(3, 2);
769 }
770
createMilligramPerDeciliter(UErrorCode & status)771 MeasureUnit *MeasureUnit::createMilligramPerDeciliter(UErrorCode &status) {
772 return MeasureUnit::create(3, 3, status);
773 }
774
getMilligramPerDeciliter()775 MeasureUnit MeasureUnit::getMilligramPerDeciliter() {
776 return MeasureUnit(3, 3);
777 }
778
createMillimolePerLiter(UErrorCode & status)779 MeasureUnit *MeasureUnit::createMillimolePerLiter(UErrorCode &status) {
780 return MeasureUnit::create(3, 4, status);
781 }
782
getMillimolePerLiter()783 MeasureUnit MeasureUnit::getMillimolePerLiter() {
784 return MeasureUnit(3, 4);
785 }
786
createMole(UErrorCode & status)787 MeasureUnit *MeasureUnit::createMole(UErrorCode &status) {
788 return MeasureUnit::create(3, 5, status);
789 }
790
getMole()791 MeasureUnit MeasureUnit::getMole() {
792 return MeasureUnit(3, 5);
793 }
794
createPercent(UErrorCode & status)795 MeasureUnit *MeasureUnit::createPercent(UErrorCode &status) {
796 return MeasureUnit::create(3, 6, status);
797 }
798
getPercent()799 MeasureUnit MeasureUnit::getPercent() {
800 return MeasureUnit(3, 6);
801 }
802
createPermille(UErrorCode & status)803 MeasureUnit *MeasureUnit::createPermille(UErrorCode &status) {
804 return MeasureUnit::create(3, 7, status);
805 }
806
getPermille()807 MeasureUnit MeasureUnit::getPermille() {
808 return MeasureUnit(3, 7);
809 }
810
createPartPerMillion(UErrorCode & status)811 MeasureUnit *MeasureUnit::createPartPerMillion(UErrorCode &status) {
812 return MeasureUnit::create(3, 8, status);
813 }
814
getPartPerMillion()815 MeasureUnit MeasureUnit::getPartPerMillion() {
816 return MeasureUnit(3, 8);
817 }
818
createPermyriad(UErrorCode & status)819 MeasureUnit *MeasureUnit::createPermyriad(UErrorCode &status) {
820 return MeasureUnit::create(3, 9, status);
821 }
822
getPermyriad()823 MeasureUnit MeasureUnit::getPermyriad() {
824 return MeasureUnit(3, 9);
825 }
826
createLiterPer100Kilometers(UErrorCode & status)827 MeasureUnit *MeasureUnit::createLiterPer100Kilometers(UErrorCode &status) {
828 return MeasureUnit::create(4, 0, status);
829 }
830
getLiterPer100Kilometers()831 MeasureUnit MeasureUnit::getLiterPer100Kilometers() {
832 return MeasureUnit(4, 0);
833 }
834
createLiterPerKilometer(UErrorCode & status)835 MeasureUnit *MeasureUnit::createLiterPerKilometer(UErrorCode &status) {
836 return MeasureUnit::create(4, 1, status);
837 }
838
getLiterPerKilometer()839 MeasureUnit MeasureUnit::getLiterPerKilometer() {
840 return MeasureUnit(4, 1);
841 }
842
createMilePerGallon(UErrorCode & status)843 MeasureUnit *MeasureUnit::createMilePerGallon(UErrorCode &status) {
844 return MeasureUnit::create(4, 2, status);
845 }
846
getMilePerGallon()847 MeasureUnit MeasureUnit::getMilePerGallon() {
848 return MeasureUnit(4, 2);
849 }
850
createMilePerGallonImperial(UErrorCode & status)851 MeasureUnit *MeasureUnit::createMilePerGallonImperial(UErrorCode &status) {
852 return MeasureUnit::create(4, 3, status);
853 }
854
getMilePerGallonImperial()855 MeasureUnit MeasureUnit::getMilePerGallonImperial() {
856 return MeasureUnit(4, 3);
857 }
858
createBit(UErrorCode & status)859 MeasureUnit *MeasureUnit::createBit(UErrorCode &status) {
860 return MeasureUnit::create(6, 0, status);
861 }
862
getBit()863 MeasureUnit MeasureUnit::getBit() {
864 return MeasureUnit(6, 0);
865 }
866
createByte(UErrorCode & status)867 MeasureUnit *MeasureUnit::createByte(UErrorCode &status) {
868 return MeasureUnit::create(6, 1, status);
869 }
870
getByte()871 MeasureUnit MeasureUnit::getByte() {
872 return MeasureUnit(6, 1);
873 }
874
createGigabit(UErrorCode & status)875 MeasureUnit *MeasureUnit::createGigabit(UErrorCode &status) {
876 return MeasureUnit::create(6, 2, status);
877 }
878
getGigabit()879 MeasureUnit MeasureUnit::getGigabit() {
880 return MeasureUnit(6, 2);
881 }
882
createGigabyte(UErrorCode & status)883 MeasureUnit *MeasureUnit::createGigabyte(UErrorCode &status) {
884 return MeasureUnit::create(6, 3, status);
885 }
886
getGigabyte()887 MeasureUnit MeasureUnit::getGigabyte() {
888 return MeasureUnit(6, 3);
889 }
890
createKilobit(UErrorCode & status)891 MeasureUnit *MeasureUnit::createKilobit(UErrorCode &status) {
892 return MeasureUnit::create(6, 4, status);
893 }
894
getKilobit()895 MeasureUnit MeasureUnit::getKilobit() {
896 return MeasureUnit(6, 4);
897 }
898
createKilobyte(UErrorCode & status)899 MeasureUnit *MeasureUnit::createKilobyte(UErrorCode &status) {
900 return MeasureUnit::create(6, 5, status);
901 }
902
getKilobyte()903 MeasureUnit MeasureUnit::getKilobyte() {
904 return MeasureUnit(6, 5);
905 }
906
createMegabit(UErrorCode & status)907 MeasureUnit *MeasureUnit::createMegabit(UErrorCode &status) {
908 return MeasureUnit::create(6, 6, status);
909 }
910
getMegabit()911 MeasureUnit MeasureUnit::getMegabit() {
912 return MeasureUnit(6, 6);
913 }
914
createMegabyte(UErrorCode & status)915 MeasureUnit *MeasureUnit::createMegabyte(UErrorCode &status) {
916 return MeasureUnit::create(6, 7, status);
917 }
918
getMegabyte()919 MeasureUnit MeasureUnit::getMegabyte() {
920 return MeasureUnit(6, 7);
921 }
922
createPetabyte(UErrorCode & status)923 MeasureUnit *MeasureUnit::createPetabyte(UErrorCode &status) {
924 return MeasureUnit::create(6, 8, status);
925 }
926
getPetabyte()927 MeasureUnit MeasureUnit::getPetabyte() {
928 return MeasureUnit(6, 8);
929 }
930
createTerabit(UErrorCode & status)931 MeasureUnit *MeasureUnit::createTerabit(UErrorCode &status) {
932 return MeasureUnit::create(6, 9, status);
933 }
934
getTerabit()935 MeasureUnit MeasureUnit::getTerabit() {
936 return MeasureUnit(6, 9);
937 }
938
createTerabyte(UErrorCode & status)939 MeasureUnit *MeasureUnit::createTerabyte(UErrorCode &status) {
940 return MeasureUnit::create(6, 10, status);
941 }
942
getTerabyte()943 MeasureUnit MeasureUnit::getTerabyte() {
944 return MeasureUnit(6, 10);
945 }
946
createCentury(UErrorCode & status)947 MeasureUnit *MeasureUnit::createCentury(UErrorCode &status) {
948 return MeasureUnit::create(7, 0, status);
949 }
950
getCentury()951 MeasureUnit MeasureUnit::getCentury() {
952 return MeasureUnit(7, 0);
953 }
954
createDay(UErrorCode & status)955 MeasureUnit *MeasureUnit::createDay(UErrorCode &status) {
956 return MeasureUnit::create(7, 1, status);
957 }
958
getDay()959 MeasureUnit MeasureUnit::getDay() {
960 return MeasureUnit(7, 1);
961 }
962
createDayPerson(UErrorCode & status)963 MeasureUnit *MeasureUnit::createDayPerson(UErrorCode &status) {
964 return MeasureUnit::create(7, 2, status);
965 }
966
getDayPerson()967 MeasureUnit MeasureUnit::getDayPerson() {
968 return MeasureUnit(7, 2);
969 }
970
createDecade(UErrorCode & status)971 MeasureUnit *MeasureUnit::createDecade(UErrorCode &status) {
972 return MeasureUnit::create(7, 3, status);
973 }
974
getDecade()975 MeasureUnit MeasureUnit::getDecade() {
976 return MeasureUnit(7, 3);
977 }
978
createHour(UErrorCode & status)979 MeasureUnit *MeasureUnit::createHour(UErrorCode &status) {
980 return MeasureUnit::create(7, 4, status);
981 }
982
getHour()983 MeasureUnit MeasureUnit::getHour() {
984 return MeasureUnit(7, 4);
985 }
986
createMicrosecond(UErrorCode & status)987 MeasureUnit *MeasureUnit::createMicrosecond(UErrorCode &status) {
988 return MeasureUnit::create(7, 5, status);
989 }
990
getMicrosecond()991 MeasureUnit MeasureUnit::getMicrosecond() {
992 return MeasureUnit(7, 5);
993 }
994
createMillisecond(UErrorCode & status)995 MeasureUnit *MeasureUnit::createMillisecond(UErrorCode &status) {
996 return MeasureUnit::create(7, 6, status);
997 }
998
getMillisecond()999 MeasureUnit MeasureUnit::getMillisecond() {
1000 return MeasureUnit(7, 6);
1001 }
1002
createMinute(UErrorCode & status)1003 MeasureUnit *MeasureUnit::createMinute(UErrorCode &status) {
1004 return MeasureUnit::create(7, 7, status);
1005 }
1006
getMinute()1007 MeasureUnit MeasureUnit::getMinute() {
1008 return MeasureUnit(7, 7);
1009 }
1010
createMonth(UErrorCode & status)1011 MeasureUnit *MeasureUnit::createMonth(UErrorCode &status) {
1012 return MeasureUnit::create(7, 8, status);
1013 }
1014
getMonth()1015 MeasureUnit MeasureUnit::getMonth() {
1016 return MeasureUnit(7, 8);
1017 }
1018
createMonthPerson(UErrorCode & status)1019 MeasureUnit *MeasureUnit::createMonthPerson(UErrorCode &status) {
1020 return MeasureUnit::create(7, 9, status);
1021 }
1022
getMonthPerson()1023 MeasureUnit MeasureUnit::getMonthPerson() {
1024 return MeasureUnit(7, 9);
1025 }
1026
createNanosecond(UErrorCode & status)1027 MeasureUnit *MeasureUnit::createNanosecond(UErrorCode &status) {
1028 return MeasureUnit::create(7, 10, status);
1029 }
1030
getNanosecond()1031 MeasureUnit MeasureUnit::getNanosecond() {
1032 return MeasureUnit(7, 10);
1033 }
1034
createQuarter(UErrorCode & status)1035 MeasureUnit *MeasureUnit::createQuarter(UErrorCode &status) {
1036 return MeasureUnit::create(7, 11, status);
1037 }
1038
getQuarter()1039 MeasureUnit MeasureUnit::getQuarter() {
1040 return MeasureUnit(7, 11);
1041 }
1042
createSecond(UErrorCode & status)1043 MeasureUnit *MeasureUnit::createSecond(UErrorCode &status) {
1044 return MeasureUnit::create(7, 12, status);
1045 }
1046
getSecond()1047 MeasureUnit MeasureUnit::getSecond() {
1048 return MeasureUnit(7, 12);
1049 }
1050
createWeek(UErrorCode & status)1051 MeasureUnit *MeasureUnit::createWeek(UErrorCode &status) {
1052 return MeasureUnit::create(7, 13, status);
1053 }
1054
getWeek()1055 MeasureUnit MeasureUnit::getWeek() {
1056 return MeasureUnit(7, 13);
1057 }
1058
createWeekPerson(UErrorCode & status)1059 MeasureUnit *MeasureUnit::createWeekPerson(UErrorCode &status) {
1060 return MeasureUnit::create(7, 14, status);
1061 }
1062
getWeekPerson()1063 MeasureUnit MeasureUnit::getWeekPerson() {
1064 return MeasureUnit(7, 14);
1065 }
1066
createYear(UErrorCode & status)1067 MeasureUnit *MeasureUnit::createYear(UErrorCode &status) {
1068 return MeasureUnit::create(7, 15, status);
1069 }
1070
getYear()1071 MeasureUnit MeasureUnit::getYear() {
1072 return MeasureUnit(7, 15);
1073 }
1074
createYearPerson(UErrorCode & status)1075 MeasureUnit *MeasureUnit::createYearPerson(UErrorCode &status) {
1076 return MeasureUnit::create(7, 16, status);
1077 }
1078
getYearPerson()1079 MeasureUnit MeasureUnit::getYearPerson() {
1080 return MeasureUnit(7, 16);
1081 }
1082
createAmpere(UErrorCode & status)1083 MeasureUnit *MeasureUnit::createAmpere(UErrorCode &status) {
1084 return MeasureUnit::create(8, 0, status);
1085 }
1086
getAmpere()1087 MeasureUnit MeasureUnit::getAmpere() {
1088 return MeasureUnit(8, 0);
1089 }
1090
createMilliampere(UErrorCode & status)1091 MeasureUnit *MeasureUnit::createMilliampere(UErrorCode &status) {
1092 return MeasureUnit::create(8, 1, status);
1093 }
1094
getMilliampere()1095 MeasureUnit MeasureUnit::getMilliampere() {
1096 return MeasureUnit(8, 1);
1097 }
1098
createOhm(UErrorCode & status)1099 MeasureUnit *MeasureUnit::createOhm(UErrorCode &status) {
1100 return MeasureUnit::create(8, 2, status);
1101 }
1102
getOhm()1103 MeasureUnit MeasureUnit::getOhm() {
1104 return MeasureUnit(8, 2);
1105 }
1106
createVolt(UErrorCode & status)1107 MeasureUnit *MeasureUnit::createVolt(UErrorCode &status) {
1108 return MeasureUnit::create(8, 3, status);
1109 }
1110
getVolt()1111 MeasureUnit MeasureUnit::getVolt() {
1112 return MeasureUnit(8, 3);
1113 }
1114
createBritishThermalUnit(UErrorCode & status)1115 MeasureUnit *MeasureUnit::createBritishThermalUnit(UErrorCode &status) {
1116 return MeasureUnit::create(9, 0, status);
1117 }
1118
getBritishThermalUnit()1119 MeasureUnit MeasureUnit::getBritishThermalUnit() {
1120 return MeasureUnit(9, 0);
1121 }
1122
createCalorie(UErrorCode & status)1123 MeasureUnit *MeasureUnit::createCalorie(UErrorCode &status) {
1124 return MeasureUnit::create(9, 1, status);
1125 }
1126
getCalorie()1127 MeasureUnit MeasureUnit::getCalorie() {
1128 return MeasureUnit(9, 1);
1129 }
1130
createElectronvolt(UErrorCode & status)1131 MeasureUnit *MeasureUnit::createElectronvolt(UErrorCode &status) {
1132 return MeasureUnit::create(9, 2, status);
1133 }
1134
getElectronvolt()1135 MeasureUnit MeasureUnit::getElectronvolt() {
1136 return MeasureUnit(9, 2);
1137 }
1138
createFoodcalorie(UErrorCode & status)1139 MeasureUnit *MeasureUnit::createFoodcalorie(UErrorCode &status) {
1140 return MeasureUnit::create(9, 3, status);
1141 }
1142
getFoodcalorie()1143 MeasureUnit MeasureUnit::getFoodcalorie() {
1144 return MeasureUnit(9, 3);
1145 }
1146
createJoule(UErrorCode & status)1147 MeasureUnit *MeasureUnit::createJoule(UErrorCode &status) {
1148 return MeasureUnit::create(9, 4, status);
1149 }
1150
getJoule()1151 MeasureUnit MeasureUnit::getJoule() {
1152 return MeasureUnit(9, 4);
1153 }
1154
createKilocalorie(UErrorCode & status)1155 MeasureUnit *MeasureUnit::createKilocalorie(UErrorCode &status) {
1156 return MeasureUnit::create(9, 5, status);
1157 }
1158
getKilocalorie()1159 MeasureUnit MeasureUnit::getKilocalorie() {
1160 return MeasureUnit(9, 5);
1161 }
1162
createKilojoule(UErrorCode & status)1163 MeasureUnit *MeasureUnit::createKilojoule(UErrorCode &status) {
1164 return MeasureUnit::create(9, 6, status);
1165 }
1166
getKilojoule()1167 MeasureUnit MeasureUnit::getKilojoule() {
1168 return MeasureUnit(9, 6);
1169 }
1170
createKilowattHour(UErrorCode & status)1171 MeasureUnit *MeasureUnit::createKilowattHour(UErrorCode &status) {
1172 return MeasureUnit::create(9, 7, status);
1173 }
1174
getKilowattHour()1175 MeasureUnit MeasureUnit::getKilowattHour() {
1176 return MeasureUnit(9, 7);
1177 }
1178
createThermUs(UErrorCode & status)1179 MeasureUnit *MeasureUnit::createThermUs(UErrorCode &status) {
1180 return MeasureUnit::create(9, 8, status);
1181 }
1182
getThermUs()1183 MeasureUnit MeasureUnit::getThermUs() {
1184 return MeasureUnit(9, 8);
1185 }
1186
createKilowattHourPer100Kilometer(UErrorCode & status)1187 MeasureUnit *MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode &status) {
1188 return MeasureUnit::create(10, 0, status);
1189 }
1190
getKilowattHourPer100Kilometer()1191 MeasureUnit MeasureUnit::getKilowattHourPer100Kilometer() {
1192 return MeasureUnit(10, 0);
1193 }
1194
createNewton(UErrorCode & status)1195 MeasureUnit *MeasureUnit::createNewton(UErrorCode &status) {
1196 return MeasureUnit::create(10, 1, status);
1197 }
1198
getNewton()1199 MeasureUnit MeasureUnit::getNewton() {
1200 return MeasureUnit(10, 1);
1201 }
1202
createPoundForce(UErrorCode & status)1203 MeasureUnit *MeasureUnit::createPoundForce(UErrorCode &status) {
1204 return MeasureUnit::create(10, 2, status);
1205 }
1206
getPoundForce()1207 MeasureUnit MeasureUnit::getPoundForce() {
1208 return MeasureUnit(10, 2);
1209 }
1210
createGigahertz(UErrorCode & status)1211 MeasureUnit *MeasureUnit::createGigahertz(UErrorCode &status) {
1212 return MeasureUnit::create(11, 0, status);
1213 }
1214
getGigahertz()1215 MeasureUnit MeasureUnit::getGigahertz() {
1216 return MeasureUnit(11, 0);
1217 }
1218
createHertz(UErrorCode & status)1219 MeasureUnit *MeasureUnit::createHertz(UErrorCode &status) {
1220 return MeasureUnit::create(11, 1, status);
1221 }
1222
getHertz()1223 MeasureUnit MeasureUnit::getHertz() {
1224 return MeasureUnit(11, 1);
1225 }
1226
createKilohertz(UErrorCode & status)1227 MeasureUnit *MeasureUnit::createKilohertz(UErrorCode &status) {
1228 return MeasureUnit::create(11, 2, status);
1229 }
1230
getKilohertz()1231 MeasureUnit MeasureUnit::getKilohertz() {
1232 return MeasureUnit(11, 2);
1233 }
1234
createMegahertz(UErrorCode & status)1235 MeasureUnit *MeasureUnit::createMegahertz(UErrorCode &status) {
1236 return MeasureUnit::create(11, 3, status);
1237 }
1238
getMegahertz()1239 MeasureUnit MeasureUnit::getMegahertz() {
1240 return MeasureUnit(11, 3);
1241 }
1242
createDot(UErrorCode & status)1243 MeasureUnit *MeasureUnit::createDot(UErrorCode &status) {
1244 return MeasureUnit::create(12, 0, status);
1245 }
1246
getDot()1247 MeasureUnit MeasureUnit::getDot() {
1248 return MeasureUnit(12, 0);
1249 }
1250
createDotPerCentimeter(UErrorCode & status)1251 MeasureUnit *MeasureUnit::createDotPerCentimeter(UErrorCode &status) {
1252 return MeasureUnit::create(12, 1, status);
1253 }
1254
getDotPerCentimeter()1255 MeasureUnit MeasureUnit::getDotPerCentimeter() {
1256 return MeasureUnit(12, 1);
1257 }
1258
createDotPerInch(UErrorCode & status)1259 MeasureUnit *MeasureUnit::createDotPerInch(UErrorCode &status) {
1260 return MeasureUnit::create(12, 2, status);
1261 }
1262
getDotPerInch()1263 MeasureUnit MeasureUnit::getDotPerInch() {
1264 return MeasureUnit(12, 2);
1265 }
1266
createEm(UErrorCode & status)1267 MeasureUnit *MeasureUnit::createEm(UErrorCode &status) {
1268 return MeasureUnit::create(12, 3, status);
1269 }
1270
getEm()1271 MeasureUnit MeasureUnit::getEm() {
1272 return MeasureUnit(12, 3);
1273 }
1274
createMegapixel(UErrorCode & status)1275 MeasureUnit *MeasureUnit::createMegapixel(UErrorCode &status) {
1276 return MeasureUnit::create(12, 4, status);
1277 }
1278
getMegapixel()1279 MeasureUnit MeasureUnit::getMegapixel() {
1280 return MeasureUnit(12, 4);
1281 }
1282
createPixel(UErrorCode & status)1283 MeasureUnit *MeasureUnit::createPixel(UErrorCode &status) {
1284 return MeasureUnit::create(12, 5, status);
1285 }
1286
getPixel()1287 MeasureUnit MeasureUnit::getPixel() {
1288 return MeasureUnit(12, 5);
1289 }
1290
createPixelPerCentimeter(UErrorCode & status)1291 MeasureUnit *MeasureUnit::createPixelPerCentimeter(UErrorCode &status) {
1292 return MeasureUnit::create(12, 6, status);
1293 }
1294
getPixelPerCentimeter()1295 MeasureUnit MeasureUnit::getPixelPerCentimeter() {
1296 return MeasureUnit(12, 6);
1297 }
1298
createPixelPerInch(UErrorCode & status)1299 MeasureUnit *MeasureUnit::createPixelPerInch(UErrorCode &status) {
1300 return MeasureUnit::create(12, 7, status);
1301 }
1302
getPixelPerInch()1303 MeasureUnit MeasureUnit::getPixelPerInch() {
1304 return MeasureUnit(12, 7);
1305 }
1306
createAstronomicalUnit(UErrorCode & status)1307 MeasureUnit *MeasureUnit::createAstronomicalUnit(UErrorCode &status) {
1308 return MeasureUnit::create(13, 0, status);
1309 }
1310
getAstronomicalUnit()1311 MeasureUnit MeasureUnit::getAstronomicalUnit() {
1312 return MeasureUnit(13, 0);
1313 }
1314
createCentimeter(UErrorCode & status)1315 MeasureUnit *MeasureUnit::createCentimeter(UErrorCode &status) {
1316 return MeasureUnit::create(13, 1, status);
1317 }
1318
getCentimeter()1319 MeasureUnit MeasureUnit::getCentimeter() {
1320 return MeasureUnit(13, 1);
1321 }
1322
createDecimeter(UErrorCode & status)1323 MeasureUnit *MeasureUnit::createDecimeter(UErrorCode &status) {
1324 return MeasureUnit::create(13, 2, status);
1325 }
1326
getDecimeter()1327 MeasureUnit MeasureUnit::getDecimeter() {
1328 return MeasureUnit(13, 2);
1329 }
1330
createEarthRadius(UErrorCode & status)1331 MeasureUnit *MeasureUnit::createEarthRadius(UErrorCode &status) {
1332 return MeasureUnit::create(13, 3, status);
1333 }
1334
getEarthRadius()1335 MeasureUnit MeasureUnit::getEarthRadius() {
1336 return MeasureUnit(13, 3);
1337 }
1338
createFathom(UErrorCode & status)1339 MeasureUnit *MeasureUnit::createFathom(UErrorCode &status) {
1340 return MeasureUnit::create(13, 4, status);
1341 }
1342
getFathom()1343 MeasureUnit MeasureUnit::getFathom() {
1344 return MeasureUnit(13, 4);
1345 }
1346
createFoot(UErrorCode & status)1347 MeasureUnit *MeasureUnit::createFoot(UErrorCode &status) {
1348 return MeasureUnit::create(13, 5, status);
1349 }
1350
getFoot()1351 MeasureUnit MeasureUnit::getFoot() {
1352 return MeasureUnit(13, 5);
1353 }
1354
createFurlong(UErrorCode & status)1355 MeasureUnit *MeasureUnit::createFurlong(UErrorCode &status) {
1356 return MeasureUnit::create(13, 6, status);
1357 }
1358
getFurlong()1359 MeasureUnit MeasureUnit::getFurlong() {
1360 return MeasureUnit(13, 6);
1361 }
1362
createInch(UErrorCode & status)1363 MeasureUnit *MeasureUnit::createInch(UErrorCode &status) {
1364 return MeasureUnit::create(13, 7, status);
1365 }
1366
getInch()1367 MeasureUnit MeasureUnit::getInch() {
1368 return MeasureUnit(13, 7);
1369 }
1370
createKilometer(UErrorCode & status)1371 MeasureUnit *MeasureUnit::createKilometer(UErrorCode &status) {
1372 return MeasureUnit::create(13, 8, status);
1373 }
1374
getKilometer()1375 MeasureUnit MeasureUnit::getKilometer() {
1376 return MeasureUnit(13, 8);
1377 }
1378
createLightYear(UErrorCode & status)1379 MeasureUnit *MeasureUnit::createLightYear(UErrorCode &status) {
1380 return MeasureUnit::create(13, 9, status);
1381 }
1382
getLightYear()1383 MeasureUnit MeasureUnit::getLightYear() {
1384 return MeasureUnit(13, 9);
1385 }
1386
createMeter(UErrorCode & status)1387 MeasureUnit *MeasureUnit::createMeter(UErrorCode &status) {
1388 return MeasureUnit::create(13, 10, status);
1389 }
1390
getMeter()1391 MeasureUnit MeasureUnit::getMeter() {
1392 return MeasureUnit(13, 10);
1393 }
1394
createMicrometer(UErrorCode & status)1395 MeasureUnit *MeasureUnit::createMicrometer(UErrorCode &status) {
1396 return MeasureUnit::create(13, 11, status);
1397 }
1398
getMicrometer()1399 MeasureUnit MeasureUnit::getMicrometer() {
1400 return MeasureUnit(13, 11);
1401 }
1402
createMile(UErrorCode & status)1403 MeasureUnit *MeasureUnit::createMile(UErrorCode &status) {
1404 return MeasureUnit::create(13, 12, status);
1405 }
1406
getMile()1407 MeasureUnit MeasureUnit::getMile() {
1408 return MeasureUnit(13, 12);
1409 }
1410
createMileScandinavian(UErrorCode & status)1411 MeasureUnit *MeasureUnit::createMileScandinavian(UErrorCode &status) {
1412 return MeasureUnit::create(13, 13, status);
1413 }
1414
getMileScandinavian()1415 MeasureUnit MeasureUnit::getMileScandinavian() {
1416 return MeasureUnit(13, 13);
1417 }
1418
createMillimeter(UErrorCode & status)1419 MeasureUnit *MeasureUnit::createMillimeter(UErrorCode &status) {
1420 return MeasureUnit::create(13, 14, status);
1421 }
1422
getMillimeter()1423 MeasureUnit MeasureUnit::getMillimeter() {
1424 return MeasureUnit(13, 14);
1425 }
1426
createNanometer(UErrorCode & status)1427 MeasureUnit *MeasureUnit::createNanometer(UErrorCode &status) {
1428 return MeasureUnit::create(13, 15, status);
1429 }
1430
getNanometer()1431 MeasureUnit MeasureUnit::getNanometer() {
1432 return MeasureUnit(13, 15);
1433 }
1434
createNauticalMile(UErrorCode & status)1435 MeasureUnit *MeasureUnit::createNauticalMile(UErrorCode &status) {
1436 return MeasureUnit::create(13, 16, status);
1437 }
1438
getNauticalMile()1439 MeasureUnit MeasureUnit::getNauticalMile() {
1440 return MeasureUnit(13, 16);
1441 }
1442
createParsec(UErrorCode & status)1443 MeasureUnit *MeasureUnit::createParsec(UErrorCode &status) {
1444 return MeasureUnit::create(13, 17, status);
1445 }
1446
getParsec()1447 MeasureUnit MeasureUnit::getParsec() {
1448 return MeasureUnit(13, 17);
1449 }
1450
createPicometer(UErrorCode & status)1451 MeasureUnit *MeasureUnit::createPicometer(UErrorCode &status) {
1452 return MeasureUnit::create(13, 18, status);
1453 }
1454
getPicometer()1455 MeasureUnit MeasureUnit::getPicometer() {
1456 return MeasureUnit(13, 18);
1457 }
1458
createPoint(UErrorCode & status)1459 MeasureUnit *MeasureUnit::createPoint(UErrorCode &status) {
1460 return MeasureUnit::create(13, 19, status);
1461 }
1462
getPoint()1463 MeasureUnit MeasureUnit::getPoint() {
1464 return MeasureUnit(13, 19);
1465 }
1466
createSolarRadius(UErrorCode & status)1467 MeasureUnit *MeasureUnit::createSolarRadius(UErrorCode &status) {
1468 return MeasureUnit::create(13, 20, status);
1469 }
1470
getSolarRadius()1471 MeasureUnit MeasureUnit::getSolarRadius() {
1472 return MeasureUnit(13, 20);
1473 }
1474
createYard(UErrorCode & status)1475 MeasureUnit *MeasureUnit::createYard(UErrorCode &status) {
1476 return MeasureUnit::create(13, 21, status);
1477 }
1478
getYard()1479 MeasureUnit MeasureUnit::getYard() {
1480 return MeasureUnit(13, 21);
1481 }
1482
createCandela(UErrorCode & status)1483 MeasureUnit *MeasureUnit::createCandela(UErrorCode &status) {
1484 return MeasureUnit::create(14, 0, status);
1485 }
1486
getCandela()1487 MeasureUnit MeasureUnit::getCandela() {
1488 return MeasureUnit(14, 0);
1489 }
1490
createLumen(UErrorCode & status)1491 MeasureUnit *MeasureUnit::createLumen(UErrorCode &status) {
1492 return MeasureUnit::create(14, 1, status);
1493 }
1494
getLumen()1495 MeasureUnit MeasureUnit::getLumen() {
1496 return MeasureUnit(14, 1);
1497 }
1498
createLux(UErrorCode & status)1499 MeasureUnit *MeasureUnit::createLux(UErrorCode &status) {
1500 return MeasureUnit::create(14, 2, status);
1501 }
1502
getLux()1503 MeasureUnit MeasureUnit::getLux() {
1504 return MeasureUnit(14, 2);
1505 }
1506
createSolarLuminosity(UErrorCode & status)1507 MeasureUnit *MeasureUnit::createSolarLuminosity(UErrorCode &status) {
1508 return MeasureUnit::create(14, 3, status);
1509 }
1510
getSolarLuminosity()1511 MeasureUnit MeasureUnit::getSolarLuminosity() {
1512 return MeasureUnit(14, 3);
1513 }
1514
createCarat(UErrorCode & status)1515 MeasureUnit *MeasureUnit::createCarat(UErrorCode &status) {
1516 return MeasureUnit::create(15, 0, status);
1517 }
1518
getCarat()1519 MeasureUnit MeasureUnit::getCarat() {
1520 return MeasureUnit(15, 0);
1521 }
1522
createDalton(UErrorCode & status)1523 MeasureUnit *MeasureUnit::createDalton(UErrorCode &status) {
1524 return MeasureUnit::create(15, 1, status);
1525 }
1526
getDalton()1527 MeasureUnit MeasureUnit::getDalton() {
1528 return MeasureUnit(15, 1);
1529 }
1530
createEarthMass(UErrorCode & status)1531 MeasureUnit *MeasureUnit::createEarthMass(UErrorCode &status) {
1532 return MeasureUnit::create(15, 2, status);
1533 }
1534
getEarthMass()1535 MeasureUnit MeasureUnit::getEarthMass() {
1536 return MeasureUnit(15, 2);
1537 }
1538
createGrain(UErrorCode & status)1539 MeasureUnit *MeasureUnit::createGrain(UErrorCode &status) {
1540 return MeasureUnit::create(15, 3, status);
1541 }
1542
getGrain()1543 MeasureUnit MeasureUnit::getGrain() {
1544 return MeasureUnit(15, 3);
1545 }
1546
createGram(UErrorCode & status)1547 MeasureUnit *MeasureUnit::createGram(UErrorCode &status) {
1548 return MeasureUnit::create(15, 4, status);
1549 }
1550
getGram()1551 MeasureUnit MeasureUnit::getGram() {
1552 return MeasureUnit(15, 4);
1553 }
1554
createKilogram(UErrorCode & status)1555 MeasureUnit *MeasureUnit::createKilogram(UErrorCode &status) {
1556 return MeasureUnit::create(15, 5, status);
1557 }
1558
getKilogram()1559 MeasureUnit MeasureUnit::getKilogram() {
1560 return MeasureUnit(15, 5);
1561 }
1562
createMetricTon(UErrorCode & status)1563 MeasureUnit *MeasureUnit::createMetricTon(UErrorCode &status) {
1564 return MeasureUnit::create(15, 14, status);
1565 }
1566
getMetricTon()1567 MeasureUnit MeasureUnit::getMetricTon() {
1568 return MeasureUnit(15, 14);
1569 }
1570
createMicrogram(UErrorCode & status)1571 MeasureUnit *MeasureUnit::createMicrogram(UErrorCode &status) {
1572 return MeasureUnit::create(15, 6, status);
1573 }
1574
getMicrogram()1575 MeasureUnit MeasureUnit::getMicrogram() {
1576 return MeasureUnit(15, 6);
1577 }
1578
createMilligram(UErrorCode & status)1579 MeasureUnit *MeasureUnit::createMilligram(UErrorCode &status) {
1580 return MeasureUnit::create(15, 7, status);
1581 }
1582
getMilligram()1583 MeasureUnit MeasureUnit::getMilligram() {
1584 return MeasureUnit(15, 7);
1585 }
1586
createOunce(UErrorCode & status)1587 MeasureUnit *MeasureUnit::createOunce(UErrorCode &status) {
1588 return MeasureUnit::create(15, 8, status);
1589 }
1590
getOunce()1591 MeasureUnit MeasureUnit::getOunce() {
1592 return MeasureUnit(15, 8);
1593 }
1594
createOunceTroy(UErrorCode & status)1595 MeasureUnit *MeasureUnit::createOunceTroy(UErrorCode &status) {
1596 return MeasureUnit::create(15, 9, status);
1597 }
1598
getOunceTroy()1599 MeasureUnit MeasureUnit::getOunceTroy() {
1600 return MeasureUnit(15, 9);
1601 }
1602
createPound(UErrorCode & status)1603 MeasureUnit *MeasureUnit::createPound(UErrorCode &status) {
1604 return MeasureUnit::create(15, 10, status);
1605 }
1606
getPound()1607 MeasureUnit MeasureUnit::getPound() {
1608 return MeasureUnit(15, 10);
1609 }
1610
createSolarMass(UErrorCode & status)1611 MeasureUnit *MeasureUnit::createSolarMass(UErrorCode &status) {
1612 return MeasureUnit::create(15, 11, status);
1613 }
1614
getSolarMass()1615 MeasureUnit MeasureUnit::getSolarMass() {
1616 return MeasureUnit(15, 11);
1617 }
1618
createStone(UErrorCode & status)1619 MeasureUnit *MeasureUnit::createStone(UErrorCode &status) {
1620 return MeasureUnit::create(15, 12, status);
1621 }
1622
getStone()1623 MeasureUnit MeasureUnit::getStone() {
1624 return MeasureUnit(15, 12);
1625 }
1626
createTon(UErrorCode & status)1627 MeasureUnit *MeasureUnit::createTon(UErrorCode &status) {
1628 return MeasureUnit::create(15, 13, status);
1629 }
1630
getTon()1631 MeasureUnit MeasureUnit::getTon() {
1632 return MeasureUnit(15, 13);
1633 }
1634
createTonne(UErrorCode & status)1635 MeasureUnit *MeasureUnit::createTonne(UErrorCode &status) {
1636 return MeasureUnit::create(15, 14, status);
1637 }
1638
getTonne()1639 MeasureUnit MeasureUnit::getTonne() {
1640 return MeasureUnit(15, 14);
1641 }
1642
createGigawatt(UErrorCode & status)1643 MeasureUnit *MeasureUnit::createGigawatt(UErrorCode &status) {
1644 return MeasureUnit::create(17, 0, status);
1645 }
1646
getGigawatt()1647 MeasureUnit MeasureUnit::getGigawatt() {
1648 return MeasureUnit(17, 0);
1649 }
1650
createHorsepower(UErrorCode & status)1651 MeasureUnit *MeasureUnit::createHorsepower(UErrorCode &status) {
1652 return MeasureUnit::create(17, 1, status);
1653 }
1654
getHorsepower()1655 MeasureUnit MeasureUnit::getHorsepower() {
1656 return MeasureUnit(17, 1);
1657 }
1658
createKilowatt(UErrorCode & status)1659 MeasureUnit *MeasureUnit::createKilowatt(UErrorCode &status) {
1660 return MeasureUnit::create(17, 2, status);
1661 }
1662
getKilowatt()1663 MeasureUnit MeasureUnit::getKilowatt() {
1664 return MeasureUnit(17, 2);
1665 }
1666
createMegawatt(UErrorCode & status)1667 MeasureUnit *MeasureUnit::createMegawatt(UErrorCode &status) {
1668 return MeasureUnit::create(17, 3, status);
1669 }
1670
getMegawatt()1671 MeasureUnit MeasureUnit::getMegawatt() {
1672 return MeasureUnit(17, 3);
1673 }
1674
createMilliwatt(UErrorCode & status)1675 MeasureUnit *MeasureUnit::createMilliwatt(UErrorCode &status) {
1676 return MeasureUnit::create(17, 4, status);
1677 }
1678
getMilliwatt()1679 MeasureUnit MeasureUnit::getMilliwatt() {
1680 return MeasureUnit(17, 4);
1681 }
1682
createWatt(UErrorCode & status)1683 MeasureUnit *MeasureUnit::createWatt(UErrorCode &status) {
1684 return MeasureUnit::create(17, 5, status);
1685 }
1686
getWatt()1687 MeasureUnit MeasureUnit::getWatt() {
1688 return MeasureUnit(17, 5);
1689 }
1690
createAtmosphere(UErrorCode & status)1691 MeasureUnit *MeasureUnit::createAtmosphere(UErrorCode &status) {
1692 return MeasureUnit::create(18, 0, status);
1693 }
1694
getAtmosphere()1695 MeasureUnit MeasureUnit::getAtmosphere() {
1696 return MeasureUnit(18, 0);
1697 }
1698
createBar(UErrorCode & status)1699 MeasureUnit *MeasureUnit::createBar(UErrorCode &status) {
1700 return MeasureUnit::create(18, 1, status);
1701 }
1702
getBar()1703 MeasureUnit MeasureUnit::getBar() {
1704 return MeasureUnit(18, 1);
1705 }
1706
createHectopascal(UErrorCode & status)1707 MeasureUnit *MeasureUnit::createHectopascal(UErrorCode &status) {
1708 return MeasureUnit::create(18, 2, status);
1709 }
1710
getHectopascal()1711 MeasureUnit MeasureUnit::getHectopascal() {
1712 return MeasureUnit(18, 2);
1713 }
1714
createInchHg(UErrorCode & status)1715 MeasureUnit *MeasureUnit::createInchHg(UErrorCode &status) {
1716 return MeasureUnit::create(18, 3, status);
1717 }
1718
getInchHg()1719 MeasureUnit MeasureUnit::getInchHg() {
1720 return MeasureUnit(18, 3);
1721 }
1722
createKilopascal(UErrorCode & status)1723 MeasureUnit *MeasureUnit::createKilopascal(UErrorCode &status) {
1724 return MeasureUnit::create(18, 4, status);
1725 }
1726
getKilopascal()1727 MeasureUnit MeasureUnit::getKilopascal() {
1728 return MeasureUnit(18, 4);
1729 }
1730
createMegapascal(UErrorCode & status)1731 MeasureUnit *MeasureUnit::createMegapascal(UErrorCode &status) {
1732 return MeasureUnit::create(18, 5, status);
1733 }
1734
getMegapascal()1735 MeasureUnit MeasureUnit::getMegapascal() {
1736 return MeasureUnit(18, 5);
1737 }
1738
createMillibar(UErrorCode & status)1739 MeasureUnit *MeasureUnit::createMillibar(UErrorCode &status) {
1740 return MeasureUnit::create(18, 6, status);
1741 }
1742
getMillibar()1743 MeasureUnit MeasureUnit::getMillibar() {
1744 return MeasureUnit(18, 6);
1745 }
1746
createMillimeterOfMercury(UErrorCode & status)1747 MeasureUnit *MeasureUnit::createMillimeterOfMercury(UErrorCode &status) {
1748 return MeasureUnit::create(18, 7, status);
1749 }
1750
getMillimeterOfMercury()1751 MeasureUnit MeasureUnit::getMillimeterOfMercury() {
1752 return MeasureUnit(18, 7);
1753 }
1754
createPascal(UErrorCode & status)1755 MeasureUnit *MeasureUnit::createPascal(UErrorCode &status) {
1756 return MeasureUnit::create(18, 8, status);
1757 }
1758
getPascal()1759 MeasureUnit MeasureUnit::getPascal() {
1760 return MeasureUnit(18, 8);
1761 }
1762
createPoundPerSquareInch(UErrorCode & status)1763 MeasureUnit *MeasureUnit::createPoundPerSquareInch(UErrorCode &status) {
1764 return MeasureUnit::create(18, 9, status);
1765 }
1766
getPoundPerSquareInch()1767 MeasureUnit MeasureUnit::getPoundPerSquareInch() {
1768 return MeasureUnit(18, 9);
1769 }
1770
createKilometerPerHour(UErrorCode & status)1771 MeasureUnit *MeasureUnit::createKilometerPerHour(UErrorCode &status) {
1772 return MeasureUnit::create(19, 0, status);
1773 }
1774
getKilometerPerHour()1775 MeasureUnit MeasureUnit::getKilometerPerHour() {
1776 return MeasureUnit(19, 0);
1777 }
1778
createKnot(UErrorCode & status)1779 MeasureUnit *MeasureUnit::createKnot(UErrorCode &status) {
1780 return MeasureUnit::create(19, 1, status);
1781 }
1782
getKnot()1783 MeasureUnit MeasureUnit::getKnot() {
1784 return MeasureUnit(19, 1);
1785 }
1786
createMeterPerSecond(UErrorCode & status)1787 MeasureUnit *MeasureUnit::createMeterPerSecond(UErrorCode &status) {
1788 return MeasureUnit::create(19, 2, status);
1789 }
1790
getMeterPerSecond()1791 MeasureUnit MeasureUnit::getMeterPerSecond() {
1792 return MeasureUnit(19, 2);
1793 }
1794
createMilePerHour(UErrorCode & status)1795 MeasureUnit *MeasureUnit::createMilePerHour(UErrorCode &status) {
1796 return MeasureUnit::create(19, 3, status);
1797 }
1798
getMilePerHour()1799 MeasureUnit MeasureUnit::getMilePerHour() {
1800 return MeasureUnit(19, 3);
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 NULL;
2299 }
2300 StringEnumeration *result = new UStringEnumeration(uenum);
2301 if (result == NULL) {
2302 errorCode = U_MEMORY_ALLOCATION_ERROR;
2303 uenum_close(uenum);
2304 return NULL;
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 NULL;
2331 }
2332 MeasureUnit *result = new MeasureUnit(typeId, subTypeId);
2333 if (result == NULL) {
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