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