ICU 57.1  57.1
measunit.h
Go to the documentation of this file.
1 /*
2 **********************************************************************
3 * Copyright (c) 2004-2016, 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 
26 
27 class StringEnumeration;
28 
37  public:
38 
43  MeasureUnit() : fTypeId(0), fSubTypeId(0) {
44  fCurrency[0] = 0;
45  }
46 
51  MeasureUnit(const MeasureUnit &other);
52 
57  MeasureUnit &operator=(const MeasureUnit &other);
58 
64  virtual UObject* clone() const;
65 
70  virtual ~MeasureUnit();
71 
77  virtual UBool operator==(const UObject& other) const;
78 
84  UBool operator!=(const UObject& other) const {
85  return !(*this == other);
86  }
87 
92  const char *getType() const;
93 
98  const char *getSubtype() const;
99 
111  static int32_t getAvailable(
112  MeasureUnit *destArray,
113  int32_t destCapacity,
114  UErrorCode &errorCode);
115 
128  static int32_t getAvailable(
129  const char *type,
130  MeasureUnit *destArray,
131  int32_t destCapacity,
132  UErrorCode &errorCode);
133 
142  static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
143 
155  static UClassID U_EXPORT2 getStaticClassID(void);
156 
168  virtual UClassID getDynamicClassID(void) const;
169 
170 #ifndef U_HIDE_INTERNAL_API
171 
177  int32_t getIndex() const;
178 
184  static int32_t getIndexCount();
185 
192  static int32_t internalGetIndexForTypeAndSubtype(const char *type, const char *subtype);
193 
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 
216  static MeasureUnit *createGForce(UErrorCode &status);
217 
224  static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
225 
232  static MeasureUnit *createArcMinute(UErrorCode &status);
233 
240  static MeasureUnit *createArcSecond(UErrorCode &status);
241 
248  static MeasureUnit *createDegree(UErrorCode &status);
249 
256  static MeasureUnit *createRadian(UErrorCode &status);
257 
258 #ifndef U_HIDE_DRAFT_API
259 
265  static MeasureUnit *createRevolutionAngle(UErrorCode &status);
266 #endif /* U_HIDE_DRAFT_API */
267 
274  static MeasureUnit *createAcre(UErrorCode &status);
275 
282  static MeasureUnit *createHectare(UErrorCode &status);
283 
290  static MeasureUnit *createSquareCentimeter(UErrorCode &status);
291 
298  static MeasureUnit *createSquareFoot(UErrorCode &status);
299 
306  static MeasureUnit *createSquareInch(UErrorCode &status);
307 
314  static MeasureUnit *createSquareKilometer(UErrorCode &status);
315 
322  static MeasureUnit *createSquareMeter(UErrorCode &status);
323 
330  static MeasureUnit *createSquareMile(UErrorCode &status);
331 
338  static MeasureUnit *createSquareYard(UErrorCode &status);
339 
346  static MeasureUnit *createKarat(UErrorCode &status);
347 
348 #ifndef U_HIDE_DRAFT_API
349 
355  static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
356 #endif /* U_HIDE_DRAFT_API */
357 
358 #ifndef U_HIDE_DRAFT_API
359 
365  static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
366 #endif /* U_HIDE_DRAFT_API */
367 
368 #ifndef U_HIDE_DRAFT_API
369 
375  static MeasureUnit *createPartPerMillion(UErrorCode &status);
376 #endif /* U_HIDE_DRAFT_API */
377 
378 #ifndef U_HIDE_DRAFT_API
379 
385  static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
386 #endif /* U_HIDE_DRAFT_API */
387 
394  static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
395 
402  static MeasureUnit *createMilePerGallon(UErrorCode &status);
403 
404 #ifndef U_HIDE_DRAFT_API
405 
411  static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
412 #endif /* U_HIDE_DRAFT_API */
413 
420  static MeasureUnit *createBit(UErrorCode &status);
421 
428  static MeasureUnit *createByte(UErrorCode &status);
429 
436  static MeasureUnit *createGigabit(UErrorCode &status);
437 
444  static MeasureUnit *createGigabyte(UErrorCode &status);
445 
452  static MeasureUnit *createKilobit(UErrorCode &status);
453 
460  static MeasureUnit *createKilobyte(UErrorCode &status);
461 
468  static MeasureUnit *createMegabit(UErrorCode &status);
469 
476  static MeasureUnit *createMegabyte(UErrorCode &status);
477 
484  static MeasureUnit *createTerabit(UErrorCode &status);
485 
492  static MeasureUnit *createTerabyte(UErrorCode &status);
493 
494 #ifndef U_HIDE_DRAFT_API
495 
501  static MeasureUnit *createCentury(UErrorCode &status);
502 #endif /* U_HIDE_DRAFT_API */
503 
510  static MeasureUnit *createDay(UErrorCode &status);
511 
518  static MeasureUnit *createHour(UErrorCode &status);
519 
526  static MeasureUnit *createMicrosecond(UErrorCode &status);
527 
534  static MeasureUnit *createMillisecond(UErrorCode &status);
535 
542  static MeasureUnit *createMinute(UErrorCode &status);
543 
550  static MeasureUnit *createMonth(UErrorCode &status);
551 
558  static MeasureUnit *createNanosecond(UErrorCode &status);
559 
566  static MeasureUnit *createSecond(UErrorCode &status);
567 
574  static MeasureUnit *createWeek(UErrorCode &status);
575 
582  static MeasureUnit *createYear(UErrorCode &status);
583 
590  static MeasureUnit *createAmpere(UErrorCode &status);
591 
598  static MeasureUnit *createMilliampere(UErrorCode &status);
599 
606  static MeasureUnit *createOhm(UErrorCode &status);
607 
614  static MeasureUnit *createVolt(UErrorCode &status);
615 
622  static MeasureUnit *createCalorie(UErrorCode &status);
623 
630  static MeasureUnit *createFoodcalorie(UErrorCode &status);
631 
638  static MeasureUnit *createJoule(UErrorCode &status);
639 
646  static MeasureUnit *createKilocalorie(UErrorCode &status);
647 
654  static MeasureUnit *createKilojoule(UErrorCode &status);
655 
662  static MeasureUnit *createKilowattHour(UErrorCode &status);
663 
670  static MeasureUnit *createGigahertz(UErrorCode &status);
671 
678  static MeasureUnit *createHertz(UErrorCode &status);
679 
686  static MeasureUnit *createKilohertz(UErrorCode &status);
687 
694  static MeasureUnit *createMegahertz(UErrorCode &status);
695 
702  static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
703 
710  static MeasureUnit *createCentimeter(UErrorCode &status);
711 
718  static MeasureUnit *createDecimeter(UErrorCode &status);
719 
726  static MeasureUnit *createFathom(UErrorCode &status);
727 
734  static MeasureUnit *createFoot(UErrorCode &status);
735 
742  static MeasureUnit *createFurlong(UErrorCode &status);
743 
750  static MeasureUnit *createInch(UErrorCode &status);
751 
758  static MeasureUnit *createKilometer(UErrorCode &status);
759 
766  static MeasureUnit *createLightYear(UErrorCode &status);
767 
774  static MeasureUnit *createMeter(UErrorCode &status);
775 
782  static MeasureUnit *createMicrometer(UErrorCode &status);
783 
790  static MeasureUnit *createMile(UErrorCode &status);
791 
792 #ifndef U_HIDE_DRAFT_API
793 
799  static MeasureUnit *createMileScandinavian(UErrorCode &status);
800 #endif /* U_HIDE_DRAFT_API */
801 
808  static MeasureUnit *createMillimeter(UErrorCode &status);
809 
816  static MeasureUnit *createNanometer(UErrorCode &status);
817 
824  static MeasureUnit *createNauticalMile(UErrorCode &status);
825 
832  static MeasureUnit *createParsec(UErrorCode &status);
833 
840  static MeasureUnit *createPicometer(UErrorCode &status);
841 
848  static MeasureUnit *createYard(UErrorCode &status);
849 
856  static MeasureUnit *createLux(UErrorCode &status);
857 
864  static MeasureUnit *createCarat(UErrorCode &status);
865 
872  static MeasureUnit *createGram(UErrorCode &status);
873 
880  static MeasureUnit *createKilogram(UErrorCode &status);
881 
888  static MeasureUnit *createMetricTon(UErrorCode &status);
889 
896  static MeasureUnit *createMicrogram(UErrorCode &status);
897 
904  static MeasureUnit *createMilligram(UErrorCode &status);
905 
912  static MeasureUnit *createOunce(UErrorCode &status);
913 
920  static MeasureUnit *createOunceTroy(UErrorCode &status);
921 
928  static MeasureUnit *createPound(UErrorCode &status);
929 
936  static MeasureUnit *createStone(UErrorCode &status);
937 
944  static MeasureUnit *createTon(UErrorCode &status);
945 
952  static MeasureUnit *createGigawatt(UErrorCode &status);
953 
960  static MeasureUnit *createHorsepower(UErrorCode &status);
961 
968  static MeasureUnit *createKilowatt(UErrorCode &status);
969 
976  static MeasureUnit *createMegawatt(UErrorCode &status);
977 
984  static MeasureUnit *createMilliwatt(UErrorCode &status);
985 
992  static MeasureUnit *createWatt(UErrorCode &status);
993 
1000  static MeasureUnit *createHectopascal(UErrorCode &status);
1001 
1008  static MeasureUnit *createInchHg(UErrorCode &status);
1009 
1016  static MeasureUnit *createMillibar(UErrorCode &status);
1017 
1024  static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
1025 
1032  static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
1033 
1040  static MeasureUnit *createKilometerPerHour(UErrorCode &status);
1041 
1042 #ifndef U_HIDE_DRAFT_API
1043 
1049  static MeasureUnit *createKnot(UErrorCode &status);
1050 #endif /* U_HIDE_DRAFT_API */
1051 
1058  static MeasureUnit *createMeterPerSecond(UErrorCode &status);
1059 
1066  static MeasureUnit *createMilePerHour(UErrorCode &status);
1067 
1074  static MeasureUnit *createCelsius(UErrorCode &status);
1075 
1082  static MeasureUnit *createFahrenheit(UErrorCode &status);
1083 
1084 #ifndef U_HIDE_DRAFT_API
1085 
1091  static MeasureUnit *createGenericTemperature(UErrorCode &status);
1092 #endif /* U_HIDE_DRAFT_API */
1093 
1100  static MeasureUnit *createKelvin(UErrorCode &status);
1101 
1108  static MeasureUnit *createAcreFoot(UErrorCode &status);
1109 
1116  static MeasureUnit *createBushel(UErrorCode &status);
1117 
1124  static MeasureUnit *createCentiliter(UErrorCode &status);
1125 
1132  static MeasureUnit *createCubicCentimeter(UErrorCode &status);
1133 
1140  static MeasureUnit *createCubicFoot(UErrorCode &status);
1141 
1148  static MeasureUnit *createCubicInch(UErrorCode &status);
1149 
1156  static MeasureUnit *createCubicKilometer(UErrorCode &status);
1157 
1164  static MeasureUnit *createCubicMeter(UErrorCode &status);
1165 
1172  static MeasureUnit *createCubicMile(UErrorCode &status);
1173 
1180  static MeasureUnit *createCubicYard(UErrorCode &status);
1181 
1188  static MeasureUnit *createCup(UErrorCode &status);
1189 
1190 #ifndef U_HIDE_DRAFT_API
1191 
1197  static MeasureUnit *createCupMetric(UErrorCode &status);
1198 #endif /* U_HIDE_DRAFT_API */
1199 
1206  static MeasureUnit *createDeciliter(UErrorCode &status);
1207 
1214  static MeasureUnit *createFluidOunce(UErrorCode &status);
1215 
1222  static MeasureUnit *createGallon(UErrorCode &status);
1223 
1224 #ifndef U_HIDE_DRAFT_API
1225 
1231  static MeasureUnit *createGallonImperial(UErrorCode &status);
1232 #endif /* U_HIDE_DRAFT_API */
1233 
1240  static MeasureUnit *createHectoliter(UErrorCode &status);
1241 
1248  static MeasureUnit *createLiter(UErrorCode &status);
1249 
1256  static MeasureUnit *createMegaliter(UErrorCode &status);
1257 
1264  static MeasureUnit *createMilliliter(UErrorCode &status);
1265 
1272  static MeasureUnit *createPint(UErrorCode &status);
1273 
1274 #ifndef U_HIDE_DRAFT_API
1275 
1281  static MeasureUnit *createPintMetric(UErrorCode &status);
1282 #endif /* U_HIDE_DRAFT_API */
1283 
1290  static MeasureUnit *createQuart(UErrorCode &status);
1291 
1298  static MeasureUnit *createTablespoon(UErrorCode &status);
1299 
1306  static MeasureUnit *createTeaspoon(UErrorCode &status);
1307 
1308 
1309 // End generated createXXX methods
1310 
1311  protected:
1312 
1313 #ifndef U_HIDE_INTERNAL_API
1314 
1318  void initTime(const char *timeId);
1319 
1324  void initCurrency(const char *isoCurrency);
1325 
1326 #endif /* U_HIDE_INTERNAL_API */
1327 
1328 private:
1329  int32_t fTypeId;
1330  int32_t fSubTypeId;
1331  char fCurrency[4];
1332 
1333  MeasureUnit(int32_t typeId, int32_t subTypeId) : fTypeId(typeId), fSubTypeId(subTypeId) {
1334  fCurrency[0] = 0;
1335  }
1336  void setTo(int32_t typeId, int32_t subTypeId);
1337  int32_t getOffset() const;
1338  static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
1339 };
1340 
1342 
1343 #endif // !UNCONFIG_NO_FORMATTING
1344 #endif // __MEASUREUNIT_H__
A unit such as length, mass, volume, currency, etc.
Definition: measunit.h:36
C++ API: Unicode String.
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
UBool operator!=(const UObject &other) const
Inequality operator.
Definition: measunit.h:84
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:91
Base class for 'pure' C++ implementations of uenum api.
Definition: strenum.h:55
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:358
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129
virtual UClassID getDynamicClassID() const
ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
MeasureUnit()
Default constructor.
Definition: measunit.h:43
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:476
Basic definitions for ICU, for both C and C++ APIs.
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:221
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234