OLD | NEW |
1 /* | 1 /* |
2 ********************************************************************** | 2 ********************************************************************** |
3 * Copyright (c) 2004-2014, International Business Machines | 3 * Copyright (c) 2004-2015, International Business Machines |
4 * Corporation and others. All Rights Reserved. | 4 * Corporation and others. All Rights Reserved. |
5 ********************************************************************** | 5 ********************************************************************** |
6 * Author: Alan Liu | 6 * Author: Alan Liu |
7 * Created: April 26, 2004 | 7 * Created: April 26, 2004 |
8 * Since: ICU 3.0 | 8 * Since: ICU 3.0 |
9 ********************************************************************** | 9 ********************************************************************** |
10 */ | 10 */ |
11 #include "utypeinfo.h" // for 'typeid' to work | 11 #include "utypeinfo.h" // for 'typeid' to work |
12 | 12 |
13 #include "unicode/measunit.h" | 13 #include "unicode/measunit.h" |
14 | 14 |
15 #if !UCONFIG_NO_FORMATTING | 15 #if !UCONFIG_NO_FORMATTING |
16 | 16 |
17 #include "unicode/uenum.h" | 17 #include "unicode/uenum.h" |
18 #include "ustrenum.h" | 18 #include "ustrenum.h" |
19 #include "cstring.h" | 19 #include "cstring.h" |
20 #include "uassert.h" | 20 #include "uassert.h" |
21 | 21 |
22 U_NAMESPACE_BEGIN | 22 U_NAMESPACE_BEGIN |
23 | 23 |
24 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MeasureUnit) | 24 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MeasureUnit) |
25 | 25 |
26 // All code between the "Start generated code" comment and | 26 // All code between the "Start generated code" comment and |
27 // the "End generated code" comment is auto generated code | 27 // the "End generated code" comment is auto generated code |
28 // and must not be edited manually. For instructions on how to correctly | 28 // and must not be edited manually. For instructions on how to correctly |
29 // update this code, refer to: | 29 // update this code, refer to: |
30 // https://sites.google.com/site/icusite/design/formatting/measureformat/updatin
g-measure-unit | 30 // http://site.icu-project.org/design/formatting/measureformat/updating-measure-
unit |
31 // | 31 // |
32 // Start generated code | 32 // Start generated code |
33 | 33 |
34 static const int32_t gOffsets[] = { | 34 static const int32_t gOffsets[] = { |
35 0, | 35 0, |
36 2, | 36 2, |
37 6, | 37 7, |
38 15, | 38 16, |
39 17, | 39 19, |
40 277, | 40 279, |
41 287, | 41 289, |
42 297, | 42 300, |
43 301, | 43 304, |
44 307, | 44 310, |
45 311, | 45 314, |
46 329, | 46 333, |
47 330, | 47 334, |
48 341, | 48 345, |
49 347, | 49 351, |
50 352, | |
51 353, | |
52 356, | 50 356, |
53 359, | 51 357, |
54 381 | 52 361, |
| 53 365, |
| 54 389 |
55 }; | 55 }; |
56 | 56 |
57 static const int32_t gIndexes[] = { | 57 static const int32_t gIndexes[] = { |
58 0, | 58 0, |
59 2, | 59 2, |
60 6, | 60 7, |
61 15, | 61 16, |
62 17, | 62 19, |
63 17, | 63 19, |
64 27, | 64 29, |
65 37, | 65 40, |
66 41, | 66 44, |
67 47, | 67 50, |
68 51, | 68 54, |
69 69, | 69 73, |
70 70, | 70 74, |
71 81, | 71 85, |
72 87, | 72 91, |
73 92, | |
74 93, | |
75 96, | 73 96, |
76 99, | 74 97, |
77 121 | 75 101, |
| 76 105, |
| 77 129 |
78 }; | 78 }; |
79 | 79 |
| 80 // Must be sorted alphabetically. |
80 static const char * const gTypes[] = { | 81 static const char * const gTypes[] = { |
81 "acceleration", | 82 "acceleration", |
82 "angle", | 83 "angle", |
83 "area", | 84 "area", |
84 "consumption", | 85 "consumption", |
85 "currency", | 86 "currency", |
86 "digital", | 87 "digital", |
87 "duration", | 88 "duration", |
88 "electric", | 89 "electric", |
89 "energy", | 90 "energy", |
90 "frequency", | 91 "frequency", |
91 "length", | 92 "length", |
92 "light", | 93 "light", |
93 "mass", | 94 "mass", |
94 "power", | 95 "power", |
95 "pressure", | 96 "pressure", |
96 "proportion", | 97 "proportion", |
97 "speed", | 98 "speed", |
98 "temperature", | 99 "temperature", |
99 "volume" | 100 "volume" |
100 }; | 101 }; |
101 | 102 |
| 103 // Must be grouped by type and sorted alphabetically within each type. |
102 static const char * const gSubTypes[] = { | 104 static const char * const gSubTypes[] = { |
103 "g-force", | 105 "g-force", |
104 "meter-per-second-squared", | 106 "meter-per-second-squared", |
105 "arc-minute", | 107 "arc-minute", |
106 "arc-second", | 108 "arc-second", |
107 "degree", | 109 "degree", |
108 "radian", | 110 "radian", |
| 111 "revolution", |
109 "acre", | 112 "acre", |
110 "hectare", | 113 "hectare", |
111 "square-centimeter", | 114 "square-centimeter", |
112 "square-foot", | 115 "square-foot", |
113 "square-inch", | 116 "square-inch", |
114 "square-kilometer", | 117 "square-kilometer", |
115 "square-meter", | 118 "square-meter", |
116 "square-mile", | 119 "square-mile", |
117 "square-yard", | 120 "square-yard", |
| 121 "liter-per-100kilometers", |
118 "liter-per-kilometer", | 122 "liter-per-kilometer", |
119 "mile-per-gallon", | 123 "mile-per-gallon", |
120 "ADP", | 124 "ADP", |
121 "AED", | 125 "AED", |
122 "AFA", | 126 "AFA", |
123 "AFN", | 127 "AFN", |
124 "ALL", | 128 "ALL", |
125 "AMD", | 129 "AMD", |
126 "ANG", | 130 "ANG", |
127 "AOA", | 131 "AOA", |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 "bit", | 384 "bit", |
381 "byte", | 385 "byte", |
382 "gigabit", | 386 "gigabit", |
383 "gigabyte", | 387 "gigabyte", |
384 "kilobit", | 388 "kilobit", |
385 "kilobyte", | 389 "kilobyte", |
386 "megabit", | 390 "megabit", |
387 "megabyte", | 391 "megabyte", |
388 "terabit", | 392 "terabit", |
389 "terabyte", | 393 "terabyte", |
| 394 "century", |
390 "day", | 395 "day", |
391 "hour", | 396 "hour", |
392 "microsecond", | 397 "microsecond", |
393 "millisecond", | 398 "millisecond", |
394 "minute", | 399 "minute", |
395 "month", | 400 "month", |
396 "nanosecond", | 401 "nanosecond", |
397 "second", | 402 "second", |
398 "week", | 403 "week", |
399 "year", | 404 "year", |
(...skipping 16 matching lines...) Expand all Loading... |
416 "decimeter", | 421 "decimeter", |
417 "fathom", | 422 "fathom", |
418 "foot", | 423 "foot", |
419 "furlong", | 424 "furlong", |
420 "inch", | 425 "inch", |
421 "kilometer", | 426 "kilometer", |
422 "light-year", | 427 "light-year", |
423 "meter", | 428 "meter", |
424 "micrometer", | 429 "micrometer", |
425 "mile", | 430 "mile", |
| 431 "mile-scandinavian", |
426 "millimeter", | 432 "millimeter", |
427 "nanometer", | 433 "nanometer", |
428 "nautical-mile", | 434 "nautical-mile", |
429 "parsec", | 435 "parsec", |
430 "picometer", | 436 "picometer", |
431 "yard", | 437 "yard", |
432 "lux", | 438 "lux", |
433 "carat", | 439 "carat", |
434 "gram", | 440 "gram", |
435 "kilogram", | 441 "kilogram", |
(...skipping 11 matching lines...) Expand all Loading... |
447 "megawatt", | 453 "megawatt", |
448 "milliwatt", | 454 "milliwatt", |
449 "watt", | 455 "watt", |
450 "hectopascal", | 456 "hectopascal", |
451 "inch-hg", | 457 "inch-hg", |
452 "millibar", | 458 "millibar", |
453 "millimeter-of-mercury", | 459 "millimeter-of-mercury", |
454 "pound-per-square-inch", | 460 "pound-per-square-inch", |
455 "karat", | 461 "karat", |
456 "kilometer-per-hour", | 462 "kilometer-per-hour", |
| 463 "knot", |
457 "meter-per-second", | 464 "meter-per-second", |
458 "mile-per-hour", | 465 "mile-per-hour", |
459 "celsius", | 466 "celsius", |
460 "fahrenheit", | 467 "fahrenheit", |
| 468 "generic", |
461 "kelvin", | 469 "kelvin", |
462 "acre-foot", | 470 "acre-foot", |
463 "bushel", | 471 "bushel", |
464 "centiliter", | 472 "centiliter", |
465 "cubic-centimeter", | 473 "cubic-centimeter", |
466 "cubic-foot", | 474 "cubic-foot", |
467 "cubic-inch", | 475 "cubic-inch", |
468 "cubic-kilometer", | 476 "cubic-kilometer", |
469 "cubic-meter", | 477 "cubic-meter", |
470 "cubic-mile", | 478 "cubic-mile", |
471 "cubic-yard", | 479 "cubic-yard", |
472 "cup", | 480 "cup", |
| 481 "cup-metric", |
473 "deciliter", | 482 "deciliter", |
474 "fluid-ounce", | 483 "fluid-ounce", |
475 "gallon", | 484 "gallon", |
476 "hectoliter", | 485 "hectoliter", |
477 "liter", | 486 "liter", |
478 "megaliter", | 487 "megaliter", |
479 "milliliter", | 488 "milliliter", |
480 "pint", | 489 "pint", |
| 490 "pint-metric", |
481 "quart", | 491 "quart", |
482 "tablespoon", | 492 "tablespoon", |
483 "teaspoon" | 493 "teaspoon" |
484 }; | 494 }; |
485 | 495 |
| 496 // Must be sorted by first value and then second value. |
| 497 static int32_t unitPerUnitToSingleUnit[][4] = { |
| 498 {321, 291, 16, 0}, |
| 499 {323, 297, 16, 2}, |
| 500 {325, 291, 16, 3}, |
| 501 {325, 379, 3, 2}, |
| 502 {342, 11, 14, 4}, |
| 503 {381, 321, 3, 1} |
| 504 }; |
| 505 |
486 MeasureUnit *MeasureUnit::createGForce(UErrorCode &status) { | 506 MeasureUnit *MeasureUnit::createGForce(UErrorCode &status) { |
487 return MeasureUnit::create(0, 0, status); | 507 return MeasureUnit::create(0, 0, status); |
488 } | 508 } |
489 | 509 |
490 MeasureUnit *MeasureUnit::createMeterPerSecondSquared(UErrorCode &status) { | 510 MeasureUnit *MeasureUnit::createMeterPerSecondSquared(UErrorCode &status) { |
491 return MeasureUnit::create(0, 1, status); | 511 return MeasureUnit::create(0, 1, status); |
492 } | 512 } |
493 | 513 |
494 MeasureUnit *MeasureUnit::createArcMinute(UErrorCode &status) { | 514 MeasureUnit *MeasureUnit::createArcMinute(UErrorCode &status) { |
495 return MeasureUnit::create(1, 0, status); | 515 return MeasureUnit::create(1, 0, status); |
496 } | 516 } |
497 | 517 |
498 MeasureUnit *MeasureUnit::createArcSecond(UErrorCode &status) { | 518 MeasureUnit *MeasureUnit::createArcSecond(UErrorCode &status) { |
499 return MeasureUnit::create(1, 1, status); | 519 return MeasureUnit::create(1, 1, status); |
500 } | 520 } |
501 | 521 |
502 MeasureUnit *MeasureUnit::createDegree(UErrorCode &status) { | 522 MeasureUnit *MeasureUnit::createDegree(UErrorCode &status) { |
503 return MeasureUnit::create(1, 2, status); | 523 return MeasureUnit::create(1, 2, status); |
504 } | 524 } |
505 | 525 |
506 MeasureUnit *MeasureUnit::createRadian(UErrorCode &status) { | 526 MeasureUnit *MeasureUnit::createRadian(UErrorCode &status) { |
507 return MeasureUnit::create(1, 3, status); | 527 return MeasureUnit::create(1, 3, status); |
508 } | 528 } |
509 | 529 |
| 530 MeasureUnit *MeasureUnit::createRevolutionAngle(UErrorCode &status) { |
| 531 return MeasureUnit::create(1, 4, status); |
| 532 } |
| 533 |
510 MeasureUnit *MeasureUnit::createAcre(UErrorCode &status) { | 534 MeasureUnit *MeasureUnit::createAcre(UErrorCode &status) { |
511 return MeasureUnit::create(2, 0, status); | 535 return MeasureUnit::create(2, 0, status); |
512 } | 536 } |
513 | 537 |
514 MeasureUnit *MeasureUnit::createHectare(UErrorCode &status) { | 538 MeasureUnit *MeasureUnit::createHectare(UErrorCode &status) { |
515 return MeasureUnit::create(2, 1, status); | 539 return MeasureUnit::create(2, 1, status); |
516 } | 540 } |
517 | 541 |
518 MeasureUnit *MeasureUnit::createSquareCentimeter(UErrorCode &status) { | 542 MeasureUnit *MeasureUnit::createSquareCentimeter(UErrorCode &status) { |
519 return MeasureUnit::create(2, 2, status); | 543 return MeasureUnit::create(2, 2, status); |
(...skipping 16 matching lines...) Expand all Loading... |
536 } | 560 } |
537 | 561 |
538 MeasureUnit *MeasureUnit::createSquareMile(UErrorCode &status) { | 562 MeasureUnit *MeasureUnit::createSquareMile(UErrorCode &status) { |
539 return MeasureUnit::create(2, 7, status); | 563 return MeasureUnit::create(2, 7, status); |
540 } | 564 } |
541 | 565 |
542 MeasureUnit *MeasureUnit::createSquareYard(UErrorCode &status) { | 566 MeasureUnit *MeasureUnit::createSquareYard(UErrorCode &status) { |
543 return MeasureUnit::create(2, 8, status); | 567 return MeasureUnit::create(2, 8, status); |
544 } | 568 } |
545 | 569 |
546 MeasureUnit *MeasureUnit::createLiterPerKilometer(UErrorCode &status) { | 570 MeasureUnit *MeasureUnit::createLiterPer100Kilometers(UErrorCode &status) { |
547 return MeasureUnit::create(3, 0, status); | 571 return MeasureUnit::create(3, 0, status); |
548 } | 572 } |
549 | 573 |
| 574 MeasureUnit *MeasureUnit::createLiterPerKilometer(UErrorCode &status) { |
| 575 return MeasureUnit::create(3, 1, status); |
| 576 } |
| 577 |
550 MeasureUnit *MeasureUnit::createMilePerGallon(UErrorCode &status) { | 578 MeasureUnit *MeasureUnit::createMilePerGallon(UErrorCode &status) { |
551 return MeasureUnit::create(3, 1, status); | 579 return MeasureUnit::create(3, 2, status); |
552 } | 580 } |
553 | 581 |
554 MeasureUnit *MeasureUnit::createBit(UErrorCode &status) { | 582 MeasureUnit *MeasureUnit::createBit(UErrorCode &status) { |
555 return MeasureUnit::create(5, 0, status); | 583 return MeasureUnit::create(5, 0, status); |
556 } | 584 } |
557 | 585 |
558 MeasureUnit *MeasureUnit::createByte(UErrorCode &status) { | 586 MeasureUnit *MeasureUnit::createByte(UErrorCode &status) { |
559 return MeasureUnit::create(5, 1, status); | 587 return MeasureUnit::create(5, 1, status); |
560 } | 588 } |
561 | 589 |
(...skipping 22 matching lines...) Expand all Loading... |
584 } | 612 } |
585 | 613 |
586 MeasureUnit *MeasureUnit::createTerabit(UErrorCode &status) { | 614 MeasureUnit *MeasureUnit::createTerabit(UErrorCode &status) { |
587 return MeasureUnit::create(5, 8, status); | 615 return MeasureUnit::create(5, 8, status); |
588 } | 616 } |
589 | 617 |
590 MeasureUnit *MeasureUnit::createTerabyte(UErrorCode &status) { | 618 MeasureUnit *MeasureUnit::createTerabyte(UErrorCode &status) { |
591 return MeasureUnit::create(5, 9, status); | 619 return MeasureUnit::create(5, 9, status); |
592 } | 620 } |
593 | 621 |
594 MeasureUnit *MeasureUnit::createDay(UErrorCode &status) { | 622 MeasureUnit *MeasureUnit::createCentury(UErrorCode &status) { |
595 return MeasureUnit::create(6, 0, status); | 623 return MeasureUnit::create(6, 0, status); |
596 } | 624 } |
597 | 625 |
598 MeasureUnit *MeasureUnit::createHour(UErrorCode &status) { | 626 MeasureUnit *MeasureUnit::createDay(UErrorCode &status) { |
599 return MeasureUnit::create(6, 1, status); | 627 return MeasureUnit::create(6, 1, status); |
600 } | 628 } |
601 | 629 |
602 MeasureUnit *MeasureUnit::createMicrosecond(UErrorCode &status) { | 630 MeasureUnit *MeasureUnit::createHour(UErrorCode &status) { |
603 return MeasureUnit::create(6, 2, status); | 631 return MeasureUnit::create(6, 2, status); |
604 } | 632 } |
605 | 633 |
606 MeasureUnit *MeasureUnit::createMillisecond(UErrorCode &status) { | 634 MeasureUnit *MeasureUnit::createMicrosecond(UErrorCode &status) { |
607 return MeasureUnit::create(6, 3, status); | 635 return MeasureUnit::create(6, 3, status); |
608 } | 636 } |
609 | 637 |
610 MeasureUnit *MeasureUnit::createMinute(UErrorCode &status) { | 638 MeasureUnit *MeasureUnit::createMillisecond(UErrorCode &status) { |
611 return MeasureUnit::create(6, 4, status); | 639 return MeasureUnit::create(6, 4, status); |
612 } | 640 } |
613 | 641 |
614 MeasureUnit *MeasureUnit::createMonth(UErrorCode &status) { | 642 MeasureUnit *MeasureUnit::createMinute(UErrorCode &status) { |
615 return MeasureUnit::create(6, 5, status); | 643 return MeasureUnit::create(6, 5, status); |
616 } | 644 } |
617 | 645 |
618 MeasureUnit *MeasureUnit::createNanosecond(UErrorCode &status) { | 646 MeasureUnit *MeasureUnit::createMonth(UErrorCode &status) { |
619 return MeasureUnit::create(6, 6, status); | 647 return MeasureUnit::create(6, 6, status); |
620 } | 648 } |
621 | 649 |
622 MeasureUnit *MeasureUnit::createSecond(UErrorCode &status) { | 650 MeasureUnit *MeasureUnit::createNanosecond(UErrorCode &status) { |
623 return MeasureUnit::create(6, 7, status); | 651 return MeasureUnit::create(6, 7, status); |
624 } | 652 } |
625 | 653 |
626 MeasureUnit *MeasureUnit::createWeek(UErrorCode &status) { | 654 MeasureUnit *MeasureUnit::createSecond(UErrorCode &status) { |
627 return MeasureUnit::create(6, 8, status); | 655 return MeasureUnit::create(6, 8, status); |
628 } | 656 } |
629 | 657 |
| 658 MeasureUnit *MeasureUnit::createWeek(UErrorCode &status) { |
| 659 return MeasureUnit::create(6, 9, status); |
| 660 } |
| 661 |
630 MeasureUnit *MeasureUnit::createYear(UErrorCode &status) { | 662 MeasureUnit *MeasureUnit::createYear(UErrorCode &status) { |
631 return MeasureUnit::create(6, 9, status); | 663 return MeasureUnit::create(6, 10, status); |
632 } | 664 } |
633 | 665 |
634 MeasureUnit *MeasureUnit::createAmpere(UErrorCode &status) { | 666 MeasureUnit *MeasureUnit::createAmpere(UErrorCode &status) { |
635 return MeasureUnit::create(7, 0, status); | 667 return MeasureUnit::create(7, 0, status); |
636 } | 668 } |
637 | 669 |
638 MeasureUnit *MeasureUnit::createMilliampere(UErrorCode &status) { | 670 MeasureUnit *MeasureUnit::createMilliampere(UErrorCode &status) { |
639 return MeasureUnit::create(7, 1, status); | 671 return MeasureUnit::create(7, 1, status); |
640 } | 672 } |
641 | 673 |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
728 } | 760 } |
729 | 761 |
730 MeasureUnit *MeasureUnit::createMicrometer(UErrorCode &status) { | 762 MeasureUnit *MeasureUnit::createMicrometer(UErrorCode &status) { |
731 return MeasureUnit::create(10, 10, status); | 763 return MeasureUnit::create(10, 10, status); |
732 } | 764 } |
733 | 765 |
734 MeasureUnit *MeasureUnit::createMile(UErrorCode &status) { | 766 MeasureUnit *MeasureUnit::createMile(UErrorCode &status) { |
735 return MeasureUnit::create(10, 11, status); | 767 return MeasureUnit::create(10, 11, status); |
736 } | 768 } |
737 | 769 |
738 MeasureUnit *MeasureUnit::createMillimeter(UErrorCode &status) { | 770 MeasureUnit *MeasureUnit::createMileScandinavian(UErrorCode &status) { |
739 return MeasureUnit::create(10, 12, status); | 771 return MeasureUnit::create(10, 12, status); |
740 } | 772 } |
741 | 773 |
742 MeasureUnit *MeasureUnit::createNanometer(UErrorCode &status) { | 774 MeasureUnit *MeasureUnit::createMillimeter(UErrorCode &status) { |
743 return MeasureUnit::create(10, 13, status); | 775 return MeasureUnit::create(10, 13, status); |
744 } | 776 } |
745 | 777 |
746 MeasureUnit *MeasureUnit::createNauticalMile(UErrorCode &status) { | 778 MeasureUnit *MeasureUnit::createNanometer(UErrorCode &status) { |
747 return MeasureUnit::create(10, 14, status); | 779 return MeasureUnit::create(10, 14, status); |
748 } | 780 } |
749 | 781 |
750 MeasureUnit *MeasureUnit::createParsec(UErrorCode &status) { | 782 MeasureUnit *MeasureUnit::createNauticalMile(UErrorCode &status) { |
751 return MeasureUnit::create(10, 15, status); | 783 return MeasureUnit::create(10, 15, status); |
752 } | 784 } |
753 | 785 |
754 MeasureUnit *MeasureUnit::createPicometer(UErrorCode &status) { | 786 MeasureUnit *MeasureUnit::createParsec(UErrorCode &status) { |
755 return MeasureUnit::create(10, 16, status); | 787 return MeasureUnit::create(10, 16, status); |
756 } | 788 } |
757 | 789 |
| 790 MeasureUnit *MeasureUnit::createPicometer(UErrorCode &status) { |
| 791 return MeasureUnit::create(10, 17, status); |
| 792 } |
| 793 |
758 MeasureUnit *MeasureUnit::createYard(UErrorCode &status) { | 794 MeasureUnit *MeasureUnit::createYard(UErrorCode &status) { |
759 return MeasureUnit::create(10, 17, status); | 795 return MeasureUnit::create(10, 18, status); |
760 } | 796 } |
761 | 797 |
762 MeasureUnit *MeasureUnit::createLux(UErrorCode &status) { | 798 MeasureUnit *MeasureUnit::createLux(UErrorCode &status) { |
763 return MeasureUnit::create(11, 0, status); | 799 return MeasureUnit::create(11, 0, status); |
764 } | 800 } |
765 | 801 |
766 MeasureUnit *MeasureUnit::createCarat(UErrorCode &status) { | 802 MeasureUnit *MeasureUnit::createCarat(UErrorCode &status) { |
767 return MeasureUnit::create(12, 0, status); | 803 return MeasureUnit::create(12, 0, status); |
768 } | 804 } |
769 | 805 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
852 } | 888 } |
853 | 889 |
854 MeasureUnit *MeasureUnit::createKarat(UErrorCode &status) { | 890 MeasureUnit *MeasureUnit::createKarat(UErrorCode &status) { |
855 return MeasureUnit::create(15, 0, status); | 891 return MeasureUnit::create(15, 0, status); |
856 } | 892 } |
857 | 893 |
858 MeasureUnit *MeasureUnit::createKilometerPerHour(UErrorCode &status) { | 894 MeasureUnit *MeasureUnit::createKilometerPerHour(UErrorCode &status) { |
859 return MeasureUnit::create(16, 0, status); | 895 return MeasureUnit::create(16, 0, status); |
860 } | 896 } |
861 | 897 |
862 MeasureUnit *MeasureUnit::createMeterPerSecond(UErrorCode &status) { | 898 MeasureUnit *MeasureUnit::createKnot(UErrorCode &status) { |
863 return MeasureUnit::create(16, 1, status); | 899 return MeasureUnit::create(16, 1, status); |
864 } | 900 } |
865 | 901 |
| 902 MeasureUnit *MeasureUnit::createMeterPerSecond(UErrorCode &status) { |
| 903 return MeasureUnit::create(16, 2, status); |
| 904 } |
| 905 |
866 MeasureUnit *MeasureUnit::createMilePerHour(UErrorCode &status) { | 906 MeasureUnit *MeasureUnit::createMilePerHour(UErrorCode &status) { |
867 return MeasureUnit::create(16, 2, status); | 907 return MeasureUnit::create(16, 3, status); |
868 } | 908 } |
869 | 909 |
870 MeasureUnit *MeasureUnit::createCelsius(UErrorCode &status) { | 910 MeasureUnit *MeasureUnit::createCelsius(UErrorCode &status) { |
871 return MeasureUnit::create(17, 0, status); | 911 return MeasureUnit::create(17, 0, status); |
872 } | 912 } |
873 | 913 |
874 MeasureUnit *MeasureUnit::createFahrenheit(UErrorCode &status) { | 914 MeasureUnit *MeasureUnit::createFahrenheit(UErrorCode &status) { |
875 return MeasureUnit::create(17, 1, status); | 915 return MeasureUnit::create(17, 1, status); |
876 } | 916 } |
877 | 917 |
| 918 MeasureUnit *MeasureUnit::createGenericTemperature(UErrorCode &status) { |
| 919 return MeasureUnit::create(17, 2, status); |
| 920 } |
| 921 |
878 MeasureUnit *MeasureUnit::createKelvin(UErrorCode &status) { | 922 MeasureUnit *MeasureUnit::createKelvin(UErrorCode &status) { |
879 return MeasureUnit::create(17, 2, status); | 923 return MeasureUnit::create(17, 3, status); |
880 } | 924 } |
881 | 925 |
882 MeasureUnit *MeasureUnit::createAcreFoot(UErrorCode &status) { | 926 MeasureUnit *MeasureUnit::createAcreFoot(UErrorCode &status) { |
883 return MeasureUnit::create(18, 0, status); | 927 return MeasureUnit::create(18, 0, status); |
884 } | 928 } |
885 | 929 |
886 MeasureUnit *MeasureUnit::createBushel(UErrorCode &status) { | 930 MeasureUnit *MeasureUnit::createBushel(UErrorCode &status) { |
887 return MeasureUnit::create(18, 1, status); | 931 return MeasureUnit::create(18, 1, status); |
888 } | 932 } |
889 | 933 |
(...skipping 26 matching lines...) Expand all Loading... |
916 } | 960 } |
917 | 961 |
918 MeasureUnit *MeasureUnit::createCubicYard(UErrorCode &status) { | 962 MeasureUnit *MeasureUnit::createCubicYard(UErrorCode &status) { |
919 return MeasureUnit::create(18, 9, status); | 963 return MeasureUnit::create(18, 9, status); |
920 } | 964 } |
921 | 965 |
922 MeasureUnit *MeasureUnit::createCup(UErrorCode &status) { | 966 MeasureUnit *MeasureUnit::createCup(UErrorCode &status) { |
923 return MeasureUnit::create(18, 10, status); | 967 return MeasureUnit::create(18, 10, status); |
924 } | 968 } |
925 | 969 |
926 MeasureUnit *MeasureUnit::createDeciliter(UErrorCode &status) { | 970 MeasureUnit *MeasureUnit::createCupMetric(UErrorCode &status) { |
927 return MeasureUnit::create(18, 11, status); | 971 return MeasureUnit::create(18, 11, status); |
928 } | 972 } |
929 | 973 |
930 MeasureUnit *MeasureUnit::createFluidOunce(UErrorCode &status) { | 974 MeasureUnit *MeasureUnit::createDeciliter(UErrorCode &status) { |
931 return MeasureUnit::create(18, 12, status); | 975 return MeasureUnit::create(18, 12, status); |
932 } | 976 } |
933 | 977 |
934 MeasureUnit *MeasureUnit::createGallon(UErrorCode &status) { | 978 MeasureUnit *MeasureUnit::createFluidOunce(UErrorCode &status) { |
935 return MeasureUnit::create(18, 13, status); | 979 return MeasureUnit::create(18, 13, status); |
936 } | 980 } |
937 | 981 |
938 MeasureUnit *MeasureUnit::createHectoliter(UErrorCode &status) { | 982 MeasureUnit *MeasureUnit::createGallon(UErrorCode &status) { |
939 return MeasureUnit::create(18, 14, status); | 983 return MeasureUnit::create(18, 14, status); |
940 } | 984 } |
941 | 985 |
942 MeasureUnit *MeasureUnit::createLiter(UErrorCode &status) { | 986 MeasureUnit *MeasureUnit::createHectoliter(UErrorCode &status) { |
943 return MeasureUnit::create(18, 15, status); | 987 return MeasureUnit::create(18, 15, status); |
944 } | 988 } |
945 | 989 |
946 MeasureUnit *MeasureUnit::createMegaliter(UErrorCode &status) { | 990 MeasureUnit *MeasureUnit::createLiter(UErrorCode &status) { |
947 return MeasureUnit::create(18, 16, status); | 991 return MeasureUnit::create(18, 16, status); |
948 } | 992 } |
949 | 993 |
950 MeasureUnit *MeasureUnit::createMilliliter(UErrorCode &status) { | 994 MeasureUnit *MeasureUnit::createMegaliter(UErrorCode &status) { |
951 return MeasureUnit::create(18, 17, status); | 995 return MeasureUnit::create(18, 17, status); |
952 } | 996 } |
953 | 997 |
954 MeasureUnit *MeasureUnit::createPint(UErrorCode &status) { | 998 MeasureUnit *MeasureUnit::createMilliliter(UErrorCode &status) { |
955 return MeasureUnit::create(18, 18, status); | 999 return MeasureUnit::create(18, 18, status); |
956 } | 1000 } |
957 | 1001 |
958 MeasureUnit *MeasureUnit::createQuart(UErrorCode &status) { | 1002 MeasureUnit *MeasureUnit::createPint(UErrorCode &status) { |
959 return MeasureUnit::create(18, 19, status); | 1003 return MeasureUnit::create(18, 19, status); |
960 } | 1004 } |
961 | 1005 |
962 MeasureUnit *MeasureUnit::createTablespoon(UErrorCode &status) { | 1006 MeasureUnit *MeasureUnit::createPintMetric(UErrorCode &status) { |
963 return MeasureUnit::create(18, 20, status); | 1007 return MeasureUnit::create(18, 20, status); |
964 } | 1008 } |
965 | 1009 |
| 1010 MeasureUnit *MeasureUnit::createQuart(UErrorCode &status) { |
| 1011 return MeasureUnit::create(18, 21, status); |
| 1012 } |
| 1013 |
| 1014 MeasureUnit *MeasureUnit::createTablespoon(UErrorCode &status) { |
| 1015 return MeasureUnit::create(18, 22, status); |
| 1016 } |
| 1017 |
966 MeasureUnit *MeasureUnit::createTeaspoon(UErrorCode &status) { | 1018 MeasureUnit *MeasureUnit::createTeaspoon(UErrorCode &status) { |
967 return MeasureUnit::create(18, 21, status); | 1019 return MeasureUnit::create(18, 23, status); |
968 } | 1020 } |
969 | 1021 |
970 // End generated code | 1022 // End generated code |
971 | 1023 |
972 static int32_t binarySearch( | 1024 static int32_t binarySearch( |
973 const char * const * array, int32_t start, int32_t end, const char * key
) { | 1025 const char * const * array, int32_t start, int32_t end, const char * key
) { |
974 while (start < end) { | 1026 while (start < end) { |
975 int32_t mid = (start + end) / 2; | 1027 int32_t mid = (start + end) / 2; |
976 int32_t cmp = uprv_strcmp(array[mid], key); | 1028 int32_t cmp = uprv_strcmp(array[mid], key); |
977 if (cmp < 0) { | 1029 if (cmp < 0) { |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1093 uenum_close(uenum); | 1145 uenum_close(uenum); |
1094 return NULL; | 1146 return NULL; |
1095 } | 1147 } |
1096 return result; | 1148 return result; |
1097 } | 1149 } |
1098 | 1150 |
1099 int32_t MeasureUnit::getIndexCount() { | 1151 int32_t MeasureUnit::getIndexCount() { |
1100 return gIndexes[UPRV_LENGTHOF(gIndexes) - 1]; | 1152 return gIndexes[UPRV_LENGTHOF(gIndexes) - 1]; |
1101 } | 1153 } |
1102 | 1154 |
| 1155 MeasureUnit *MeasureUnit::resolveUnitPerUnit( |
| 1156 const MeasureUnit &unit, const MeasureUnit &perUnit) { |
| 1157 int32_t unitOffset = unit.getOffset(); |
| 1158 int32_t perUnitOffset = perUnit.getOffset(); |
| 1159 |
| 1160 // binary search for (unitOffset, perUnitOffset) |
| 1161 int32_t start = 0; |
| 1162 int32_t end = UPRV_LENGTHOF(unitPerUnitToSingleUnit); |
| 1163 while (start < end) { |
| 1164 int32_t mid = (start + end) / 2; |
| 1165 int32_t *midRow = unitPerUnitToSingleUnit[mid]; |
| 1166 if (unitOffset < midRow[0]) { |
| 1167 end = mid; |
| 1168 } else if (unitOffset > midRow[0]) { |
| 1169 start = mid + 1; |
| 1170 } else if (perUnitOffset < midRow[1]) { |
| 1171 end = mid; |
| 1172 } else if (perUnitOffset > midRow[1]) { |
| 1173 start = mid + 1; |
| 1174 } else { |
| 1175 // We found a resolution for our unit / per-unit combo |
| 1176 // return it. |
| 1177 return new MeasureUnit(midRow[2], midRow[3]); |
| 1178 } |
| 1179 } |
| 1180 return NULL; |
| 1181 } |
| 1182 |
1103 MeasureUnit *MeasureUnit::create(int typeId, int subTypeId, UErrorCode &status)
{ | 1183 MeasureUnit *MeasureUnit::create(int typeId, int subTypeId, UErrorCode &status)
{ |
1104 if (U_FAILURE(status)) { | 1184 if (U_FAILURE(status)) { |
1105 return NULL; | 1185 return NULL; |
1106 } | 1186 } |
1107 MeasureUnit *result = new MeasureUnit(typeId, subTypeId); | 1187 MeasureUnit *result = new MeasureUnit(typeId, subTypeId); |
1108 if (result == NULL) { | 1188 if (result == NULL) { |
1109 status = U_MEMORY_ALLOCATION_ERROR; | 1189 status = U_MEMORY_ALLOCATION_ERROR; |
1110 } | 1190 } |
1111 return result; | 1191 return result; |
1112 } | 1192 } |
(...skipping 26 matching lines...) Expand all Loading... |
1139 fCurrency[0] = 0; | 1219 fCurrency[0] = 0; |
1140 } | 1220 } |
1141 | 1221 |
1142 int32_t MeasureUnit::getOffset() const { | 1222 int32_t MeasureUnit::getOffset() const { |
1143 return gOffsets[fTypeId] + fSubTypeId; | 1223 return gOffsets[fTypeId] + fSubTypeId; |
1144 } | 1224 } |
1145 | 1225 |
1146 U_NAMESPACE_END | 1226 U_NAMESPACE_END |
1147 | 1227 |
1148 #endif /* !UNCONFIG_NO_FORMATTING */ | 1228 #endif /* !UNCONFIG_NO_FORMATTING */ |
OLD | NEW |