mFrame
載入中...
搜尋中...
無符合項目
ArrayMap.h
1
7#ifndef MFRAME_B20AC9B6_95F9_498A_80A8_01F0884D207D
8#define MFRAME_B20AC9B6_95F9_498A_80A8_01F0884D207D
9
10/* ***************************************************************************************
11 * Include
12 */
13
14//----------------------------------------------------------------------------------------
15
16//----------------------------------------------------------------------------------------
17#include "./../lang/Memory.h"
18#include "./../util/Iterator.h"
19#include "./../util/Map.h"
20#include "./../util/PArray.h"
21
22/* ***************************************************************************************
23 * Namespace
24 */
25namespace mframe::util {
26 class ArrayMap;
27}
28
29/* ***************************************************************************************
30 * Class/Interface/Struct/Enum
31 */
33 public mframe::util::Map<> {
34 /* *************************************************************************************
35 * SubClass
36 */
37 private:
38 struct Block {
39 int vKey;
40 void* vValue;
41 };
42
43 public:
45 public mframe::util::MapEntry<> {
46 /* ***********************************************************************************
47 * Variable
48 */
49 friend ArrayMap;
50
51 private:
52 ArrayMap::Block& vBlock;
53
54 /* ***********************************************************************************
55 * Abstract Method
56 */
57
58 /* ***********************************************************************************
59 * Construct Method
60 */
61 public:
67 Entry(ArrayMap::Block& block);
68
73 virtual ~Entry(void) override;
74 /* ***********************************************************************************
75 * Operator Method
76 */
77 public:
84 template <typename T>
85 inline operator const MapEntry<T>&(void) const {
86 const MapEntry<>* src = this;
87 return *reinterpret_cast<const MapEntry<T>*>(src);
88 }
89
95 template <typename T>
96 inline operator MapEntry<T>&(void) {
97 MapEntry<>* src = this;
98 return *reinterpret_cast<MapEntry<T>*>(src);
99 }
100
101 /* ***********************************************************************************
102 * Public Method <Override>
103 */
104 public:
105 virtual int getKey(void) override;
106
107 virtual void* getValue(void) override;
108
109 virtual void* setValue(void* value) override;
110
111 virtual void remove(void) override;
112
113 /* ***********************************************************************************
114 * Public Method
115 */
116
117 /* ***********************************************************************************
118 * Protected Method
119 */
120
121 /* ***********************************************************************************
122 * Private Method
123 */
124 private:
125 void setBlock(ArrayMap::Block& block);
126
127 /* ***********************************************************************************
128 * Static Variable
129 */
130
131 /* ***********************************************************************************
132 * Static Method
133 */
134 };
136 public mframe::util::Iterator<mframe::util::MapEntry<>> {
137 /* ***********************************************************************************
138 * Variable
139 */
140 private:
141 ArrayMap& vArrayMap;
142 ArrayMap::Entry vEntry;
143 int vIndex;
144 /* ***********************************************************************************
145 * Abstract Method
146 */
147
148 /* ***********************************************************************************
149 * Construct Method
150 */
151 public:
157 Iterator(ArrayMap& arrayMap);
158
163 virtual ~Iterator(void) override;
164 /* ***********************************************************************************
165 * Operator Method
166 */
167 public:
174 template <typename V>
175 inline operator const mframe::util::Iterator<mframe::util::MapEntry<V>>&(void) const {
177 return *reinterpret_cast<const mframe::util::Iterator<mframe::util::MapEntry<V>>*>(src);
178 }
179
185 template <typename V>
190
191 /* ***********************************************************************************
192 * Public Method <Override> - mframe::util::Iterator<>
193 */
194 public:
195 virtual bool hasNext(void) override;
196
197 virtual mframe::util::MapEntry<>* next(void) override;
198
199 virtual void reset(void) override;
200 /* ***********************************************************************************
201 * Public Method
202 */
203
204 /* ***********************************************************************************
205 * Protected Method
206 */
207
208 /* ***********************************************************************************
209 * Private Method
210 */
211
212 /* ***********************************************************************************
213 * Static Variable
214 */
215
216 /* ***********************************************************************************
217 * Static Method
218 */
219 };
220 /* *************************************************************************************
221 * Variable
222 */
223 private:
224 mframe::util::PArray vPArray;
225
226 /* *************************************************************************************
227 * Abstract Method
228 */
229
230 /* *************************************************************************************
231 * Construct Method
232 */
233 public:
239
246
251 virtual ~ArrayMap(void) override;
252
253 /* *************************************************************************************
254 * Operator Method
255 */
256 public:
263 template <typename T>
264 inline operator const mframe::util::Map<T>&(void) const {
265 const mframe::util::Map<>* src = this;
266 return *reinterpret_cast<const mframe::util::Map<T>*>(src);
267 }
268
274 template <typename T>
275 inline operator mframe::util::Map<T>&(void) {
276 mframe::util::Map<>* src = this;
277 return *reinterpret_cast<mframe::util::Map<T>*>(src);
278 }
279
280 /* *************************************************************************************
281 * Public Method <Override> - mframe::util::Map<>
282 */
283 public:
284 virtual bool containsKey(Interface& key) const override;
285
286 virtual bool containsValue(void* value) const override;
287
288 virtual void* get(Interface& key) const override;
289
290 virtual void* put(Interface& key, void* value) override;
291
292 virtual void* remove(Interface& key) override;
293
294 virtual void* replace(Interface& key, void* value) override;
295
296 /* *************************************************************************************
297 * Public Method <Override> - mframe::util::Collection<mframe::util::MapSet<void>>
298 */
299 public:
300 virtual void clear(void) override;
301
302 virtual bool isEmpty(void) const override;
303
304 virtual int size(void) const override;
305
306 /* *************************************************************************************
307 * Public Method <Override> - mframe::util::Collection<mframe::util::MapSet<void>>
308 */
310
311 /* *************************************************************************************
312 * Public Method
313 */
314
315 /* *************************************************************************************
316 * Protected Method
317 */
318
319 /* *************************************************************************************
320 * Private Method
321 */
322
323 /* *************************************************************************************
324 * Static Variable
325 */
326
327 /* *************************************************************************************
328 * Static Method
329 */
330};
331
332#endif /* MFRAME_B20AC9B6_95F9_498A_80A8_01F0884D207D */
Definition Memory.h:29
Definition Object.h:34
Definition ArrayMap.h:45
virtual void * getValue(void) override
Get the Value object.
virtual ~Entry(void) override
Destroy the Entry Set object.
virtual void remove(void) override
從Map中移除該MapSet
Entry(ArrayMap::Block &block)
Construct a new Entry Set object.
virtual int getKey(void) override
Get the Key object.
Definition ArrayMap.h:136
Iterator(ArrayMap &arrayMap)
Construct a new Iterator object.
virtual ~Iterator(void) override
Destroy the Iterator object.
virtual mframe::util::MapEntry * next(void) override
返回迭代中的下一個元素。
virtual void reset(void) override
重新設定該迭代器。
virtual bool hasNext(void) override
如果迭代具有更多的元素,則傳回true。 (換句話說,如果next()傳回一個元素而不是回傳nullptr,則傳回true)
Definition ArrayMap.h:33
virtual ~ArrayMap(void) override
Destroy the object.
virtual void clear(void) override
從此集合中刪除所有元素(可選操作)。此方法返回後,集合將為空。
virtual bool isEmpty(void) const override
如果此集合不包含元素,則返回true。
virtual void * get(Interface &key) const override
將指定的值與該映射中的指定鍵相關聯(可選操作)。
virtual int size(void) const override
返回此集合中的元素數。
ArrayMap(int size)
Construct a new object.
virtual void * remove(Interface &key) override
virtual void forEach(mframe::func::Consumer< mframe::util::MapEntry< void > & > &action) override
對Iterable的每個元素執行給定的操作,直到處理完所有元素或該操作引發異常。 如果指定了迭代順序,則操作會按迭代順序執行。
ArrayMap(const mframe::lang::Memory &other)
Construct a new Array Map object.
virtual bool containsKey(Interface &key) const override
如果此映射將一個或多個鍵映射到指定的值,則返回true。
Definition PArray.h:31
Definition Array.h:22
Definition Consumer.h:31
Definition Interface.h:134
Definition Iterator.h:32
Definition MapEntry.h:31
將鍵映射到值的對象。地圖不能包含重複的鍵; 每個鍵可以映射到最多一個值。
Definition Map.h:40