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