1 /* 2 ********************************************************************** 3 * Copyright (c) 2004-2015, 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 #ifndef __MEASUREUNIT_H__ 12 #define __MEASUREUNIT_H__ 13 14 #include "unicode/utypes.h" 15 16 #if !UCONFIG_NO_FORMATTING 17 18 #include "unicode/unistr.h" 19 20 /** 21 * \file 22 * \brief C++ API: A unit for measuring a quantity. 23 */ 24 25 U_NAMESPACE_BEGIN 26 27 class StringEnumeration; 28 29 /** 30 * A unit such as length, mass, volume, currency, etc. A unit is 31 * coupled with a numeric amount to produce a Measure. 32 * 33 * @author Alan Liu 34 * @stable ICU 3.0 35 */ 36 class U_I18N_API MeasureUnit: public UObject { 37 public: 38 39 /** 40 * Default constructor. 41 * @stable ICU 3.0 42 */ 43 MeasureUnit() : fTypeId(0), fSubTypeId(0) { 44 fCurrency[0] = 0; 45 } 46 47 /** 48 * Copy constructor. 49 * @stable ICU 3.0 50 */ 51 MeasureUnit(const MeasureUnit &other); 52 53 /** 54 * Assignment operator. 55 * @stable ICU 3.0 56 */ 57 MeasureUnit &operator=(const MeasureUnit &other); 58 59 /** 60 * Returns a polymorphic clone of this object. The result will 61 * have the same class as returned by getDynamicClassID(). 62 * @stable ICU 3.0 63 */ 64 virtual UObject* clone() const; 65 66 /** 67 * Destructor 68 * @stable ICU 3.0 69 */ 70 virtual ~MeasureUnit(); 71 72 /** 73 * Equality operator. Return true if this object is equal 74 * to the given object. 75 * @stable ICU 3.0 76 */ 77 virtual UBool operator==(const UObject& other) const; 78 79 /** 80 * Inequality operator. Return true if this object is not equal 81 * to the given object. 82 * @stable ICU 53 83 */ 84 UBool operator!=(const UObject& other) const { 85 return !(*this == other); 86 } 87 88 /** 89 * Get the type. 90 * @stable ICU 53 91 */ 92 const char *getType() const; 93 94 /** 95 * Get the sub type. 96 * @stable ICU 53 97 */ 98 const char *getSubtype() const; 99 100 /** 101 * getAvailable gets all of the available units. 102 * If there are too many units to fit into destCapacity then the 103 * error code is set to U_BUFFER_OVERFLOW_ERROR. 104 * 105 * @param destArray destination buffer. 106 * @param destCapacity number of MeasureUnit instances available at dest. 107 * @param errorCode ICU error code. 108 * @return number of available units. 109 * @stable ICU 53 110 */ 111 static int32_t getAvailable( 112 MeasureUnit *destArray, 113 int32_t destCapacity, 114 UErrorCode &errorCode); 115 116 /** 117 * getAvailable gets all of the available units for a specific type. 118 * If there are too many units to fit into destCapacity then the 119 * error code is set to U_BUFFER_OVERFLOW_ERROR. 120 * 121 * @param type the type 122 * @param destArray destination buffer. 123 * @param destCapacity number of MeasureUnit instances available at dest. 124 * @param errorCode ICU error code. 125 * @return number of available units for type. 126 * @stable ICU 53 127 */ 128 static int32_t getAvailable( 129 const char *type, 130 MeasureUnit *destArray, 131 int32_t destCapacity, 132 UErrorCode &errorCode); 133 134 /** 135 * getAvailableTypes gets all of the available types. Caller owns the 136 * returned StringEnumeration and must delete it when finished using it. 137 * 138 * @param errorCode ICU error code. 139 * @return the types. 140 * @stable ICU 53 141 */ 142 static StringEnumeration* getAvailableTypes(UErrorCode &errorCode); 143 144 /** 145 * Return the class ID for this class. This is useful only for comparing to 146 * a return value from getDynamicClassID(). For example: 147 * <pre> 148 * . Base* polymorphic_pointer = createPolymorphicObject(); 149 * . if (polymorphic_pointer->getDynamicClassID() == 150 * . erived::getStaticClassID()) ... 151 * </pre> 152 * @return The class ID for all objects of this class. 153 * @stable ICU 53 154 */ 155 static UClassID U_EXPORT2 getStaticClassID(void); 156 157 /** 158 * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This 159 * method is to implement a simple version of RTTI, since not all C++ 160 * compilers support genuine RTTI. Polymorphic operator==() and clone() 161 * methods call this method. 162 * 163 * @return The class ID for this object. All objects of a 164 * given class have the same class ID. Objects of 165 * other classes have different class IDs. 166 * @stable ICU 53 167 */ 168 virtual UClassID getDynamicClassID(void) const; 169 170 #ifndef U_HIDE_INTERNAL_API 171 /** 172 * ICU use only. 173 * Returns associated array index for this measure unit. Only valid for 174 * non-currency measure units. 175 * @internal 176 */ 177 int32_t getIndex() const; 178 179 /** 180 * ICU use only. 181 * Returns maximum value from getIndex plus 1. 182 * @internal 183 */ 184 static int32_t getIndexCount(); 185 186 /** 187 * ICU use only. 188 * @return the unit.getIndex() of the unit which has this unit.getType() and unit.getSubtype(), 189 * or a negative value if there is no such unit 190 * @internal 191 */ 192 static int32_t internalGetIndexForTypeAndSubtype(const char *type, const char *subtype); 193 194 /** 195 * ICU use only. 196 * @internal 197 */ 198 static MeasureUnit *resolveUnitPerUnit( 199 const MeasureUnit &unit, const MeasureUnit &perUnit); 200 #endif /* U_HIDE_INTERNAL_API */ 201 202 // All code between the "Start generated createXXX methods" comment and 203 // the "End generated createXXX methods" comment is auto generated code 204 // and must not be edited manually. For instructions on how to correctly 205 // update this code, refer to: 206 // http://site.icu-project.org/design/formatting/measureformat/updating-measure-unit 207 // 208 // Start generated createXXX methods 209 210 /** 211 * Returns unit of acceleration: g-force. 212 * Caller owns returned value and must free it. 213 * @param status ICU error code. 214 * @stable ICU 53 215 */ 216 static MeasureUnit *createGForce(UErrorCode &status); 217 218 /** 219 * Returns unit of acceleration: meter-per-second-squared. 220 * Caller owns returned value and must free it. 221 * @param status ICU error code. 222 * @stable ICU 54 223 */ 224 static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status); 225 226 /** 227 * Returns unit of angle: arc-minute. 228 * Caller owns returned value and must free it. 229 * @param status ICU error code. 230 * @stable ICU 53 231 */ 232 static MeasureUnit *createArcMinute(UErrorCode &status); 233 234 /** 235 * Returns unit of angle: arc-second. 236 * Caller owns returned value and must free it. 237 * @param status ICU error code. 238 * @stable ICU 53 239 */ 240 static MeasureUnit *createArcSecond(UErrorCode &status); 241 242 /** 243 * Returns unit of angle: degree. 244 * Caller owns returned value and must free it. 245 * @param status ICU error code. 246 * @stable ICU 53 247 */ 248 static MeasureUnit *createDegree(UErrorCode &status); 249 250 /** 251 * Returns unit of angle: radian. 252 * Caller owns returned value and must free it. 253 * @param status ICU error code. 254 * @stable ICU 54 255 */ 256 static MeasureUnit *createRadian(UErrorCode &status); 257 258 #ifndef U_HIDE_DRAFT_API 259 /** 260 * Returns unit of angle: revolution. 261 * Caller owns returned value and must free it. 262 * @param status ICU error code. 263 * @draft ICU 56 264 */ 265 static MeasureUnit *createRevolutionAngle(UErrorCode &status); 266 #endif /* U_HIDE_DRAFT_API */ 267 268 /** 269 * Returns unit of area: acre. 270 * Caller owns returned value and must free it. 271 * @param status ICU error code. 272 * @stable ICU 53 273 */ 274 static MeasureUnit *createAcre(UErrorCode &status); 275 276 /** 277 * Returns unit of area: hectare. 278 * Caller owns returned value and must free it. 279 * @param status ICU error code. 280 * @stable ICU 53 281 */ 282 static MeasureUnit *createHectare(UErrorCode &status); 283 284 /** 285 * Returns unit of area: square-centimeter. 286 * Caller owns returned value and must free it. 287 * @param status ICU error code. 288 * @stable ICU 54 289 */ 290 static MeasureUnit *createSquareCentimeter(UErrorCode &status); 291 292 /** 293 * Returns unit of area: square-foot. 294 * Caller owns returned value and must free it. 295 * @param status ICU error code. 296 * @stable ICU 53 297 */ 298 static MeasureUnit *createSquareFoot(UErrorCode &status); 299 300 /** 301 * Returns unit of area: square-inch. 302 * Caller owns returned value and must free it. 303 * @param status ICU error code. 304 * @stable ICU 54 305 */ 306 static MeasureUnit *createSquareInch(UErrorCode &status); 307 308 /** 309 * Returns unit of area: square-kilometer. 310 * Caller owns returned value and must free it. 311 * @param status ICU error code. 312 * @stable ICU 53 313 */ 314 static MeasureUnit *createSquareKilometer(UErrorCode &status); 315 316 /** 317 * Returns unit of area: square-meter. 318 * Caller owns returned value and must free it. 319 * @param status ICU error code. 320 * @stable ICU 53 321 */ 322 static MeasureUnit *createSquareMeter(UErrorCode &status); 323 324 /** 325 * Returns unit of area: square-mile. 326 * Caller owns returned value and must free it. 327 * @param status ICU error code. 328 * @stable ICU 53 329 */ 330 static MeasureUnit *createSquareMile(UErrorCode &status); 331 332 /** 333 * Returns unit of area: square-yard. 334 * Caller owns returned value and must free it. 335 * @param status ICU error code. 336 * @stable ICU 54 337 */ 338 static MeasureUnit *createSquareYard(UErrorCode &status); 339 340 #ifndef U_HIDE_DRAFT_API 341 /** 342 * Returns unit of consumption: liter-per-100kilometers. 343 * Caller owns returned value and must free it. 344 * @param status ICU error code. 345 * @draft ICU 56 346 */ 347 static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status); 348 #endif /* U_HIDE_DRAFT_API */ 349 350 /** 351 * Returns unit of consumption: liter-per-kilometer. 352 * Caller owns returned value and must free it. 353 * @param status ICU error code. 354 * @stable ICU 54 355 */ 356 static MeasureUnit *createLiterPerKilometer(UErrorCode &status); 357 358 /** 359 * Returns unit of consumption: mile-per-gallon. 360 * Caller owns returned value and must free it. 361 * @param status ICU error code. 362 * @stable ICU 54 363 */ 364 static MeasureUnit *createMilePerGallon(UErrorCode &status); 365 366 /** 367 * Returns unit of digital: bit. 368 * Caller owns returned value and must free it. 369 * @param status ICU error code. 370 * @stable ICU 54 371 */ 372 static MeasureUnit *createBit(UErrorCode &status); 373 374 /** 375 * Returns unit of digital: byte. 376 * Caller owns returned value and must free it. 377 * @param status ICU error code. 378 * @stable ICU 54 379 */ 380 static MeasureUnit *createByte(UErrorCode &status); 381 382 /** 383 * Returns unit of digital: gigabit. 384 * Caller owns returned value and must free it. 385 * @param status ICU error code. 386 * @stable ICU 54 387 */ 388 static MeasureUnit *createGigabit(UErrorCode &status); 389 390 /** 391 * Returns unit of digital: gigabyte. 392 * Caller owns returned value and must free it. 393 * @param status ICU error code. 394 * @stable ICU 54 395 */ 396 static MeasureUnit *createGigabyte(UErrorCode &status); 397 398 /** 399 * Returns unit of digital: kilobit. 400 * Caller owns returned value and must free it. 401 * @param status ICU error code. 402 * @stable ICU 54 403 */ 404 static MeasureUnit *createKilobit(UErrorCode &status); 405 406 /** 407 * Returns unit of digital: kilobyte. 408 * Caller owns returned value and must free it. 409 * @param status ICU error code. 410 * @stable ICU 54 411 */ 412 static MeasureUnit *createKilobyte(UErrorCode &status); 413 414 /** 415 * Returns unit of digital: megabit. 416 * Caller owns returned value and must free it. 417 * @param status ICU error code. 418 * @stable ICU 54 419 */ 420 static MeasureUnit *createMegabit(UErrorCode &status); 421 422 /** 423 * Returns unit of digital: megabyte. 424 * Caller owns returned value and must free it. 425 * @param status ICU error code. 426 * @stable ICU 54 427 */ 428 static MeasureUnit *createMegabyte(UErrorCode &status); 429 430 /** 431 * Returns unit of digital: terabit. 432 * Caller owns returned value and must free it. 433 * @param status ICU error code. 434 * @stable ICU 54 435 */ 436 static MeasureUnit *createTerabit(UErrorCode &status); 437 438 /** 439 * Returns unit of digital: terabyte. 440 * Caller owns returned value and must free it. 441 * @param status ICU error code. 442 * @stable ICU 54 443 */ 444 static MeasureUnit *createTerabyte(UErrorCode &status); 445 446 #ifndef U_HIDE_DRAFT_API 447 /** 448 * Returns unit of duration: century. 449 * Caller owns returned value and must free it. 450 * @param status ICU error code. 451 * @draft ICU 56 452 */ 453 static MeasureUnit *createCentury(UErrorCode &status); 454 #endif /* U_HIDE_DRAFT_API */ 455 456 /** 457 * Returns unit of duration: day. 458 * Caller owns returned value and must free it. 459 * @param status ICU error code. 460 * @stable ICU 53 461 */ 462 static MeasureUnit *createDay(UErrorCode &status); 463 464 /** 465 * Returns unit of duration: hour. 466 * Caller owns returned value and must free it. 467 * @param status ICU error code. 468 * @stable ICU 53 469 */ 470 static MeasureUnit *createHour(UErrorCode &status); 471 472 /** 473 * Returns unit of duration: microsecond. 474 * Caller owns returned value and must free it. 475 * @param status ICU error code. 476 * @stable ICU 54 477 */ 478 static MeasureUnit *createMicrosecond(UErrorCode &status); 479 480 /** 481 * Returns unit of duration: millisecond. 482 * Caller owns returned value and must free it. 483 * @param status ICU error code. 484 * @stable ICU 53 485 */ 486 static MeasureUnit *createMillisecond(UErrorCode &status); 487 488 /** 489 * Returns unit of duration: minute. 490 * Caller owns returned value and must free it. 491 * @param status ICU error code. 492 * @stable ICU 53 493 */ 494 static MeasureUnit *createMinute(UErrorCode &status); 495 496 /** 497 * Returns unit of duration: month. 498 * Caller owns returned value and must free it. 499 * @param status ICU error code. 500 * @stable ICU 53 501 */ 502 static MeasureUnit *createMonth(UErrorCode &status); 503 504 /** 505 * Returns unit of duration: nanosecond. 506 * Caller owns returned value and must free it. 507 * @param status ICU error code. 508 * @stable ICU 54 509 */ 510 static MeasureUnit *createNanosecond(UErrorCode &status); 511 512 /** 513 * Returns unit of duration: second. 514 * Caller owns returned value and must free it. 515 * @param status ICU error code. 516 * @stable ICU 53 517 */ 518 static MeasureUnit *createSecond(UErrorCode &status); 519 520 /** 521 * Returns unit of duration: week. 522 * Caller owns returned value and must free it. 523 * @param status ICU error code. 524 * @stable ICU 53 525 */ 526 static MeasureUnit *createWeek(UErrorCode &status); 527 528 /** 529 * Returns unit of duration: year. 530 * Caller owns returned value and must free it. 531 * @param status ICU error code. 532 * @stable ICU 53 533 */ 534 static MeasureUnit *createYear(UErrorCode &status); 535 536 /** 537 * Returns unit of electric: ampere. 538 * Caller owns returned value and must free it. 539 * @param status ICU error code. 540 * @stable ICU 54 541 */ 542 static MeasureUnit *createAmpere(UErrorCode &status); 543 544 /** 545 * Returns unit of electric: milliampere. 546 * Caller owns returned value and must free it. 547 * @param status ICU error code. 548 * @stable ICU 54 549 */ 550 static MeasureUnit *createMilliampere(UErrorCode &status); 551 552 /** 553 * Returns unit of electric: ohm. 554 * Caller owns returned value and must free it. 555 * @param status ICU error code. 556 * @stable ICU 54 557 */ 558 static MeasureUnit *createOhm(UErrorCode &status); 559 560 /** 561 * Returns unit of electric: volt. 562 * Caller owns returned value and must free it. 563 * @param status ICU error code. 564 * @stable ICU 54 565 */ 566 static MeasureUnit *createVolt(UErrorCode &status); 567 568 /** 569 * Returns unit of energy: calorie. 570 * Caller owns returned value and must free it. 571 * @param status ICU error code. 572 * @stable ICU 54 573 */ 574 static MeasureUnit *createCalorie(UErrorCode &status); 575 576 /** 577 * Returns unit of energy: foodcalorie. 578 * Caller owns returned value and must free it. 579 * @param status ICU error code. 580 * @stable ICU 54 581 */ 582 static MeasureUnit *createFoodcalorie(UErrorCode &status); 583 584 /** 585 * Returns unit of energy: joule. 586 * Caller owns returned value and must free it. 587 * @param status ICU error code. 588 * @stable ICU 54 589 */ 590 static MeasureUnit *createJoule(UErrorCode &status); 591 592 /** 593 * Returns unit of energy: kilocalorie. 594 * Caller owns returned value and must free it. 595 * @param status ICU error code. 596 * @stable ICU 54 597 */ 598 static MeasureUnit *createKilocalorie(UErrorCode &status); 599 600 /** 601 * Returns unit of energy: kilojoule. 602 * Caller owns returned value and must free it. 603 * @param status ICU error code. 604 * @stable ICU 54 605 */ 606 static MeasureUnit *createKilojoule(UErrorCode &status); 607 608 /** 609 * Returns unit of energy: kilowatt-hour. 610 * Caller owns returned value and must free it. 611 * @param status ICU error code. 612 * @stable ICU 54 613 */ 614 static MeasureUnit *createKilowattHour(UErrorCode &status); 615 616 /** 617 * Returns unit of frequency: gigahertz. 618 * Caller owns returned value and must free it. 619 * @param status ICU error code. 620 * @stable ICU 54 621 */ 622 static MeasureUnit *createGigahertz(UErrorCode &status); 623 624 /** 625 * Returns unit of frequency: hertz. 626 * Caller owns returned value and must free it. 627 * @param status ICU error code. 628 * @stable ICU 54 629 */ 630 static MeasureUnit *createHertz(UErrorCode &status); 631 632 /** 633 * Returns unit of frequency: kilohertz. 634 * Caller owns returned value and must free it. 635 * @param status ICU error code. 636 * @stable ICU 54 637 */ 638 static MeasureUnit *createKilohertz(UErrorCode &status); 639 640 /** 641 * Returns unit of frequency: megahertz. 642 * Caller owns returned value and must free it. 643 * @param status ICU error code. 644 * @stable ICU 54 645 */ 646 static MeasureUnit *createMegahertz(UErrorCode &status); 647 648 /** 649 * Returns unit of length: astronomical-unit. 650 * Caller owns returned value and must free it. 651 * @param status ICU error code. 652 * @stable ICU 54 653 */ 654 static MeasureUnit *createAstronomicalUnit(UErrorCode &status); 655 656 /** 657 * Returns unit of length: centimeter. 658 * Caller owns returned value and must free it. 659 * @param status ICU error code. 660 * @stable ICU 53 661 */ 662 static MeasureUnit *createCentimeter(UErrorCode &status); 663 664 /** 665 * Returns unit of length: decimeter. 666 * Caller owns returned value and must free it. 667 * @param status ICU error code. 668 * @stable ICU 54 669 */ 670 static MeasureUnit *createDecimeter(UErrorCode &status); 671 672 /** 673 * Returns unit of length: fathom. 674 * Caller owns returned value and must free it. 675 * @param status ICU error code. 676 * @stable ICU 54 677 */ 678 static MeasureUnit *createFathom(UErrorCode &status); 679 680 /** 681 * Returns unit of length: foot. 682 * Caller owns returned value and must free it. 683 * @param status ICU error code. 684 * @stable ICU 53 685 */ 686 static MeasureUnit *createFoot(UErrorCode &status); 687 688 /** 689 * Returns unit of length: furlong. 690 * Caller owns returned value and must free it. 691 * @param status ICU error code. 692 * @stable ICU 54 693 */ 694 static MeasureUnit *createFurlong(UErrorCode &status); 695 696 /** 697 * Returns unit of length: inch. 698 * Caller owns returned value and must free it. 699 * @param status ICU error code. 700 * @stable ICU 53 701 */ 702 static MeasureUnit *createInch(UErrorCode &status); 703 704 /** 705 * Returns unit of length: kilometer. 706 * Caller owns returned value and must free it. 707 * @param status ICU error code. 708 * @stable ICU 53 709 */ 710 static MeasureUnit *createKilometer(UErrorCode &status); 711 712 /** 713 * Returns unit of length: light-year. 714 * Caller owns returned value and must free it. 715 * @param status ICU error code. 716 * @stable ICU 53 717 */ 718 static MeasureUnit *createLightYear(UErrorCode &status); 719 720 /** 721 * Returns unit of length: meter. 722 * Caller owns returned value and must free it. 723 * @param status ICU error code. 724 * @stable ICU 53 725 */ 726 static MeasureUnit *createMeter(UErrorCode &status); 727 728 /** 729 * Returns unit of length: micrometer. 730 * Caller owns returned value and must free it. 731 * @param status ICU error code. 732 * @stable ICU 54 733 */ 734 static MeasureUnit *createMicrometer(UErrorCode &status); 735 736 /** 737 * Returns unit of length: mile. 738 * Caller owns returned value and must free it. 739 * @param status ICU error code. 740 * @stable ICU 53 741 */ 742 static MeasureUnit *createMile(UErrorCode &status); 743 744 #ifndef U_HIDE_DRAFT_API 745 /** 746 * Returns unit of length: mile-scandinavian. 747 * Caller owns returned value and must free it. 748 * @param status ICU error code. 749 * @draft ICU 56 750 */ 751 static MeasureUnit *createMileScandinavian(UErrorCode &status); 752 #endif /* U_HIDE_DRAFT_API */ 753 754 /** 755 * Returns unit of length: millimeter. 756 * Caller owns returned value and must free it. 757 * @param status ICU error code. 758 * @stable ICU 53 759 */ 760 static MeasureUnit *createMillimeter(UErrorCode &status); 761 762 /** 763 * Returns unit of length: nanometer. 764 * Caller owns returned value and must free it. 765 * @param status ICU error code. 766 * @stable ICU 54 767 */ 768 static MeasureUnit *createNanometer(UErrorCode &status); 769 770 /** 771 * Returns unit of length: nautical-mile. 772 * Caller owns returned value and must free it. 773 * @param status ICU error code. 774 * @stable ICU 54 775 */ 776 static MeasureUnit *createNauticalMile(UErrorCode &status); 777 778 /** 779 * Returns unit of length: parsec. 780 * Caller owns returned value and must free it. 781 * @param status ICU error code. 782 * @stable ICU 54 783 */ 784 static MeasureUnit *createParsec(UErrorCode &status); 785 786 /** 787 * Returns unit of length: picometer. 788 * Caller owns returned value and must free it. 789 * @param status ICU error code. 790 * @stable ICU 53 791 */ 792 static MeasureUnit *createPicometer(UErrorCode &status); 793 794 /** 795 * Returns unit of length: yard. 796 * Caller owns returned value and must free it. 797 * @param status ICU error code. 798 * @stable ICU 53 799 */ 800 static MeasureUnit *createYard(UErrorCode &status); 801 802 /** 803 * Returns unit of light: lux. 804 * Caller owns returned value and must free it. 805 * @param status ICU error code. 806 * @stable ICU 54 807 */ 808 static MeasureUnit *createLux(UErrorCode &status); 809 810 /** 811 * Returns unit of mass: carat. 812 * Caller owns returned value and must free it. 813 * @param status ICU error code. 814 * @stable ICU 54 815 */ 816 static MeasureUnit *createCarat(UErrorCode &status); 817 818 /** 819 * Returns unit of mass: gram. 820 * Caller owns returned value and must free it. 821 * @param status ICU error code. 822 * @stable ICU 53 823 */ 824 static MeasureUnit *createGram(UErrorCode &status); 825 826 /** 827 * Returns unit of mass: kilogram. 828 * Caller owns returned value and must free it. 829 * @param status ICU error code. 830 * @stable ICU 53 831 */ 832 static MeasureUnit *createKilogram(UErrorCode &status); 833 834 /** 835 * Returns unit of mass: metric-ton. 836 * Caller owns returned value and must free it. 837 * @param status ICU error code. 838 * @stable ICU 54 839 */ 840 static MeasureUnit *createMetricTon(UErrorCode &status); 841 842 /** 843 * Returns unit of mass: microgram. 844 * Caller owns returned value and must free it. 845 * @param status ICU error code. 846 * @stable ICU 54 847 */ 848 static MeasureUnit *createMicrogram(UErrorCode &status); 849 850 /** 851 * Returns unit of mass: milligram. 852 * Caller owns returned value and must free it. 853 * @param status ICU error code. 854 * @stable ICU 54 855 */ 856 static MeasureUnit *createMilligram(UErrorCode &status); 857 858 /** 859 * Returns unit of mass: ounce. 860 * Caller owns returned value and must free it. 861 * @param status ICU error code. 862 * @stable ICU 53 863 */ 864 static MeasureUnit *createOunce(UErrorCode &status); 865 866 /** 867 * Returns unit of mass: ounce-troy. 868 * Caller owns returned value and must free it. 869 * @param status ICU error code. 870 * @stable ICU 54 871 */ 872 static MeasureUnit *createOunceTroy(UErrorCode &status); 873 874 /** 875 * Returns unit of mass: pound. 876 * Caller owns returned value and must free it. 877 * @param status ICU error code. 878 * @stable ICU 53 879 */ 880 static MeasureUnit *createPound(UErrorCode &status); 881 882 /** 883 * Returns unit of mass: stone. 884 * Caller owns returned value and must free it. 885 * @param status ICU error code. 886 * @stable ICU 54 887 */ 888 static MeasureUnit *createStone(UErrorCode &status); 889 890 /** 891 * Returns unit of mass: ton. 892 * Caller owns returned value and must free it. 893 * @param status ICU error code. 894 * @stable ICU 54 895 */ 896 static MeasureUnit *createTon(UErrorCode &status); 897 898 /** 899 * Returns unit of power: gigawatt. 900 * Caller owns returned value and must free it. 901 * @param status ICU error code. 902 * @stable ICU 54 903 */ 904 static MeasureUnit *createGigawatt(UErrorCode &status); 905 906 /** 907 * Returns unit of power: horsepower. 908 * Caller owns returned value and must free it. 909 * @param status ICU error code. 910 * @stable ICU 53 911 */ 912 static MeasureUnit *createHorsepower(UErrorCode &status); 913 914 /** 915 * Returns unit of power: kilowatt. 916 * Caller owns returned value and must free it. 917 * @param status ICU error code. 918 * @stable ICU 53 919 */ 920 static MeasureUnit *createKilowatt(UErrorCode &status); 921 922 /** 923 * Returns unit of power: megawatt. 924 * Caller owns returned value and must free it. 925 * @param status ICU error code. 926 * @stable ICU 54 927 */ 928 static MeasureUnit *createMegawatt(UErrorCode &status); 929 930 /** 931 * Returns unit of power: milliwatt. 932 * Caller owns returned value and must free it. 933 * @param status ICU error code. 934 * @stable ICU 54 935 */ 936 static MeasureUnit *createMilliwatt(UErrorCode &status); 937 938 /** 939 * Returns unit of power: watt. 940 * Caller owns returned value and must free it. 941 * @param status ICU error code. 942 * @stable ICU 53 943 */ 944 static MeasureUnit *createWatt(UErrorCode &status); 945 946 /** 947 * Returns unit of pressure: hectopascal. 948 * Caller owns returned value and must free it. 949 * @param status ICU error code. 950 * @stable ICU 53 951 */ 952 static MeasureUnit *createHectopascal(UErrorCode &status); 953 954 /** 955 * Returns unit of pressure: inch-hg. 956 * Caller owns returned value and must free it. 957 * @param status ICU error code. 958 * @stable ICU 53 959 */ 960 static MeasureUnit *createInchHg(UErrorCode &status); 961 962 /** 963 * Returns unit of pressure: millibar. 964 * Caller owns returned value and must free it. 965 * @param status ICU error code. 966 * @stable ICU 53 967 */ 968 static MeasureUnit *createMillibar(UErrorCode &status); 969 970 /** 971 * Returns unit of pressure: millimeter-of-mercury. 972 * Caller owns returned value and must free it. 973 * @param status ICU error code. 974 * @stable ICU 54 975 */ 976 static MeasureUnit *createMillimeterOfMercury(UErrorCode &status); 977 978 /** 979 * Returns unit of pressure: pound-per-square-inch. 980 * Caller owns returned value and must free it. 981 * @param status ICU error code. 982 * @stable ICU 54 983 */ 984 static MeasureUnit *createPoundPerSquareInch(UErrorCode &status); 985 986 /** 987 * Returns unit of proportion: karat. 988 * Caller owns returned value and must free it. 989 * @param status ICU error code. 990 * @stable ICU 54 991 */ 992 static MeasureUnit *createKarat(UErrorCode &status); 993 994 /** 995 * Returns unit of speed: kilometer-per-hour. 996 * Caller owns returned value and must free it. 997 * @param status ICU error code. 998 * @stable ICU 53 999 */ 1000 static MeasureUnit *createKilometerPerHour(UErrorCode &status); 1001 1002 #ifndef U_HIDE_DRAFT_API 1003 /** 1004 * Returns unit of speed: knot. 1005 * Caller owns returned value and must free it. 1006 * @param status ICU error code. 1007 * @draft ICU 56 1008 */ 1009 static MeasureUnit *createKnot(UErrorCode &status); 1010 #endif /* U_HIDE_DRAFT_API */ 1011 1012 /** 1013 * Returns unit of speed: meter-per-second. 1014 * Caller owns returned value and must free it. 1015 * @param status ICU error code. 1016 * @stable ICU 53 1017 */ 1018 static MeasureUnit *createMeterPerSecond(UErrorCode &status); 1019 1020 /** 1021 * Returns unit of speed: mile-per-hour. 1022 * Caller owns returned value and must free it. 1023 * @param status ICU error code. 1024 * @stable ICU 53 1025 */ 1026 static MeasureUnit *createMilePerHour(UErrorCode &status); 1027 1028 /** 1029 * Returns unit of temperature: celsius. 1030 * Caller owns returned value and must free it. 1031 * @param status ICU error code. 1032 * @stable ICU 53 1033 */ 1034 static MeasureUnit *createCelsius(UErrorCode &status); 1035 1036 /** 1037 * Returns unit of temperature: fahrenheit. 1038 * Caller owns returned value and must free it. 1039 * @param status ICU error code. 1040 * @stable ICU 53 1041 */ 1042 static MeasureUnit *createFahrenheit(UErrorCode &status); 1043 1044 #ifndef U_HIDE_DRAFT_API 1045 /** 1046 * Returns unit of temperature: generic. 1047 * Caller owns returned value and must free it. 1048 * @param status ICU error code. 1049 * @draft ICU 56 1050 */ 1051 static MeasureUnit *createGenericTemperature(UErrorCode &status); 1052 #endif /* U_HIDE_DRAFT_API */ 1053 1054 /** 1055 * Returns unit of temperature: kelvin. 1056 * Caller owns returned value and must free it. 1057 * @param status ICU error code. 1058 * @stable ICU 54 1059 */ 1060 static MeasureUnit *createKelvin(UErrorCode &status); 1061 1062 /** 1063 * Returns unit of volume: acre-foot. 1064 * Caller owns returned value and must free it. 1065 * @param status ICU error code. 1066 * @stable ICU 54 1067 */ 1068 static MeasureUnit *createAcreFoot(UErrorCode &status); 1069 1070 /** 1071 * Returns unit of volume: bushel. 1072 * Caller owns returned value and must free it. 1073 * @param status ICU error code. 1074 * @stable ICU 54 1075 */ 1076 static MeasureUnit *createBushel(UErrorCode &status); 1077 1078 /** 1079 * Returns unit of volume: centiliter. 1080 * Caller owns returned value and must free it. 1081 * @param status ICU error code. 1082 * @stable ICU 54 1083 */ 1084 static MeasureUnit *createCentiliter(UErrorCode &status); 1085 1086 /** 1087 * Returns unit of volume: cubic-centimeter. 1088 * Caller owns returned value and must free it. 1089 * @param status ICU error code. 1090 * @stable ICU 54 1091 */ 1092 static MeasureUnit *createCubicCentimeter(UErrorCode &status); 1093 1094 /** 1095 * Returns unit of volume: cubic-foot. 1096 * Caller owns returned value and must free it. 1097 * @param status ICU error code. 1098 * @stable ICU 54 1099 */ 1100 static MeasureUnit *createCubicFoot(UErrorCode &status); 1101 1102 /** 1103 * Returns unit of volume: cubic-inch. 1104 * Caller owns returned value and must free it. 1105 * @param status ICU error code. 1106 * @stable ICU 54 1107 */ 1108 static MeasureUnit *createCubicInch(UErrorCode &status); 1109 1110 /** 1111 * Returns unit of volume: cubic-kilometer. 1112 * Caller owns returned value and must free it. 1113 * @param status ICU error code. 1114 * @stable ICU 53 1115 */ 1116 static MeasureUnit *createCubicKilometer(UErrorCode &status); 1117 1118 /** 1119 * Returns unit of volume: cubic-meter. 1120 * Caller owns returned value and must free it. 1121 * @param status ICU error code. 1122 * @stable ICU 54 1123 */ 1124 static MeasureUnit *createCubicMeter(UErrorCode &status); 1125 1126 /** 1127 * Returns unit of volume: cubic-mile. 1128 * Caller owns returned value and must free it. 1129 * @param status ICU error code. 1130 * @stable ICU 53 1131 */ 1132 static MeasureUnit *createCubicMile(UErrorCode &status); 1133 1134 /** 1135 * Returns unit of volume: cubic-yard. 1136 * Caller owns returned value and must free it. 1137 * @param status ICU error code. 1138 * @stable ICU 54 1139 */ 1140 static MeasureUnit *createCubicYard(UErrorCode &status); 1141 1142 /** 1143 * Returns unit of volume: cup. 1144 * Caller owns returned value and must free it. 1145 * @param status ICU error code. 1146 * @stable ICU 54 1147 */ 1148 static MeasureUnit *createCup(UErrorCode &status); 1149 1150 #ifndef U_HIDE_DRAFT_API 1151 /** 1152 * Returns unit of volume: cup-metric. 1153 * Caller owns returned value and must free it. 1154 * @param status ICU error code. 1155 * @draft ICU 56 1156 */ 1157 static MeasureUnit *createCupMetric(UErrorCode &status); 1158 #endif /* U_HIDE_DRAFT_API */ 1159 1160 /** 1161 * Returns unit of volume: deciliter. 1162 * Caller owns returned value and must free it. 1163 * @param status ICU error code. 1164 * @stable ICU 54 1165 */ 1166 static MeasureUnit *createDeciliter(UErrorCode &status); 1167 1168 /** 1169 * Returns unit of volume: fluid-ounce. 1170 * Caller owns returned value and must free it. 1171 * @param status ICU error code. 1172 * @stable ICU 54 1173 */ 1174 static MeasureUnit *createFluidOunce(UErrorCode &status); 1175 1176 /** 1177 * Returns unit of volume: gallon. 1178 * Caller owns returned value and must free it. 1179 * @param status ICU error code. 1180 * @stable ICU 54 1181 */ 1182 static MeasureUnit *createGallon(UErrorCode &status); 1183 1184 /** 1185 * Returns unit of volume: hectoliter. 1186 * Caller owns returned value and must free it. 1187 * @param status ICU error code. 1188 * @stable ICU 54 1189 */ 1190 static MeasureUnit *createHectoliter(UErrorCode &status); 1191 1192 /** 1193 * Returns unit of volume: liter. 1194 * Caller owns returned value and must free it. 1195 * @param status ICU error code. 1196 * @stable ICU 53 1197 */ 1198 static MeasureUnit *createLiter(UErrorCode &status); 1199 1200 /** 1201 * Returns unit of volume: megaliter. 1202 * Caller owns returned value and must free it. 1203 * @param status ICU error code. 1204 * @stable ICU 54 1205 */ 1206 static MeasureUnit *createMegaliter(UErrorCode &status); 1207 1208 /** 1209 * Returns unit of volume: milliliter. 1210 * Caller owns returned value and must free it. 1211 * @param status ICU error code. 1212 * @stable ICU 54 1213 */ 1214 static MeasureUnit *createMilliliter(UErrorCode &status); 1215 1216 /** 1217 * Returns unit of volume: pint. 1218 * Caller owns returned value and must free it. 1219 * @param status ICU error code. 1220 * @stable ICU 54 1221 */ 1222 static MeasureUnit *createPint(UErrorCode &status); 1223 1224 #ifndef U_HIDE_DRAFT_API 1225 /** 1226 * Returns unit of volume: pint-metric. 1227 * Caller owns returned value and must free it. 1228 * @param status ICU error code. 1229 * @draft ICU 56 1230 */ 1231 static MeasureUnit *createPintMetric(UErrorCode &status); 1232 #endif /* U_HIDE_DRAFT_API */ 1233 1234 /** 1235 * Returns unit of volume: quart. 1236 * Caller owns returned value and must free it. 1237 * @param status ICU error code. 1238 * @stable ICU 54 1239 */ 1240 static MeasureUnit *createQuart(UErrorCode &status); 1241 1242 /** 1243 * Returns unit of volume: tablespoon. 1244 * Caller owns returned value and must free it. 1245 * @param status ICU error code. 1246 * @stable ICU 54 1247 */ 1248 static MeasureUnit *createTablespoon(UErrorCode &status); 1249 1250 /** 1251 * Returns unit of volume: teaspoon. 1252 * Caller owns returned value and must free it. 1253 * @param status ICU error code. 1254 * @stable ICU 54 1255 */ 1256 static MeasureUnit *createTeaspoon(UErrorCode &status); 1257 1258 1259 // End generated createXXX methods 1260 1261 protected: 1262 1263 #ifndef U_HIDE_INTERNAL_API 1264 /** 1265 * For ICU use only. 1266 * @internal 1267 */ 1268 void initTime(const char *timeId); 1269 1270 /** 1271 * For ICU use only. 1272 * @internal 1273 */ 1274 void initCurrency(const char *isoCurrency); 1275 1276 #endif /* U_HIDE_INTERNAL_API */ 1277 1278 private: 1279 int32_t fTypeId; 1280 int32_t fSubTypeId; 1281 char fCurrency[4]; 1282 1283 MeasureUnit(int32_t typeId, int32_t subTypeId) : fTypeId(typeId), fSubTypeId(subTypeId) { 1284 fCurrency[0] = 0; 1285 } 1286 void setTo(int32_t typeId, int32_t subTypeId); 1287 int32_t getOffset() const; 1288 static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status); 1289 }; 1290 1291 U_NAMESPACE_END 1292 1293 #endif // !UNCONFIG_NO_FORMATTING 1294 #endif // __MEASUREUNIT_H__ 1295