OSDN Git Service

initial files
[iptd/iPTd_R3.git] / src / Raym / Number.h
1 //
2 // Number.h
3 //
4
5 #pragma once
6
7 #include <vector>
8
9 #include <Raym/Object.h>
10 #include <Raym/String.h>
11
12 namespace Raym
13 {
14
15 class Number : public Object
16 {
17 private:
18     enum {
19         TYPE_Unkonown,
20         TYPE_Bool,
21         TYPE_Char,
22         TYPE_Double,
23         TYPE_Float,
24         TYPE_Int,
25         TYPE_Integer,
26         TYPE_Long,
27         TYPE_LongLong,
28         TYPE_Short,
29         TYPE_UnsignedChar,
30         TYPE_UnsignedInt,
31         TYPE_UnsignedInteger,
32         TYPE_UnsignedLong,
33         TYPE_UnsignedLongLong,
34         TYPE_UnsignedShort
35     }   _type;
36     union {
37         bool                _boolValue;
38         char                _charValue;
39         double              _doubleValue;
40         float               _floatValue;
41         int                 _intValue;
42         Integer             _integerValue;
43         long                _longValue;
44         long long           _longlongValue;
45         short               _shortValue;
46         unsigned char       _unsignedCharValue;
47         unsigned int        _unsignedIntValue;
48         UInteger            _unsignedIntegerValue;
49         unsigned long       _unsignedLongValue;
50         unsigned long long  _unsignedLongLongValue;
51         unsigned short      _unsignedShortValue;
52     }   _value;
53
54 protected:
55     Number();
56     ~Number();
57
58 public:
59     static Number *alloc();
60     Number *initWithBool(bool value);
61     Number *initWithChar(char value);
62     Number *initWithDouble(double value);
63     Number *initWithFloat(float value);
64     Number *initWithInt(int value);
65     Number *initWithInteger(Integer value);
66     Number *initWithLong(long value);
67     Number *initWithLongLong(long long value);
68     Number *initWithShort(short value);
69     Number *initWithUnsignedChar(unsigned char value);
70     Number *initWithUnsignedInt(unsigned int value);
71     Number *initWithUnsignedInteger(UInteger value);
72     Number *initWithUnsignedLong(unsigned long value);
73     Number *initWithUnsignedLongLong(unsigned long long value);
74     Number *initWithUnsignedShort(unsigned short value);
75     Number *retain();
76     Number *autorelease();
77
78     bool boolValue();
79     int intValue();
80     uint unsignedIntValue();
81
82     String *description();
83
84     virtual const char *className();
85 };
86
87 } // Raym
88