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