Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Side by Side Diff: source/i18n/measunit.cpp

Issue 845603002: Update ICU to 54.1 step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@master
Patch Set: remove unusued directories Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/i18n/measfmt.cpp ('k') | source/i18n/measure.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 **********************************************************************
3 * Copyright (c) 2004-2014, International Business Machines
4 * Corporation and others. All Rights Reserved.
5 **********************************************************************
6 * Author: Alan Liu
7 * Created: April 26, 2004
8 * Since: ICU 3.0
9 **********************************************************************
10 */
11 #include "utypeinfo.h" // for 'typeid' to work
12
13 #include "unicode/measunit.h"
14
15 #if !UCONFIG_NO_FORMATTING
16
17 #include "unicode/uenum.h"
18 #include "ustrenum.h"
19 #include "cstring.h"
20 #include "uassert.h"
21
22 U_NAMESPACE_BEGIN
23
24 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MeasureUnit)
25
26 // All code between the "Start generated code" comment and
27 // the "End generated code" comment is auto generated code
28 // and must not be edited manually. For instructions on how to correctly
29 // update this code, refer to:
30 // https://sites.google.com/site/icusite/design/formatting/measureformat/updatin g-measure-unit
31 //
32 // Start generated code
33
34 static const int32_t gOffsets[] = {
35 0,
36 2,
37 6,
38 15,
39 17,
40 277,
41 287,
42 297,
43 301,
44 307,
45 311,
46 329,
47 330,
48 341,
49 347,
50 352,
51 353,
52 356,
53 359,
54 381
55 };
56
57 static const int32_t gIndexes[] = {
58 0,
59 2,
60 6,
61 15,
62 17,
63 17,
64 27,
65 37,
66 41,
67 47,
68 51,
69 69,
70 70,
71 81,
72 87,
73 92,
74 93,
75 96,
76 99,
77 121
78 };
79
80 static const char * const gTypes[] = {
81 "acceleration",
82 "angle",
83 "area",
84 "consumption",
85 "currency",
86 "digital",
87 "duration",
88 "electric",
89 "energy",
90 "frequency",
91 "length",
92 "light",
93 "mass",
94 "power",
95 "pressure",
96 "proportion",
97 "speed",
98 "temperature",
99 "volume"
100 };
101
102 static const char * const gSubTypes[] = {
103 "g-force",
104 "meter-per-second-squared",
105 "arc-minute",
106 "arc-second",
107 "degree",
108 "radian",
109 "acre",
110 "hectare",
111 "square-centimeter",
112 "square-foot",
113 "square-inch",
114 "square-kilometer",
115 "square-meter",
116 "square-mile",
117 "square-yard",
118 "liter-per-kilometer",
119 "mile-per-gallon",
120 "ADP",
121 "AED",
122 "AFA",
123 "AFN",
124 "ALL",
125 "AMD",
126 "ANG",
127 "AOA",
128 "AON",
129 "AOR",
130 "ARA",
131 "ARP",
132 "ARS",
133 "ATS",
134 "AUD",
135 "AWG",
136 "AYM",
137 "AZM",
138 "AZN",
139 "BAD",
140 "BAM",
141 "BBD",
142 "BDT",
143 "BEC",
144 "BEF",
145 "BEL",
146 "BGL",
147 "BGN",
148 "BHD",
149 "BIF",
150 "BMD",
151 "BND",
152 "BOB",
153 "BOV",
154 "BRC",
155 "BRE",
156 "BRL",
157 "BRN",
158 "BRR",
159 "BSD",
160 "BTN",
161 "BWP",
162 "BYB",
163 "BYR",
164 "BZD",
165 "CAD",
166 "CDF",
167 "CHC",
168 "CHE",
169 "CHF",
170 "CHW",
171 "CLF",
172 "CLP",
173 "CNY",
174 "COP",
175 "COU",
176 "CRC",
177 "CSD",
178 "CSK",
179 "CUC",
180 "CUP",
181 "CVE",
182 "CYP",
183 "CZK",
184 "DDM",
185 "DEM",
186 "DJF",
187 "DKK",
188 "DOP",
189 "DZD",
190 "ECS",
191 "ECV",
192 "EEK",
193 "EGP",
194 "ERN",
195 "ESA",
196 "ESB",
197 "ESP",
198 "ETB",
199 "EUR",
200 "FIM",
201 "FJD",
202 "FKP",
203 "FRF",
204 "GBP",
205 "GEK",
206 "GEL",
207 "GHC",
208 "GHP",
209 "GHS",
210 "GIP",
211 "GMD",
212 "GNF",
213 "GQE",
214 "GRD",
215 "GTQ",
216 "GWP",
217 "GYD",
218 "HKD",
219 "HNL",
220 "HRD",
221 "HRK",
222 "HTG",
223 "HUF",
224 "IDR",
225 "IEP",
226 "ILS",
227 "INR",
228 "IQD",
229 "IRR",
230 "ISK",
231 "ITL",
232 "JMD",
233 "JOD",
234 "JPY",
235 "KES",
236 "KGS",
237 "KHR",
238 "KMF",
239 "KPW",
240 "KRW",
241 "KWD",
242 "KYD",
243 "KZT",
244 "LAK",
245 "LBP",
246 "LKR",
247 "LRD",
248 "LSL",
249 "LTL",
250 "LTT",
251 "LUC",
252 "LUF",
253 "LUL",
254 "LVL",
255 "LVR",
256 "LYD",
257 "MAD",
258 "MDL",
259 "MGA",
260 "MGF",
261 "MKD",
262 "MLF",
263 "MMK",
264 "MNT",
265 "MOP",
266 "MRO",
267 "MTL",
268 "MUR",
269 "MVR",
270 "MWK",
271 "MXN",
272 "MXV",
273 "MYR",
274 "MZM",
275 "MZN",
276 "NAD",
277 "NGN",
278 "NIO",
279 "NLG",
280 "NOK",
281 "NPR",
282 "NZD",
283 "OMR",
284 "PAB",
285 "PEI",
286 "PEN",
287 "PES",
288 "PGK",
289 "PHP",
290 "PKR",
291 "PLN",
292 "PLZ",
293 "PTE",
294 "PYG",
295 "QAR",
296 "ROL",
297 "RON",
298 "RSD",
299 "RUB",
300 "RUR",
301 "RWF",
302 "SAR",
303 "SBD",
304 "SCR",
305 "SDD",
306 "SDG",
307 "SEK",
308 "SGD",
309 "SHP",
310 "SIT",
311 "SKK",
312 "SLL",
313 "SOS",
314 "SRD",
315 "SRG",
316 "SSP",
317 "STD",
318 "SVC",
319 "SYP",
320 "SZL",
321 "THB",
322 "TJR",
323 "TJS",
324 "TMM",
325 "TMT",
326 "TND",
327 "TOP",
328 "TPE",
329 "TRL",
330 "TRY",
331 "TTD",
332 "TWD",
333 "TZS",
334 "UAH",
335 "UAK",
336 "UGX",
337 "USD",
338 "USN",
339 "USS",
340 "UYI",
341 "UYU",
342 "UZS",
343 "VEB",
344 "VEF",
345 "VND",
346 "VUV",
347 "WST",
348 "XAF",
349 "XAG",
350 "XAU",
351 "XBA",
352 "XBB",
353 "XBC",
354 "XBD",
355 "XCD",
356 "XDR",
357 "XEU",
358 "XOF",
359 "XPD",
360 "XPF",
361 "XPT",
362 "XSU",
363 "XTS",
364 "XUA",
365 "XXX",
366 "YDD",
367 "YER",
368 "YUM",
369 "YUN",
370 "ZAL",
371 "ZAR",
372 "ZMK",
373 "ZMW",
374 "ZRN",
375 "ZRZ",
376 "ZWD",
377 "ZWL",
378 "ZWN",
379 "ZWR",
380 "bit",
381 "byte",
382 "gigabit",
383 "gigabyte",
384 "kilobit",
385 "kilobyte",
386 "megabit",
387 "megabyte",
388 "terabit",
389 "terabyte",
390 "day",
391 "hour",
392 "microsecond",
393 "millisecond",
394 "minute",
395 "month",
396 "nanosecond",
397 "second",
398 "week",
399 "year",
400 "ampere",
401 "milliampere",
402 "ohm",
403 "volt",
404 "calorie",
405 "foodcalorie",
406 "joule",
407 "kilocalorie",
408 "kilojoule",
409 "kilowatt-hour",
410 "gigahertz",
411 "hertz",
412 "kilohertz",
413 "megahertz",
414 "astronomical-unit",
415 "centimeter",
416 "decimeter",
417 "fathom",
418 "foot",
419 "furlong",
420 "inch",
421 "kilometer",
422 "light-year",
423 "meter",
424 "micrometer",
425 "mile",
426 "millimeter",
427 "nanometer",
428 "nautical-mile",
429 "parsec",
430 "picometer",
431 "yard",
432 "lux",
433 "carat",
434 "gram",
435 "kilogram",
436 "metric-ton",
437 "microgram",
438 "milligram",
439 "ounce",
440 "ounce-troy",
441 "pound",
442 "stone",
443 "ton",
444 "gigawatt",
445 "horsepower",
446 "kilowatt",
447 "megawatt",
448 "milliwatt",
449 "watt",
450 "hectopascal",
451 "inch-hg",
452 "millibar",
453 "millimeter-of-mercury",
454 "pound-per-square-inch",
455 "karat",
456 "kilometer-per-hour",
457 "meter-per-second",
458 "mile-per-hour",
459 "celsius",
460 "fahrenheit",
461 "kelvin",
462 "acre-foot",
463 "bushel",
464 "centiliter",
465 "cubic-centimeter",
466 "cubic-foot",
467 "cubic-inch",
468 "cubic-kilometer",
469 "cubic-meter",
470 "cubic-mile",
471 "cubic-yard",
472 "cup",
473 "deciliter",
474 "fluid-ounce",
475 "gallon",
476 "hectoliter",
477 "liter",
478 "megaliter",
479 "milliliter",
480 "pint",
481 "quart",
482 "tablespoon",
483 "teaspoon"
484 };
485
486 MeasureUnit *MeasureUnit::createGForce(UErrorCode &status) {
487 return MeasureUnit::create(0, 0, status);
488 }
489
490 MeasureUnit *MeasureUnit::createMeterPerSecondSquared(UErrorCode &status) {
491 return MeasureUnit::create(0, 1, status);
492 }
493
494 MeasureUnit *MeasureUnit::createArcMinute(UErrorCode &status) {
495 return MeasureUnit::create(1, 0, status);
496 }
497
498 MeasureUnit *MeasureUnit::createArcSecond(UErrorCode &status) {
499 return MeasureUnit::create(1, 1, status);
500 }
501
502 MeasureUnit *MeasureUnit::createDegree(UErrorCode &status) {
503 return MeasureUnit::create(1, 2, status);
504 }
505
506 MeasureUnit *MeasureUnit::createRadian(UErrorCode &status) {
507 return MeasureUnit::create(1, 3, status);
508 }
509
510 MeasureUnit *MeasureUnit::createAcre(UErrorCode &status) {
511 return MeasureUnit::create(2, 0, status);
512 }
513
514 MeasureUnit *MeasureUnit::createHectare(UErrorCode &status) {
515 return MeasureUnit::create(2, 1, status);
516 }
517
518 MeasureUnit *MeasureUnit::createSquareCentimeter(UErrorCode &status) {
519 return MeasureUnit::create(2, 2, status);
520 }
521
522 MeasureUnit *MeasureUnit::createSquareFoot(UErrorCode &status) {
523 return MeasureUnit::create(2, 3, status);
524 }
525
526 MeasureUnit *MeasureUnit::createSquareInch(UErrorCode &status) {
527 return MeasureUnit::create(2, 4, status);
528 }
529
530 MeasureUnit *MeasureUnit::createSquareKilometer(UErrorCode &status) {
531 return MeasureUnit::create(2, 5, status);
532 }
533
534 MeasureUnit *MeasureUnit::createSquareMeter(UErrorCode &status) {
535 return MeasureUnit::create(2, 6, status);
536 }
537
538 MeasureUnit *MeasureUnit::createSquareMile(UErrorCode &status) {
539 return MeasureUnit::create(2, 7, status);
540 }
541
542 MeasureUnit *MeasureUnit::createSquareYard(UErrorCode &status) {
543 return MeasureUnit::create(2, 8, status);
544 }
545
546 MeasureUnit *MeasureUnit::createLiterPerKilometer(UErrorCode &status) {
547 return MeasureUnit::create(3, 0, status);
548 }
549
550 MeasureUnit *MeasureUnit::createMilePerGallon(UErrorCode &status) {
551 return MeasureUnit::create(3, 1, status);
552 }
553
554 MeasureUnit *MeasureUnit::createBit(UErrorCode &status) {
555 return MeasureUnit::create(5, 0, status);
556 }
557
558 MeasureUnit *MeasureUnit::createByte(UErrorCode &status) {
559 return MeasureUnit::create(5, 1, status);
560 }
561
562 MeasureUnit *MeasureUnit::createGigabit(UErrorCode &status) {
563 return MeasureUnit::create(5, 2, status);
564 }
565
566 MeasureUnit *MeasureUnit::createGigabyte(UErrorCode &status) {
567 return MeasureUnit::create(5, 3, status);
568 }
569
570 MeasureUnit *MeasureUnit::createKilobit(UErrorCode &status) {
571 return MeasureUnit::create(5, 4, status);
572 }
573
574 MeasureUnit *MeasureUnit::createKilobyte(UErrorCode &status) {
575 return MeasureUnit::create(5, 5, status);
576 }
577
578 MeasureUnit *MeasureUnit::createMegabit(UErrorCode &status) {
579 return MeasureUnit::create(5, 6, status);
580 }
581
582 MeasureUnit *MeasureUnit::createMegabyte(UErrorCode &status) {
583 return MeasureUnit::create(5, 7, status);
584 }
585
586 MeasureUnit *MeasureUnit::createTerabit(UErrorCode &status) {
587 return MeasureUnit::create(5, 8, status);
588 }
589
590 MeasureUnit *MeasureUnit::createTerabyte(UErrorCode &status) {
591 return MeasureUnit::create(5, 9, status);
592 }
593
594 MeasureUnit *MeasureUnit::createDay(UErrorCode &status) {
595 return MeasureUnit::create(6, 0, status);
596 }
597
598 MeasureUnit *MeasureUnit::createHour(UErrorCode &status) {
599 return MeasureUnit::create(6, 1, status);
600 }
601
602 MeasureUnit *MeasureUnit::createMicrosecond(UErrorCode &status) {
603 return MeasureUnit::create(6, 2, status);
604 }
605
606 MeasureUnit *MeasureUnit::createMillisecond(UErrorCode &status) {
607 return MeasureUnit::create(6, 3, status);
608 }
609
610 MeasureUnit *MeasureUnit::createMinute(UErrorCode &status) {
611 return MeasureUnit::create(6, 4, status);
612 }
613
614 MeasureUnit *MeasureUnit::createMonth(UErrorCode &status) {
615 return MeasureUnit::create(6, 5, status);
616 }
617
618 MeasureUnit *MeasureUnit::createNanosecond(UErrorCode &status) {
619 return MeasureUnit::create(6, 6, status);
620 }
621
622 MeasureUnit *MeasureUnit::createSecond(UErrorCode &status) {
623 return MeasureUnit::create(6, 7, status);
624 }
625
626 MeasureUnit *MeasureUnit::createWeek(UErrorCode &status) {
627 return MeasureUnit::create(6, 8, status);
628 }
629
630 MeasureUnit *MeasureUnit::createYear(UErrorCode &status) {
631 return MeasureUnit::create(6, 9, status);
632 }
633
634 MeasureUnit *MeasureUnit::createAmpere(UErrorCode &status) {
635 return MeasureUnit::create(7, 0, status);
636 }
637
638 MeasureUnit *MeasureUnit::createMilliampere(UErrorCode &status) {
639 return MeasureUnit::create(7, 1, status);
640 }
641
642 MeasureUnit *MeasureUnit::createOhm(UErrorCode &status) {
643 return MeasureUnit::create(7, 2, status);
644 }
645
646 MeasureUnit *MeasureUnit::createVolt(UErrorCode &status) {
647 return MeasureUnit::create(7, 3, status);
648 }
649
650 MeasureUnit *MeasureUnit::createCalorie(UErrorCode &status) {
651 return MeasureUnit::create(8, 0, status);
652 }
653
654 MeasureUnit *MeasureUnit::createFoodcalorie(UErrorCode &status) {
655 return MeasureUnit::create(8, 1, status);
656 }
657
658 MeasureUnit *MeasureUnit::createJoule(UErrorCode &status) {
659 return MeasureUnit::create(8, 2, status);
660 }
661
662 MeasureUnit *MeasureUnit::createKilocalorie(UErrorCode &status) {
663 return MeasureUnit::create(8, 3, status);
664 }
665
666 MeasureUnit *MeasureUnit::createKilojoule(UErrorCode &status) {
667 return MeasureUnit::create(8, 4, status);
668 }
669
670 MeasureUnit *MeasureUnit::createKilowattHour(UErrorCode &status) {
671 return MeasureUnit::create(8, 5, status);
672 }
673
674 MeasureUnit *MeasureUnit::createGigahertz(UErrorCode &status) {
675 return MeasureUnit::create(9, 0, status);
676 }
677
678 MeasureUnit *MeasureUnit::createHertz(UErrorCode &status) {
679 return MeasureUnit::create(9, 1, status);
680 }
681
682 MeasureUnit *MeasureUnit::createKilohertz(UErrorCode &status) {
683 return MeasureUnit::create(9, 2, status);
684 }
685
686 MeasureUnit *MeasureUnit::createMegahertz(UErrorCode &status) {
687 return MeasureUnit::create(9, 3, status);
688 }
689
690 MeasureUnit *MeasureUnit::createAstronomicalUnit(UErrorCode &status) {
691 return MeasureUnit::create(10, 0, status);
692 }
693
694 MeasureUnit *MeasureUnit::createCentimeter(UErrorCode &status) {
695 return MeasureUnit::create(10, 1, status);
696 }
697
698 MeasureUnit *MeasureUnit::createDecimeter(UErrorCode &status) {
699 return MeasureUnit::create(10, 2, status);
700 }
701
702 MeasureUnit *MeasureUnit::createFathom(UErrorCode &status) {
703 return MeasureUnit::create(10, 3, status);
704 }
705
706 MeasureUnit *MeasureUnit::createFoot(UErrorCode &status) {
707 return MeasureUnit::create(10, 4, status);
708 }
709
710 MeasureUnit *MeasureUnit::createFurlong(UErrorCode &status) {
711 return MeasureUnit::create(10, 5, status);
712 }
713
714 MeasureUnit *MeasureUnit::createInch(UErrorCode &status) {
715 return MeasureUnit::create(10, 6, status);
716 }
717
718 MeasureUnit *MeasureUnit::createKilometer(UErrorCode &status) {
719 return MeasureUnit::create(10, 7, status);
720 }
721
722 MeasureUnit *MeasureUnit::createLightYear(UErrorCode &status) {
723 return MeasureUnit::create(10, 8, status);
724 }
725
726 MeasureUnit *MeasureUnit::createMeter(UErrorCode &status) {
727 return MeasureUnit::create(10, 9, status);
728 }
729
730 MeasureUnit *MeasureUnit::createMicrometer(UErrorCode &status) {
731 return MeasureUnit::create(10, 10, status);
732 }
733
734 MeasureUnit *MeasureUnit::createMile(UErrorCode &status) {
735 return MeasureUnit::create(10, 11, status);
736 }
737
738 MeasureUnit *MeasureUnit::createMillimeter(UErrorCode &status) {
739 return MeasureUnit::create(10, 12, status);
740 }
741
742 MeasureUnit *MeasureUnit::createNanometer(UErrorCode &status) {
743 return MeasureUnit::create(10, 13, status);
744 }
745
746 MeasureUnit *MeasureUnit::createNauticalMile(UErrorCode &status) {
747 return MeasureUnit::create(10, 14, status);
748 }
749
750 MeasureUnit *MeasureUnit::createParsec(UErrorCode &status) {
751 return MeasureUnit::create(10, 15, status);
752 }
753
754 MeasureUnit *MeasureUnit::createPicometer(UErrorCode &status) {
755 return MeasureUnit::create(10, 16, status);
756 }
757
758 MeasureUnit *MeasureUnit::createYard(UErrorCode &status) {
759 return MeasureUnit::create(10, 17, status);
760 }
761
762 MeasureUnit *MeasureUnit::createLux(UErrorCode &status) {
763 return MeasureUnit::create(11, 0, status);
764 }
765
766 MeasureUnit *MeasureUnit::createCarat(UErrorCode &status) {
767 return MeasureUnit::create(12, 0, status);
768 }
769
770 MeasureUnit *MeasureUnit::createGram(UErrorCode &status) {
771 return MeasureUnit::create(12, 1, status);
772 }
773
774 MeasureUnit *MeasureUnit::createKilogram(UErrorCode &status) {
775 return MeasureUnit::create(12, 2, status);
776 }
777
778 MeasureUnit *MeasureUnit::createMetricTon(UErrorCode &status) {
779 return MeasureUnit::create(12, 3, status);
780 }
781
782 MeasureUnit *MeasureUnit::createMicrogram(UErrorCode &status) {
783 return MeasureUnit::create(12, 4, status);
784 }
785
786 MeasureUnit *MeasureUnit::createMilligram(UErrorCode &status) {
787 return MeasureUnit::create(12, 5, status);
788 }
789
790 MeasureUnit *MeasureUnit::createOunce(UErrorCode &status) {
791 return MeasureUnit::create(12, 6, status);
792 }
793
794 MeasureUnit *MeasureUnit::createOunceTroy(UErrorCode &status) {
795 return MeasureUnit::create(12, 7, status);
796 }
797
798 MeasureUnit *MeasureUnit::createPound(UErrorCode &status) {
799 return MeasureUnit::create(12, 8, status);
800 }
801
802 MeasureUnit *MeasureUnit::createStone(UErrorCode &status) {
803 return MeasureUnit::create(12, 9, status);
804 }
805
806 MeasureUnit *MeasureUnit::createTon(UErrorCode &status) {
807 return MeasureUnit::create(12, 10, status);
808 }
809
810 MeasureUnit *MeasureUnit::createGigawatt(UErrorCode &status) {
811 return MeasureUnit::create(13, 0, status);
812 }
813
814 MeasureUnit *MeasureUnit::createHorsepower(UErrorCode &status) {
815 return MeasureUnit::create(13, 1, status);
816 }
817
818 MeasureUnit *MeasureUnit::createKilowatt(UErrorCode &status) {
819 return MeasureUnit::create(13, 2, status);
820 }
821
822 MeasureUnit *MeasureUnit::createMegawatt(UErrorCode &status) {
823 return MeasureUnit::create(13, 3, status);
824 }
825
826 MeasureUnit *MeasureUnit::createMilliwatt(UErrorCode &status) {
827 return MeasureUnit::create(13, 4, status);
828 }
829
830 MeasureUnit *MeasureUnit::createWatt(UErrorCode &status) {
831 return MeasureUnit::create(13, 5, status);
832 }
833
834 MeasureUnit *MeasureUnit::createHectopascal(UErrorCode &status) {
835 return MeasureUnit::create(14, 0, status);
836 }
837
838 MeasureUnit *MeasureUnit::createInchHg(UErrorCode &status) {
839 return MeasureUnit::create(14, 1, status);
840 }
841
842 MeasureUnit *MeasureUnit::createMillibar(UErrorCode &status) {
843 return MeasureUnit::create(14, 2, status);
844 }
845
846 MeasureUnit *MeasureUnit::createMillimeterOfMercury(UErrorCode &status) {
847 return MeasureUnit::create(14, 3, status);
848 }
849
850 MeasureUnit *MeasureUnit::createPoundPerSquareInch(UErrorCode &status) {
851 return MeasureUnit::create(14, 4, status);
852 }
853
854 MeasureUnit *MeasureUnit::createKarat(UErrorCode &status) {
855 return MeasureUnit::create(15, 0, status);
856 }
857
858 MeasureUnit *MeasureUnit::createKilometerPerHour(UErrorCode &status) {
859 return MeasureUnit::create(16, 0, status);
860 }
861
862 MeasureUnit *MeasureUnit::createMeterPerSecond(UErrorCode &status) {
863 return MeasureUnit::create(16, 1, status);
864 }
865
866 MeasureUnit *MeasureUnit::createMilePerHour(UErrorCode &status) {
867 return MeasureUnit::create(16, 2, status);
868 }
869
870 MeasureUnit *MeasureUnit::createCelsius(UErrorCode &status) {
871 return MeasureUnit::create(17, 0, status);
872 }
873
874 MeasureUnit *MeasureUnit::createFahrenheit(UErrorCode &status) {
875 return MeasureUnit::create(17, 1, status);
876 }
877
878 MeasureUnit *MeasureUnit::createKelvin(UErrorCode &status) {
879 return MeasureUnit::create(17, 2, status);
880 }
881
882 MeasureUnit *MeasureUnit::createAcreFoot(UErrorCode &status) {
883 return MeasureUnit::create(18, 0, status);
884 }
885
886 MeasureUnit *MeasureUnit::createBushel(UErrorCode &status) {
887 return MeasureUnit::create(18, 1, status);
888 }
889
890 MeasureUnit *MeasureUnit::createCentiliter(UErrorCode &status) {
891 return MeasureUnit::create(18, 2, status);
892 }
893
894 MeasureUnit *MeasureUnit::createCubicCentimeter(UErrorCode &status) {
895 return MeasureUnit::create(18, 3, status);
896 }
897
898 MeasureUnit *MeasureUnit::createCubicFoot(UErrorCode &status) {
899 return MeasureUnit::create(18, 4, status);
900 }
901
902 MeasureUnit *MeasureUnit::createCubicInch(UErrorCode &status) {
903 return MeasureUnit::create(18, 5, status);
904 }
905
906 MeasureUnit *MeasureUnit::createCubicKilometer(UErrorCode &status) {
907 return MeasureUnit::create(18, 6, status);
908 }
909
910 MeasureUnit *MeasureUnit::createCubicMeter(UErrorCode &status) {
911 return MeasureUnit::create(18, 7, status);
912 }
913
914 MeasureUnit *MeasureUnit::createCubicMile(UErrorCode &status) {
915 return MeasureUnit::create(18, 8, status);
916 }
917
918 MeasureUnit *MeasureUnit::createCubicYard(UErrorCode &status) {
919 return MeasureUnit::create(18, 9, status);
920 }
921
922 MeasureUnit *MeasureUnit::createCup(UErrorCode &status) {
923 return MeasureUnit::create(18, 10, status);
924 }
925
926 MeasureUnit *MeasureUnit::createDeciliter(UErrorCode &status) {
927 return MeasureUnit::create(18, 11, status);
928 }
929
930 MeasureUnit *MeasureUnit::createFluidOunce(UErrorCode &status) {
931 return MeasureUnit::create(18, 12, status);
932 }
933
934 MeasureUnit *MeasureUnit::createGallon(UErrorCode &status) {
935 return MeasureUnit::create(18, 13, status);
936 }
937
938 MeasureUnit *MeasureUnit::createHectoliter(UErrorCode &status) {
939 return MeasureUnit::create(18, 14, status);
940 }
941
942 MeasureUnit *MeasureUnit::createLiter(UErrorCode &status) {
943 return MeasureUnit::create(18, 15, status);
944 }
945
946 MeasureUnit *MeasureUnit::createMegaliter(UErrorCode &status) {
947 return MeasureUnit::create(18, 16, status);
948 }
949
950 MeasureUnit *MeasureUnit::createMilliliter(UErrorCode &status) {
951 return MeasureUnit::create(18, 17, status);
952 }
953
954 MeasureUnit *MeasureUnit::createPint(UErrorCode &status) {
955 return MeasureUnit::create(18, 18, status);
956 }
957
958 MeasureUnit *MeasureUnit::createQuart(UErrorCode &status) {
959 return MeasureUnit::create(18, 19, status);
960 }
961
962 MeasureUnit *MeasureUnit::createTablespoon(UErrorCode &status) {
963 return MeasureUnit::create(18, 20, status);
964 }
965
966 MeasureUnit *MeasureUnit::createTeaspoon(UErrorCode &status) {
967 return MeasureUnit::create(18, 21, status);
968 }
969
970 // End generated code
971
972 static int32_t binarySearch(
973 const char * const * array, int32_t start, int32_t end, const char * key ) {
974 while (start < end) {
975 int32_t mid = (start + end) / 2;
976 int32_t cmp = uprv_strcmp(array[mid], key);
977 if (cmp < 0) {
978 start = mid + 1;
979 continue;
980 }
981 if (cmp == 0) {
982 return mid;
983 }
984 end = mid;
985 }
986 return -1;
987 }
988
989 MeasureUnit::MeasureUnit(const MeasureUnit &other)
990 : fTypeId(other.fTypeId), fSubTypeId(other.fSubTypeId) {
991 uprv_strcpy(fCurrency, other.fCurrency);
992 }
993
994 MeasureUnit &MeasureUnit::operator=(const MeasureUnit &other) {
995 if (this == &other) {
996 return *this;
997 }
998 fTypeId = other.fTypeId;
999 fSubTypeId = other.fSubTypeId;
1000 uprv_strcpy(fCurrency, other.fCurrency);
1001 return *this;
1002 }
1003
1004 UObject *MeasureUnit::clone() const {
1005 return new MeasureUnit(*this);
1006 }
1007
1008 MeasureUnit::~MeasureUnit() {
1009 }
1010
1011 const char *MeasureUnit::getType() const {
1012 return gTypes[fTypeId];
1013 }
1014
1015 const char *MeasureUnit::getSubtype() const {
1016 return fCurrency[0] == 0 ? gSubTypes[getOffset()] : fCurrency;
1017 }
1018
1019 UBool MeasureUnit::operator==(const UObject& other) const {
1020 if (this == &other) { // Same object, equal
1021 return TRUE;
1022 }
1023 if (typeid(*this) != typeid(other)) { // Different types, not equal
1024 return FALSE;
1025 }
1026 const MeasureUnit &rhs = static_cast<const MeasureUnit&>(other);
1027 return (
1028 fTypeId == rhs.fTypeId
1029 && fSubTypeId == rhs.fSubTypeId
1030 && uprv_strcmp(fCurrency, rhs.fCurrency) == 0);
1031 }
1032
1033 int32_t MeasureUnit::getIndex() const {
1034 return gIndexes[fTypeId] + fSubTypeId;
1035 }
1036
1037 int32_t MeasureUnit::getAvailable(
1038 MeasureUnit *dest,
1039 int32_t destCapacity,
1040 UErrorCode &errorCode) {
1041 if (U_FAILURE(errorCode)) {
1042 return 0;
1043 }
1044 if (destCapacity < UPRV_LENGTHOF(gSubTypes)) {
1045 errorCode = U_BUFFER_OVERFLOW_ERROR;
1046 return UPRV_LENGTHOF(gSubTypes);
1047 }
1048 int32_t idx = 0;
1049 for (int32_t typeIdx = 0; typeIdx < UPRV_LENGTHOF(gTypes); ++typeIdx) {
1050 int32_t len = gOffsets[typeIdx + 1] - gOffsets[typeIdx];
1051 for (int32_t subTypeIdx = 0; subTypeIdx < len; ++subTypeIdx) {
1052 dest[idx].setTo(typeIdx, subTypeIdx);
1053 ++idx;
1054 }
1055 }
1056 U_ASSERT(idx == UPRV_LENGTHOF(gSubTypes));
1057 return UPRV_LENGTHOF(gSubTypes);
1058 }
1059
1060 int32_t MeasureUnit::getAvailable(
1061 const char *type,
1062 MeasureUnit *dest,
1063 int32_t destCapacity,
1064 UErrorCode &errorCode) {
1065 if (U_FAILURE(errorCode)) {
1066 return 0;
1067 }
1068 int32_t typeIdx = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), type);
1069 if (typeIdx == -1) {
1070 return 0;
1071 }
1072 int32_t len = gOffsets[typeIdx + 1] - gOffsets[typeIdx];
1073 if (destCapacity < len) {
1074 errorCode = U_BUFFER_OVERFLOW_ERROR;
1075 return len;
1076 }
1077 for (int subTypeIdx = 0; subTypeIdx < len; ++subTypeIdx) {
1078 dest[subTypeIdx].setTo(typeIdx, subTypeIdx);
1079 }
1080 return len;
1081 }
1082
1083 StringEnumeration* MeasureUnit::getAvailableTypes(UErrorCode &errorCode) {
1084 UEnumeration *uenum = uenum_openCharStringsEnumeration(
1085 gTypes, UPRV_LENGTHOF(gTypes), &errorCode);
1086 if (U_FAILURE(errorCode)) {
1087 uenum_close(uenum);
1088 return NULL;
1089 }
1090 StringEnumeration *result = new UStringEnumeration(uenum);
1091 if (result == NULL) {
1092 errorCode = U_MEMORY_ALLOCATION_ERROR;
1093 uenum_close(uenum);
1094 return NULL;
1095 }
1096 return result;
1097 }
1098
1099 int32_t MeasureUnit::getIndexCount() {
1100 return gIndexes[UPRV_LENGTHOF(gIndexes) - 1];
1101 }
1102
1103 MeasureUnit *MeasureUnit::create(int typeId, int subTypeId, UErrorCode &status) {
1104 if (U_FAILURE(status)) {
1105 return NULL;
1106 }
1107 MeasureUnit *result = new MeasureUnit(typeId, subTypeId);
1108 if (result == NULL) {
1109 status = U_MEMORY_ALLOCATION_ERROR;
1110 }
1111 return result;
1112 }
1113
1114 void MeasureUnit::initTime(const char *timeId) {
1115 int32_t result = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), "duration");
1116 U_ASSERT(result != -1);
1117 fTypeId = result;
1118 result = binarySearch(gSubTypes, gOffsets[fTypeId], gOffsets[fTypeId + 1], t imeId);
1119 U_ASSERT(result != -1);
1120 fSubTypeId = result - gOffsets[fTypeId];
1121 }
1122
1123 void MeasureUnit::initCurrency(const char *isoCurrency) {
1124 int32_t result = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), "currency");
1125 U_ASSERT(result != -1);
1126 fTypeId = result;
1127 result = binarySearch(
1128 gSubTypes, gOffsets[fTypeId], gOffsets[fTypeId + 1], isoCurrency);
1129 if (result != -1) {
1130 fSubTypeId = result - gOffsets[fTypeId];
1131 } else {
1132 uprv_strncpy(fCurrency, isoCurrency, UPRV_LENGTHOF(fCurrency));
1133 }
1134 }
1135
1136 void MeasureUnit::setTo(int32_t typeId, int32_t subTypeId) {
1137 fTypeId = typeId;
1138 fSubTypeId = subTypeId;
1139 fCurrency[0] = 0;
1140 }
1141
1142 int32_t MeasureUnit::getOffset() const {
1143 return gOffsets[fTypeId] + fSubTypeId;
1144 }
1145
1146 U_NAMESPACE_END
1147
1148 #endif /* !UNCONFIG_NO_FORMATTING */
OLDNEW
« no previous file with comments | « source/i18n/measfmt.cpp ('k') | source/i18n/measure.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698