1 | // © 2017 and later: Unicode, Inc. and others. |
2 | // License & terms of use: http://www.unicode.org/copyright.html |
3 | /* |
4 | ******************************************************************************* |
5 | * Copyright (C) 2009-2017, International Business Machines Corporation, * |
6 | * Google, and others. All Rights Reserved. * |
7 | ******************************************************************************* |
8 | */ |
9 | |
10 | #ifndef __NOUNIT_H__ |
11 | #define __NOUNIT_H__ |
12 | |
13 | #include "unicode/utypes.h" |
14 | |
15 | #if U_SHOW_CPLUSPLUS_API |
16 | |
17 | #if !UCONFIG_NO_FORMATTING |
18 | |
19 | #include "unicode/measunit.h" |
20 | |
21 | #ifndef U_HIDE_DRAFT_API |
22 | |
23 | /** |
24 | * \file |
25 | * \brief C++ API: units for percent and permille |
26 | */ |
27 | |
28 | U_NAMESPACE_BEGIN |
29 | |
30 | /** |
31 | * Dimensionless unit for percent and permille. |
32 | * @see NumberFormatter |
33 | * @draft ICU 60 |
34 | */ |
35 | class U_I18N_API NoUnit: public MeasureUnit { |
36 | public: |
37 | /** |
38 | * Returns an instance for the base unit (dimensionless and no scaling). |
39 | * |
40 | * @return a NoUnit instance |
41 | * @draft ICU 60 |
42 | */ |
43 | static NoUnit U_EXPORT2 base(); |
44 | |
45 | /** |
46 | * Returns an instance for percent, or 1/100 of a base unit. |
47 | * |
48 | * @return a NoUnit instance |
49 | * @draft ICU 60 |
50 | */ |
51 | static NoUnit U_EXPORT2 percent(); |
52 | |
53 | /** |
54 | * Returns an instance for permille, or 1/1000 of a base unit. |
55 | * |
56 | * @return a NoUnit instance |
57 | * @draft ICU 60 |
58 | */ |
59 | static NoUnit U_EXPORT2 permille(); |
60 | |
61 | /** |
62 | * Copy operator. |
63 | * @draft ICU 60 |
64 | */ |
65 | NoUnit(const NoUnit& other); |
66 | |
67 | /** |
68 | * Destructor. |
69 | * @draft ICU 60 |
70 | */ |
71 | virtual ~NoUnit(); |
72 | |
73 | /** |
74 | * Return a polymorphic clone of this object. The result will |
75 | * have the same class as returned by getDynamicClassID(). |
76 | * @draft ICU 60 |
77 | */ |
78 | virtual NoUnit* clone() const; |
79 | |
80 | /** |
81 | * Returns a unique class ID for this object POLYMORPHICALLY. |
82 | * This method implements a simple form of RTTI used by ICU. |
83 | * @return The class ID for this object. All objects of a given |
84 | * class have the same class ID. Objects of other classes have |
85 | * different class IDs. |
86 | * @draft ICU 60 |
87 | */ |
88 | virtual UClassID getDynamicClassID() const; |
89 | |
90 | /** |
91 | * Returns the class ID for this class. This is used to compare to |
92 | * the return value of getDynamicClassID(). |
93 | * @return The class ID for all objects of this class. |
94 | * @draft ICU 60 |
95 | */ |
96 | static UClassID U_EXPORT2 getStaticClassID(); |
97 | |
98 | private: |
99 | /** |
100 | * Constructor |
101 | * @internal (private) |
102 | */ |
103 | NoUnit(const char* subtype); |
104 | |
105 | }; |
106 | |
107 | U_NAMESPACE_END |
108 | |
109 | #endif /* U_HIDE_DRAFT_API */ |
110 | #endif /* #if !UCONFIG_NO_FORMATTING */ |
111 | |
112 | #endif /* U_SHOW_CPLUSPLUS_API */ |
113 | |
114 | #endif // __NOUNIT_H__ |
115 | //eof |
116 | // |
117 | |