DCL 4.0
Loading...
Searching...
No Matches
Numeric.h
Go to the documentation of this file.
1#ifndef __DCL_NUMERIC_H__
2#define __DCL_NUMERIC_H__ 20050305
3
4#ifndef __DCL_CONFIG_H__
5#include <dcl/Config.h>
6#endif
7#ifndef __DCL_STRING_H__
8#include <dcl/String.h>
9#endif
10#ifndef __DCL_EXCEPTION_H__
11#include <dcl/Exception.h>
12#endif
13
14__DCL_BEGIN_NAMESPACE
15
16class Integer;
17class UInteger;
18class Int32;
19class UInt32;
20class Int64;
21class UInt32;
22class Single;
23class Double;
24class Decimal;
25
27{
28public:
29 int __n;
30
31public:
32 Integer(int _n);
33 String toString(unsigned _base = 10) const;
34
38 static String toString(int _n, unsigned _base = 10);
39 static String toString(int _n, const wchar_t* _format);
40
41 static int parse(const wchar_t* _number, unsigned _base = 10)
43
44 static int parse(const wchar_t* _number, unsigned _base, int _default);
45};
46
48{
49public:
50 unsigned int __u;
51
52public:
53 UInteger(unsigned int _u);
54 String toString(unsigned _base = 10) const;
58 static String toString(unsigned int _u, unsigned _base = 10);
59 static String toString(unsigned int _u, const wchar_t* _format);
60
61 static unsigned int parse(const wchar_t* _number, unsigned _base = 10)
63
64 static unsigned int parse(const wchar_t* _number, unsigned _base, unsigned int _default);
65};
66
68{
69public:
70 int32_t __n;
71
72public:
73 Int32(int32_t _n);
74 String toString(unsigned _base = 10) const;
75
76 static String toString(int32_t _n, unsigned _base = 10);
77 static String toString(int32_t _n, const wchar_t* _format);
78
79 static int32_t parse(const wchar_t* _number, unsigned _base = 10)
81
82 static int32_t parse(const wchar_t* _number, unsigned _base, int32_t _default);
83
84 static ByteString toByteString(int32_t _n, unsigned _base = 10);
85};
86
88{
89public:
90 uint32_t __u;
91
92public:
93 UInt32(uint32_t _u);
94 String toString(unsigned _base = 10) const;
95
96 static String toString(uint32_t _u, unsigned _base = 10);
97 static String toString(uint32_t _u, const wchar_t* _format);
98
99 static uint32_t parse(const wchar_t* _number, unsigned _base = 10)
101
102 static uint32_t parse(const wchar_t* _number, unsigned _base, uint32_t _default);
103
104 static ByteString toByteString(uint32_t _u, unsigned _base = 10);
105};
106
108{
109public:
110 int64_t __n;
111
112public:
113 Int64(int64_t _n);
114 String toString(unsigned _base = 10) const;
115
116 static String toString(int64_t _n, unsigned _base = 10);
117 static String toString(int64_t _n, const wchar_t* _format);
118
119 static int64_t parse(const wchar_t* _number, unsigned _base = 10)
121
122 static int64_t parse(const wchar_t* _number, unsigned _base, int64_t _default);
123
124 static ByteString toByteString(int64_t _n, unsigned _base = 10);
125};
126
128{
129public:
130 uint64_t __u;
131
132public:
133 UInt64(uint64_t _u);
134 String toString(unsigned _base = 10) const;
135
136 static String toString(uint64_t _u, unsigned _base = 10);
137 static String toString(uint64_t _u, const wchar_t* _format);
138
139 static uint64_t parse(const wchar_t* _number, unsigned _base = 10)
141
142 static uint64_t parse(const wchar_t* _number, unsigned _base, uint64_t _default);
143
144 static ByteString toByteString(uint64_t _u, unsigned _base = 10);
145};
146
148{
149public:
150 float __f;
151
152public:
153 Single(float _f);
154 String toString() const;
155#if 0
156 // use gcvt
157 static String toString(float _f);
158#endif
159 // use String::format
160 static String toString(float _f, const wchar_t* _format);
161
162 // _number
163 // - glibc : decimal, hex-decimal, infinite or NAM(not-a-number)
164 // - msvcrt : decimal
165 static float parse(const wchar_t* _number)
167
168 static float parse(const wchar_t* _number, float _default);
169
170 static ByteString toByteString(float _f, const char* _format);
171};
172
174{
175public:
176 double __d;
177
178public:
179 Double(double _d);
180 String toString() const;
181#if 0
182 // use gcvt
183 static String toString(double _d);
184#endif
185 // use String::format
186 static String toString(double _d, const wchar_t* _format);
187
188 static double parse(const wchar_t* _number)
190
191 static double parse(const wchar_t* _number, double _default);
192
193 static ByteString toByteString(double _f, const char* _format);
194};
195
197{
198protected:
199 String m_value;
200public:
201 Decimal();
202 Decimal(const Decimal& value);
203#if 0
204 Decimal(int _n);
205 Decimal(unsigned int _u);
206#endif
207 Decimal(int32_t _n);
208 Decimal(uint32_t _u);
209 Decimal(int64_t _n);
210 Decimal(uint64_t _u);
211 Decimal(float f);
212 Decimal(double d);
213 Decimal(const String& strNumber);
214
215 void assign(const wchar_t* _number, int _n);
216
217 const Decimal& operator = (const Decimal& value);
218#if 0
219 const Decimal& operator = (int _n);
220 const Decimal& operator = (unsigned int _u);
221#endif
222 const Decimal& operator = (int32_t _n);
223 const Decimal& operator = (uint32_t _u);
224 const Decimal& operator = (int64_t _n);
225 const Decimal& operator = (uint64_t _u);
226
227 const Decimal& operator = (float value);
228 const Decimal& operator = (double value);
229
230 const Decimal& operator = (const String& strNumber);
231
232 static const char* FORMAT_STRING; // "#,###.####"
233
234 String toString() const;
235 String toStringF(const char* pszDecimalFormat = NULL) const;
236
237
238 static String toString(const Decimal& value);
239 static String toStringF(const Decimal& value,
240 const char* pszDecimalFormat = NULL);
241 };
242
243#include <dcl/Numeric.inl>
244
245__DCL_END_NAMESPACE
246
247#endif // __DCL_NUMERIC_H__
#define NULL
Definition Config.h:340
#define DCLCAPI
Definition Config.h:100
#define __DCL_THROWS1(e)
Definition Config.h:167
String toStringF(const char *pszDecimalFormat=NULL) const
Definition Numeric.inl:275
void assign(const wchar_t *_number, int _n)
Definition Numeric.inl:207
String toString() const
Definition Numeric.inl:270
static String toString(const Decimal &value)
static const char * FORMAT_STRING
Definition Numeric.h:232
String m_value
Definition Numeric.h:199
static double parse(const wchar_t *_number) __DCL_THROWS1(NumericConvertException *)
Definition Numeric.cpp:826
double __d
Definition Numeric.h:176
Double(double _d)
Definition Numeric.inl:142
String toString() const
Definition Numeric.inl:147
static ByteString toByteString(double _f, const char *_format)
Definition Numeric.cpp:891
static ByteString toByteString(int32_t _n, unsigned _base=10)
Definition Numeric.cpp:365
String toString(unsigned _base=10) const
Definition Numeric.inl:87
int32_t __n
Definition Numeric.h:70
static int32_t parse(const wchar_t *_number, unsigned _base=10) __DCL_THROWS1(NumericConvertException *)
Definition Numeric.cpp:284
Int32(int32_t _n)
Definition Numeric.inl:82
int64_t __n
Definition Numeric.h:110
static ByteString toByteString(int64_t _n, unsigned _base=10)
Definition Numeric.cpp:581
String toString(unsigned _base=10) const
Definition Numeric.inl:111
static int64_t parse(const wchar_t *_number, unsigned _base=10) __DCL_THROWS1(NumericConvertException *)
Definition Numeric.cpp:513
Int64(int64_t _n)
Definition Numeric.inl:106
int __n
Definition Numeric.h:29
Integer(int _n)
Definition Numeric.inl:16
String toString(unsigned _base=10) const
Definition Numeric.inl:21
static int parse(const wchar_t *_number, unsigned _base=10) __DCL_THROWS1(NumericConvertException *)
Definition Numeric.inl:36
float __f
Definition Numeric.h:150
String toString() const
Definition Numeric.inl:135
static float parse(const wchar_t *_number) __DCL_THROWS1(NumericConvertException *)
Definition Numeric.cpp:728
Single(float _f)
Definition Numeric.inl:130
static ByteString toByteString(float _f, const char *_format)
Definition Numeric.cpp:793
UInt32(uint32_t _u)
Definition Numeric.inl:94
static uint32_t parse(const wchar_t *_number, unsigned _base=10) __DCL_THROWS1(NumericConvertException *)
Definition Numeric.cpp:401
static ByteString toByteString(uint32_t _u, unsigned _base=10)
Definition Numeric.cpp:472
uint32_t __u
Definition Numeric.h:90
String toString(unsigned _base=10) const
Definition Numeric.inl:99
static ByteString toByteString(uint64_t _u, unsigned _base=10)
Definition Numeric.cpp:680
UInt64(uint64_t _u)
Definition Numeric.inl:118
static uint64_t parse(const wchar_t *_number, unsigned _base=10) __DCL_THROWS1(NumericConvertException *)
Definition Numeric.cpp:617
String toString(unsigned _base=10) const
Definition Numeric.inl:123
uint64_t __u
Definition Numeric.h:130
unsigned int __u
Definition Numeric.h:50
UInteger(unsigned int _u)
Definition Numeric.inl:49
String toString(unsigned _base=10) const
Definition Numeric.inl:54
static unsigned int parse(const wchar_t *_number, unsigned _base=10) __DCL_THROWS1(NumericConvertException *)
Definition Numeric.inl:69