Making changes in number classes to maintain compatibility with 2.1 applications
[platform/framework/native/appfw.git] / src / base / FBase_NumberUtil.h
1 //
2 // Copyright (c) 2013 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                FBase_NumberUtil.h
19  * @brief               This is the header file for the _NumberUtil class.
20  *
21  * This header file contains the declarations of the _NumberUtil class.
22  */
23 #ifndef _FBASE_INTERNAL_NUMBER_UTIL_H_
24 #define _FBASE_INTERNAL_NUMBER_UTIL_H_
25
26 #include <FBaseObject.h>
27 #include <FBaseString.h>
28
29 namespace Tizen { namespace Base
30 {
31
32 class _NumberUtil
33 {
34 public:
35         /**
36          * This is the destructor for this class.
37          *
38          * @since 3.0
39          */
40         virtual ~_NumberUtil(void);
41
42         /**
43          *      Decodes a string into a @c signed @c long.
44          *
45          *      @since 3.0
46          *
47          *      @return         An error code
48          *      @param[in]      inputStr        A numeric value
49          *      @param[out]     value           The result of the operation
50          *      @exception      E_SUCCESS       The method is successful.
51          *      @exception      E_NUM_FORMAT    The specified string does not contain a number that can be parsed.
52          *      @exception      E_OUT_OF_RANGE  The decoded string value is not between VALUE_MIN and VALUE_MAX range
53          *      @remarks        This method accepts decimal, hexadecimal, and octal numbers given by the
54          *                              following grammar:
55          *
56          *      @code
57          *      - DecodableString:
58          *              Sign[opt] DecimalNumeral
59          *              Sign[opt] 0x HexDigits
60          *              Sign[opt] 0X HexDigits
61          *              Sign[opt] # HexDigits
62          *              Sign[opt] 0 OctalDigits
63          *      - Sign:
64          *              '-'
65          *      @endcode
66          */
67          static result Decode(const String& inputStr, long& value);
68
69         /**
70          *      Decodes a string into a @c signed @c long long.
71          *
72          *      @since 3.0
73          *
74          *      @return         An error code
75          *      @param[in]      inputStr        A numeric value
76          *      @param[out]     value           The result of the operation
77          *      @exception      E_SUCCESS       The method is successful.
78          *      @exception      E_NUM_FORMAT    The specified string does not contain a number that can be parsed.
79          *      @exception      E_OUT_OF_RANGE  The decoded value is not between VALUE_MIN and VALUE_MAX range
80          *      @remarks        This method accepts decimal, hexadecimal, and octal numbers given by the
81          *                              following grammar:
82          *
83          *      @code
84          *      - DecodableString:
85          *              Sign[opt] DecimalNumeral
86          *              Sign[opt] 0x HexDigits
87          *              Sign[opt] 0X HexDigits
88          *              Sign[opt] # HexDigits
89          *              Sign[opt] 0 OctalDigits
90          *      - Sign:
91          *              '-'
92          *      @endcode
93          */
94          static result Decode(const String& inputStr, long long& value);
95
96         /**
97          *      Parses the specified string representing a numeric value
98          *      using the specified radix and returns the value as @c signed @c long.
99          *
100          *      @since 3.0
101          *
102          *      @return         An error code
103          *      @param[in]      inputStr        A string representing a numeric value
104          *      @param[in]      radix           The radix of the string representing a numeric value @n
105          *                                      Radix ranges in between 2 to 36.
106          *      @param[out]     value           The result of the operation
107          *      @exception      E_SUCCESS       The method is successful.
108          *      @exception      E_NUM_FORMAT    The specified string does not contain a number that can be parsed.
109          *      @exception      E_OUT_OF_RANGE  The specified @c radix is invalid.
110          *                                      The parsed value is not between VALUE_MIN and VALUE_MAX range
111          */
112          static result Parse(const String& inputStr, int radix, long& value);
113
114
115         /**
116          *      Parses the specified string representing a numeric value
117          *      using the specified radix and returns the value as @c signed @c long long.
118          *
119          *      @since 3.0
120          *
121          *      @return         An error code
122          *      @param[in]      inputStr        A string representing a numeric value
123          *      @param[in]      radix           The radix of the string representing a numeric value @n
124          *                                      Radix ranges in between 2 to 36.
125          *      @param[out]     value           The result of the operation
126          *      @exception      E_SUCCESS       The method is successful.
127          *      @exception      E_NUM_FORMAT    The specified string does not contain a number that can be parsed.
128          *      @exception      E_OUT_OF_RANGE  The specified @c radix is invalid.
129          *                                      The parsed value is not between VALUE_MIN and VALUE_MAX range
130          */
131          static result Parse(const String& inputStr, int radix, long long& value);
132
133 private:
134         //
135         // This is the default constructor for this class.
136         //
137         // @since 3.0
138         //
139         _NumberUtil();
140
141         //
142         // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
143         //
144         // @since 3.0
145         // @param[in]   rhs     An instance of %_NumberUtil
146         //
147         _NumberUtil(const _NumberUtil& rhs);
148
149         //
150         // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
151         //
152         // @since 3.0
153         // @param[in]   rhs     An instance of %_NumberUtil
154         //
155         _NumberUtil& operator =(const _NumberUtil& rhs);
156
157         //
158         //      Finds the radix by parsing the input string.
159         //
160         //      @since 3.0
161         //
162         //      @return         An error code
163         //      @param[in]      inputStr        A numeric value
164         //      @param[out]     radix           radix of the input string
165         //      @exception      E_SUCCESS       The method is successful.
166         //      @exception      E_NUM_FORMAT    The specified string does not contain a number that can be parsed.
167         //      @remarks        This method accepts decimal, hexadecimal, and octal numbers given by the
168         //                              following grammar:
169         //
170         //      @code
171         //      - DecodableString:
172         //              Sign[opt] DecimalNumeral
173         //              Sign[opt] 0x HexDigits
174         //              Sign[opt] 0X HexDigits
175         //              Sign[opt] # HexDigits
176         //              Sign[opt] 0 OctalDigits
177         //      - Sign:
178         //              '-'
179         //      @endcode
180         //
181          static result FindRadix(String& inputStr, int& radix);
182 }; // _NumberUtil
183
184 }} // Tizen::Base
185
186 #endif // _FBASE_INTERNAL_NUMBER_UTIL_H_