mFrame
載入中...
搜尋中...
無符合項目
PArraySet.h
1
7#ifndef MFRAME_24343078_A5C5_46DB_9823_EC2385331C5D
8#define MFRAME_24343078_A5C5_46DB_9823_EC2385331C5D
9
10/* ***************************************************************************************
11 * Include
12 */
13
14//----------------------------------------------------------------------------------------
15#include "./../lang/Memory.h"
16#include "./../util/PArray.h"
17#include "./../util/Set.h"
18
19//----------------------------------------------------------------------------------------
20
21/* ***************************************************************************************
22 * Namespace
23 */
24namespace ufm::util {
25 class PArraySet;
26} // namespace ufm::util
27
28/* ***************************************************************************************
29 * Class/Interface/Struct/Enum
30 */
31
156 /* *************************************************************************************
157 * Variable
158 */
159 private:
160 ufm::lang::Memory vMemory;
161
162 public:
163 int const vLength;
164
165 /* *************************************************************************************
166 * Abstract Method
167 */
168
169 /* *************************************************************************************
170 * Construct Method
171 */
172 public:
190 PArraySet(ufm::lang::Memory memory) noexcept;
191
207 inline PArraySet(int length)
208 : PArraySet(ufm::lang::Memory(length * static_cast<int>(sizeof(void*)))) {
209 return;
210 }
211
221 PArraySet(PArraySet& other) noexcept = default;
222
232 PArraySet(PArraySet&& other) noexcept = default;
233
241 virtual ~PArraySet(void) override;
242
243 /* *************************************************************************************
244 * Operator Method
245 */
246 public:
253 template <typename E>
254 inline operator const Set<E>&(void) const {
255 const Set<>* src = this;
256 return *reinterpret_cast<const Set<E>*>(src);
257 }
258
265 template <typename E>
266 inline operator Set<E>&(void) {
267 Set<>* src = this;
268 return *reinterpret_cast<Set<E>*>(src);
269 }
270
271 /* *************************************************************************************
272 * Override - ufm::util::Set<>
273 */
274 public:
295 virtual bool add(void* v) override;
296
315 virtual bool remove(void* v) override;
316
335 virtual bool replace(void* oldValue, void* newValue) override;
336
353 virtual bool contains(void* v) const override;
354
355 /* *************************************************************************************
356 * Override - ufm::util::Container
357 */
358 public:
364 virtual void clear(void) override;
365
372 virtual bool isEmpty(void) const override;
373
380 virtual int size(void) const override;
381
382 /* *************************************************************************************
383 * Override - ufm::lang::Iterable<>
384 */
385 public:
412 virtual void forEach(ufm::func::Consumer<void*&>& action) override;
413
438 virtual void** elementAt(int index) const override;
439
465 virtual int nextIndex(int index) const override;
466
486 virtual ufm::util::Iterator<void*> begin(void) override;
487
509 virtual ufm::util::Iterator<void*> end(void) override;
510
511 /* *************************************************************************************
512 * Public Method
513 */
514
515 /* *************************************************************************************
516 * Protected Method
517 */
518
519 /* *************************************************************************************
520 * Private Method
521 */
522
523 /* *************************************************************************************
524 * Static Variable
525 */
526
527 /* *************************************************************************************
528 * Static Method
529 */
530};
531
532#endif /* MFRAME_24343078_A5C5_46DB_9823_EC2385331C5D */
動態記憶體管理類別
Definition Memory.h:38
物件基底類別
Definition Object.h:63
迭代器類別,提供遍歷集合元素的標準介面。
Definition Iterator.h:257
基於陣列的集合容器實作
Definition PArraySet.h:155
virtual ~PArraySet(void) override
析構函數
PArraySet(ufm::lang::Memory memory) noexcept
使用指定記憶體建構 PArraySet 物件
virtual void ** elementAt(int index) const override
獲取集合中指定索引處的元素指標
virtual bool replace(void *oldValue, void *newValue) override
替換集合中的指定元素
virtual void clear(void) override
清除集合中的所有元素
PArraySet(int length)
使用指定長度建構 PArraySet 物件
Definition PArraySet.h:207
virtual bool contains(void *v) const override
檢查集合是否包含指定元素
virtual int nextIndex(int index) const override
返回當前索引的下一個有效索引
virtual int size(void) const override
返回集合中的元素數量
virtual bool isEmpty(void) const override
檢查集合是否為空
virtual bool add(void *v) override
將元素添加到集合中
virtual ufm::util::Iterator< void * > end(void) override
返回指向集合結束位置的迭代器
PArraySet(PArraySet &other) noexcept=default
複製建構子
virtual ufm::util::Iterator< void * > begin(void) override
返回指向集合開始位置的迭代器
virtual bool remove(void *v) override
從集合中移除指定元素
int const vLength
陣列長度
Definition PArraySet.h:163
virtual void forEach(ufm::func::Consumer< void *& > &action) override
遍歷集合中的所有元素,對每個元素執行指定操作
PArraySet(PArraySet &&other) noexcept=default
移動建構子
Definition Iterable.h:28
[Interface] 消費者函數式介面模板
Definition Consumer.h:43
集合介面,定義不允許重複元素的容器。
Definition Set.h:88