Coverage Report

Created: 2025-06-24 06:54

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