mFrame
載入中...
搜尋中...
無符合項目
Stacker.h
1
8#ifndef MFRAME_C045F3C4_B727_4170_9124_44EFD0DADB46
9#define MFRAME_C045F3C4_B727_4170_9124_44EFD0DADB46
10
11/* ***************************************************************************************
12 * Include
13 */
14
15//----------------------------------------------------------------------------------------
16#include "./../lang/Memory.h"
17#include "./../sys/Allocator.h"
18#include "./../util/Collection.h"
19#include "./../util/Iterator.h"
20
21//----------------------------------------------------------------------------------------
22
23/* ***************************************************************************************
24 * Namespace
25 */
26namespace ufm::sys {
27 class Stacker;
28} // namespace ufm::sys
29
30/* ***************************************************************************************
31 * Class/Interface/Struct
32 */
33
44 public ufm::util::Collection<void*>,
45 public ufm::sys::Allocator {
46 /* *************************************************************************************
47 * Variable
48 */
49 protected:
55
59 uint32 vMask;
60
61 /* *************************************************************************************
62 * Abstract Method
63 */
64
65 /* *************************************************************************************
66 * Construct Method
67 */
68 public:
76 inline Stacker(void* buffer, int size) : Stacker(ufm::lang::Memory(buffer, size)) {
77 return;
78 }
79
86 Stacker(ufm::lang::Memory memory) noexcept;
87
93 virtual ~Stacker(void) override;
94
95 /* *************************************************************************************
96 * Operator Method
97 */
98
99 /* *************************************************************************************
100 * Override Method - ufm::lang::Iterable<const void*>
101 */
102 public:
111 virtual void forEach(ufm::func::Consumer<void*&>& action) override;
112
119 virtual void** elementAt(int index) const override;
120
129 virtual int nextIndex(int index) const override;
130
136 virtual ufm::util::Iterator<void*> begin(void) override;
137
143 virtual ufm::util::Iterator<void*> end(void) override;
144
145 /* *************************************************************************************
146 * Override Method - ufm::util::Collection<ufm::lang::Memory>
147 */
148 public:
149 virtual void clear(void) override;
150
151 virtual bool isEmpty(void) const override;
152
153 virtual int size(void) const override;
154
155 /* *************************************************************************************
156 * Override Method - ufm::sys::Allocator
157 */
158 public:
165 virtual void* alloc(int size) override;
166
175 virtual bool free(void* ptr, int size = 0) override;
176
182 virtual int getFree(void) override;
183
189 virtual int getTotal(void) override;
190
191 /* *************************************************************************************
192 * Public Method
193 */
194 public:
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 public:
228 static Stacker* construct(void* pointer, int size);
229};
230
231/* ***************************************************************************************
232 * End of file
233 */
234
235#endif /* MFRAME_C045F3C4_B727_4170_9124_44EFD0DADB46 */
存儲資料的類別,提供動態記憶體管理功能。
Definition Memory.h:44
物件基底類別
Definition Object.h:63
堆疊式記憶體分配器
Definition Stacker.h:45
virtual ufm::util::Iterator< void * > end(void) override
返回一個迭代器,用於遍歷集合的結尾
uint32 vMask
對齊遮罩,用於記憶體對齊
Definition Stacker.h:59
ufm::lang::Memory vMemory
用於堆疊分配的記憶體空間
Definition Stacker.h:50
virtual bool isEmpty(void) const override
如果此集合不包含元素,則返回true。
virtual void forEach(ufm::func::Consumer< void *& > &action) override
遍歷集合中所有元素,對每個元素執行指定操作。 若所有元素處理完畢或操作中發生異常則停止。
virtual ~Stacker(void) override
解構 Stacker 物件
virtual int getFree(void) override
取得剩餘的可用記憶體數量
Stacker(ufm::lang::Memory memory) noexcept
建構一個新的 Stacker 物件
virtual void * alloc(int size) override
分配指定大小的記憶體
virtual ufm::util::Iterator< void * > begin(void) override
返回一個迭代器,用於遍歷集合中的元素
Stacker(void *buffer, int size)
建構一個新的 Stacker 物件
Definition Stacker.h:76
virtual void clear(void) override
從此集合中刪除所有元素(可選操作)。此方法返回後,集合將為空。
virtual int getTotal(void) override
取得總記憶體大小
static Stacker * construct(void *pointer, int size)
在指定的記憶體區域上建構 Stacker 物件
virtual int size(void) const override
返回此集合中的元素數。
virtual bool free(void *ptr, int size=0) override
釋放先前分配的記憶體
uint8 * vStackPointer
堆疊指針,指向下一個可分配的記憶體位置
Definition Stacker.h:54
virtual int nextIndex(int index) const override
返回當前索引的下一個有效索引。
virtual void ** elementAt(int index) const override
獲取集合中指定索引處的元素。
virtual ufm::lang::Memory allocMemory(int size)
分配指定大小的記憶體並返回其 Memory 封裝
[Class] 迭代器介面
Definition Iterator.h:42
系統功能相關的命名空間
Definition Object.h:31
[Interface] 消費者函數式介面模板
Definition Consumer.h:43
[Interface] 記憶體分配器介面
Definition Allocator.h:38
[Interface] 集合介面
Definition Collection.h:46