ICU 53.1  53.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
measunit.h
Go to the documentation of this file.
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 #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 
79 #ifndef U_HIDE_DRAFT_API
80 
85  UBool operator!=(const UObject& other) const {
86  return !(*this == other);
87  }
88 
93  const char *getType() const;
94 
99  const char *getSubtype() const;
100 
112  static int32_t getAvailable(
113  MeasureUnit *destArray,
114  int32_t destCapacity,
115  UErrorCode &errorCode);
116 
129  static int32_t getAvailable(
130  const char *type,
131  MeasureUnit *destArray,
132  int32_t destCapacity,
133  UErrorCode &errorCode);
134 
143  static StringEnumeration* getAvailableTypes(UErrorCode &errorCode);
144 #endif /* U_HIDE_DRAFT_API */
145 
157  static UClassID U_EXPORT2 getStaticClassID(void);
158 
170  virtual UClassID getDynamicClassID(void) const;
171 
172 #ifndef U_HIDE_INTERNAL_API
173 
179  int32_t getIndex() const;
180 
186  static int32_t getIndexCount();
187 #endif /* U_HIDE_INTERNAL_API */
188 
189 // Start generated createXXX methods
190 
191 #ifndef U_HIDE_DRAFT_API
192 
198  static MeasureUnit *createGForce(UErrorCode &status);
199 
206  static MeasureUnit *createArcMinute(UErrorCode &status);
207 
214  static MeasureUnit *createArcSecond(UErrorCode &status);
215 
222  static MeasureUnit *createDegree(UErrorCode &status);
223 
230  static MeasureUnit *createAcre(UErrorCode &status);
231 
238  static MeasureUnit *createHectare(UErrorCode &status);
239 
246  static MeasureUnit *createSquareFoot(UErrorCode &status);
247 
254  static MeasureUnit *createSquareKilometer(UErrorCode &status);
255 
262  static MeasureUnit *createSquareMeter(UErrorCode &status);
263 
270  static MeasureUnit *createSquareMile(UErrorCode &status);
271 
278  static MeasureUnit *createDay(UErrorCode &status);
279 
286  static MeasureUnit *createHour(UErrorCode &status);
287 
294  static MeasureUnit *createMillisecond(UErrorCode &status);
295 
302  static MeasureUnit *createMinute(UErrorCode &status);
303 
310  static MeasureUnit *createMonth(UErrorCode &status);
311 
318  static MeasureUnit *createSecond(UErrorCode &status);
319 
326  static MeasureUnit *createWeek(UErrorCode &status);
327 
334  static MeasureUnit *createYear(UErrorCode &status);
335 
342  static MeasureUnit *createCentimeter(UErrorCode &status);
343 
350  static MeasureUnit *createFoot(UErrorCode &status);
351 
358  static MeasureUnit *createInch(UErrorCode &status);
359 
366  static MeasureUnit *createKilometer(UErrorCode &status);
367 
374  static MeasureUnit *createLightYear(UErrorCode &status);
375 
382  static MeasureUnit *createMeter(UErrorCode &status);
383 
390  static MeasureUnit *createMile(UErrorCode &status);
391 
398  static MeasureUnit *createMillimeter(UErrorCode &status);
399 
406  static MeasureUnit *createPicometer(UErrorCode &status);
407 
414  static MeasureUnit *createYard(UErrorCode &status);
415 
422  static MeasureUnit *createGram(UErrorCode &status);
423 
430  static MeasureUnit *createKilogram(UErrorCode &status);
431 
438  static MeasureUnit *createOunce(UErrorCode &status);
439 
446  static MeasureUnit *createPound(UErrorCode &status);
447 
454  static MeasureUnit *createHorsepower(UErrorCode &status);
455 
462  static MeasureUnit *createKilowatt(UErrorCode &status);
463 
470  static MeasureUnit *createWatt(UErrorCode &status);
471 
478  static MeasureUnit *createHectopascal(UErrorCode &status);
479 
486  static MeasureUnit *createInchHg(UErrorCode &status);
487 
494  static MeasureUnit *createMillibar(UErrorCode &status);
495 
502  static MeasureUnit *createKilometerPerHour(UErrorCode &status);
503 
510  static MeasureUnit *createMeterPerSecond(UErrorCode &status);
511 
518  static MeasureUnit *createMilePerHour(UErrorCode &status);
519 
526  static MeasureUnit *createCelsius(UErrorCode &status);
527 
534  static MeasureUnit *createFahrenheit(UErrorCode &status);
535 
542  static MeasureUnit *createCubicKilometer(UErrorCode &status);
543 
550  static MeasureUnit *createCubicMile(UErrorCode &status);
551 
558  static MeasureUnit *createLiter(UErrorCode &status);
559 #endif /* U_HIDE_DRAFT_API */
560 
561  protected:
562 
563 #ifndef U_HIDE_INTERNAL_API
564 
568  void initTime(const char *timeId);
569 
574  void initCurrency(const char *isoCurrency);
575 
576 #endif
577 
578 private:
579  int32_t fTypeId;
580  int32_t fSubTypeId;
581  char fCurrency[4];
582 
583  MeasureUnit(int32_t typeId, int32_t subTypeId) : fTypeId(typeId), fSubTypeId(subTypeId) {
584  fCurrency[0] = 0;
585  }
586  void setTo(int32_t typeId, int32_t subTypeId);
587  int32_t getOffset() const;
588  static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
589 };
590 
592 
593 #endif // !UNCONFIG_NO_FORMATTING
594 #endif // __MEASUREUNIT_H__
UBool operator!=(const UObject &other) const
Inequality operator.
Definition: measunit.h:85
A unit such as length, mass, volume, currency, etc.
Definition: measunit.h:36
virtual UClassID getDynamicClassID() const
ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
C++ API: Unicode String.
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
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
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:200