Mercurial > LightClone
annotate LightClone/Source/ArrayList.h @ 70:ffaeccdc105e
Work on screen manager
author | koryspansel |
---|---|
date | Tue, 11 Oct 2011 12:09:04 -0700 |
parents | 1fe27776627e |
children |
rev | line source |
---|---|
12 | 1 /* |
2 * ArrayList | |
3 */ | |
4 | |
5 #ifndef __ARRAYLIST_H__ | |
6 #define __ARRAYLIST_H__ | |
7 | |
54 | 8 #include "Types.h" |
61 | 9 #include "Debug.h" |
12 | 10 |
11 /* | |
12 * ArrayList | |
13 */ | |
14 template<typename Type> | |
15 class ArrayList | |
16 { | |
17 /* | |
18 * pList | |
19 */ | |
20 Type* pList; | |
21 | |
22 /* | |
23 * nCapacity | |
24 */ | |
25 uint32 nCapacity; | |
26 | |
27 /* | |
28 * nSize | |
29 */ | |
30 uint32 nSize; | |
31 | |
32 public: | |
33 | |
34 /* | |
35 * ArrayList | |
36 */ | |
37 ArrayList() : pList(0), nCapacity(0), nSize(0) | |
38 { | |
39 } | |
40 | |
41 /* | |
42 * ~ArrayList | |
43 */ | |
44 ~ArrayList() | |
45 { | |
46 delete[] pList; | |
47 } | |
48 | |
49 /* | |
50 * Add | |
51 */ | |
21
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
19
diff
changeset
|
52 ErrorCode Add(Type kValue) |
12 | 53 { |
54 ErrorCode eCode = Resize(nSize + 1); | |
55 if(eCode == Error_Success) | |
56 { | |
57 pList[nSize++] = kValue; | |
58 } | |
59 | |
60 return eCode; | |
61 } | |
62 | |
63 /* | |
64 * Remove | |
65 */ | |
66 ErrorCode Remove(uint32 nIndex) | |
67 { | |
68 ErrorCode eCode = Error_Fail; | |
69 | |
70 if(nIndex < nSize) | |
71 { | |
15
ee1c2510096d
Work on GUI system
koryspansel <koryspansel@bendbroadband.com>
parents:
12
diff
changeset
|
72 --nSize; |
12 | 73 |
15
ee1c2510096d
Work on GUI system
koryspansel <koryspansel@bendbroadband.com>
parents:
12
diff
changeset
|
74 for(uint32 i = nIndex; i < nSize; ++i) |
12 | 75 { |
76 pList[i] = pList[i + 1]; | |
77 } | |
78 | |
15
ee1c2510096d
Work on GUI system
koryspansel <koryspansel@bendbroadband.com>
parents:
12
diff
changeset
|
79 eCode = Error_Success; |
12 | 80 } |
81 | |
82 return eCode; | |
83 } | |
84 | |
85 /* | |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
86 * Remove |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
87 */ |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
88 ErrorCode Remove(Type& kItem) |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
89 { |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
90 for(uint32 i = 0; i < nSize; ++i) |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
91 { |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
92 if(pList[i] == kItem) |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
93 { |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
94 --nSize; |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
95 |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
96 for(; i < nSize; ++i) |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
97 pList[i] = pList[i + 1]; |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
98 |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
99 return Error_Success; |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
100 } |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
101 } |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
102 |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
103 return Error_Fail; |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
104 } |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
105 |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
106 /* |
12 | 107 * Clear |
108 */ | |
109 void Clear() | |
110 { | |
111 nSize = 0; | |
112 } | |
113 | |
114 /* | |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
115 * Size |
12 | 116 */ |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
15
diff
changeset
|
117 uint32 Size() const |
12 | 118 { |
119 return nSize; | |
120 } | |
121 | |
122 /* | |
123 * Find | |
124 */ | |
125 int32 Find(Type& kValue) const | |
126 { | |
127 for(uint32 i = 0; i < nSize; ++i) | |
128 { | |
129 if(pList[i] == kValue) | |
130 { | |
131 return (int32)i; | |
132 } | |
133 } | |
134 | |
135 return -1; | |
136 } | |
137 | |
138 /* | |
139 * operator [] | |
140 */ | |
61 | 141 Type& operator[](uint32 nIndex) |
12 | 142 { |
61 | 143 ASSERT(nIndex < nSize); |
12 | 144 return pList[nIndex]; |
145 } | |
146 | |
147 /* | |
148 * operator [] | |
149 */ | |
61 | 150 const Type& operator[](uint32 nIndex) const |
12 | 151 { |
61 | 152 ASSERT(nIndex < nSize); |
12 | 153 return pList[nIndex]; |
154 } | |
155 | |
156 private: | |
157 | |
158 /* | |
159 * Resize | |
160 */ | |
161 ErrorCode Resize(uint32 nAmount) | |
162 { | |
163 if(nAmount > nCapacity) | |
164 { | |
165 Type* pArray = new Type[2 * nAmount]; | |
166 | |
167 if(pList) | |
168 { | |
169 for(uint32 i = 0; i < nSize; ++i) | |
170 { | |
171 pArray[i] = pList[i]; | |
172 } | |
173 | |
174 delete[] pList; | |
175 } | |
176 | |
177 pList = pArray; | |
178 nCapacity = 2 * nAmount; | |
179 } | |
180 | |
181 return Error_Success; | |
182 } | |
183 }; | |
184 | |
185 #endif //__ARRAYLIST_H__ |