• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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