Merge "Update deprecated libprivilege-control API functions." into tizen
[platform/framework/native/appfw.git] / inc / FBaseNumber.h
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Apache License, Version 2.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 /**
18  * @file                FBaseNumber.h
19  * @brief               This is the header file for the %Number class.
20  *
21  * This header file contains the declarations and definitions of the %Number class. @n
22  * This class is the abstract base class of all wrapped numeric types.
23  */
24 #ifndef _FBASE_NUMBER_H_
25 #define _FBASE_NUMBER_H_
26
27 #include <FBaseObject.h>
28 #include <FBaseString.h>
29
30 namespace Tizen { namespace Base
31 {
32 /**
33  *      @class  Number
34  *      @brief  This class is the base class of all wrapped numeric types.
35  *
36  *      @since 2.0
37  *
38  *      The %Number class is the abstract base class of all wrapped numeric classes.
39  *      The subclasses of %Number must provide methods to convert the represented
40  *      numeric value to @c char, @c short, @c int, @c long, @c float, and @c double.
41  *
42  * The following example demonstrates how to use the %Number class.
43  *
44  *      @code
45  *
46  *      #include <FBase.h>
47  *
48  *      using namespace Tizen::Base;
49  *
50  *      void
51  *      MyClass::NumberSample(void)
52  *      {
53  *              Long ld(0x12345678L);
54  *              int i = ld.Toint();             // i == 0x5678
55  *              char ch = ld.ToChar();  // ch == 0x78 or 120
56  *              // ...
57  *              Int8 j(ch);
58  *              Float f1(j.ToFloat()); // f1 == 120.0
59  *              // ...
60  *              Double d(120.100005L);
61  *              Float f2(d.ToFloat());  // f2 == 120.10001
62  *              Integer k(f2.ToInt());  // k == 120
63  *      }
64  *      @endcode
65  */
66 class _OSP_EXPORT_ Number
67         : public Object
68 {
69 public:
70         /**
71          * This destructor overrides Tizen::Base::Object::~Object().
72          *
73          * @since 2.0
74          */
75         virtual ~Number(void) { };
76
77         /**
78          *      Gets the @c char equivalent of the current instance of the %Number class.
79          *
80          *      @since 2.0
81          *      @brief  <i> [Deprecated] </i>
82          *
83          *      @deprecated     This method has portability issue.
84          *                      Return value may not be @c signed @c char since char is treated as unsigned char in ARM architecture. @n
85          *                      Use ToInt8() method to get @c int8_t
86          *
87          *      @return         The @c char equivalent of the current instance
88          */
89         virtual char ToChar(void) const = 0;
90
91         /**
92          *      Gets the @c signed @c short equivalent of the current instance of the %Number class.
93          *
94          *      @since 2.0
95          *
96          *      @return         The @c signed @c short equivalent of the current instance
97          */
98         virtual short ToShort(void) const = 0;
99
100         /**
101          *      Gets the @c signed @c int equivalent of the current instance of the %Number class.
102          *
103          *      @since 2.0
104          *
105          *      @return         The @c signed @c int equivalent of the current instance
106          */
107         virtual int ToInt(void) const = 0;
108
109         /**
110          *      Gets the @c signed @c long equivalent of the current instance of the %Number class.
111          *
112          *      @since 2.0
113          *
114          *      @return         The @c signed @c long equivalent of the current instance
115          */
116         virtual long ToLong(void) const = 0;
117
118         /**
119         *       Gets the @c signed @c long @c long equivalent of the current instance of the %Number class.
120         *
121         *       @since 2.0
122         *
123         *       @return         The @c signed @c long @c long equivalent of the current instance
124         */
125         virtual long long ToLongLong(void) const = 0;
126
127         /**
128          *      Gets the @c signed @c float equivalent of the current instance of the %Number class.
129          *
130          *      @since 2.0
131          *
132          *      @return         The @c signed @c float equivalent of the current instance
133          */
134         virtual float ToFloat(void) const = 0;
135
136         /**
137          *      Gets the @c signed @c double equivalent of the current instance of the %Number class.
138          *
139          *      @since 2.0
140          *
141          *      @return         The @c signed @c double equivalent of the current instance
142          */
143         virtual double ToDouble(void) const = 0;
144
145         /**
146          *      Gets the string representing the value of the current instance of the %Number class.
147          *
148          *      @since 2.0
149          *
150          *      @return         The string representing the value of the current instance
151          */
152         virtual String ToString(void) const = 0;
153
154         /**
155          *      Gets the @c int8_t equivalent of the current instance of the %Number class.
156          *
157          *      @since 3.0
158          *
159          *      @return         The @c int8_t equivalent of the current instance
160          */
161         virtual int8_t ToInt8(void) const
162         {
163                 return 0;
164         }
165
166 protected:
167         //
168         // This method is for internal use only. Using this method can cause behavioral, security-related,
169         // and consistency-related issues in the application.
170         // This method is reserved and may change its name at any time without prior notice.
171         //
172         // @since 2.0
173         //
174         virtual void Number_Reserved1(void) { }
175
176 }; // Number
177
178 }}   // Tizen::Base
179
180 #endif // _FBASE_NUMBER_H_