99 {
100
102
104
105 std::array<int, 2> a;
106 uint64_t b = 0;
107 char* c = nullptr;
108 std::tuple<int, void* (*)(int)> d { 1, nullptr };
109
110 m_FreeList.Push(&a);
111 m_FreeList.Push(&b);
112
115
116 {
117 m_FreeList.PushRange(list.
Begin(), list.
End(), list.
Size());
118
119 EXPECT_EQ(m_FreeList.Empty(), false);
120 EXPECT_EQ(m_FreeList.ApplyforNBlocks(), 1);
121 EXPECT_EQ(m_FreeList.Size(), 4);
122 EXPECT_EQ(m_FreeList.End(), &a);
123
124 const void* p = m_FreeList.Begin();
125 EXPECT_EQ(p, &d);
126
127 const void* p1 = *(void**)p;
128 EXPECT_EQ(p1, &c);
129
130 const void* p2 = *(void**)p1;
131 EXPECT_EQ(p2, &b);
132
133 const void* p3 = *(void**)p2;
134 EXPECT_EQ(p3, &a);
135
136 const void* p4 = *(void**)p3;
137 EXPECT_EQ(p4, nullptr);
138 }
139
140 {
143
144 {
145 EXPECT_EQ(m_FreeList.Empty(), false);
146 EXPECT_EQ(m_FreeList.ApplyforNBlocks(), 1);
147 EXPECT_EQ(m_FreeList.Size(), 2);
148 EXPECT_EQ(m_FreeList.End(), &a);
149
150 const void* p = m_FreeList.Begin();
151 EXPECT_EQ(p, &b);
152
153 const void* p1 = *(void**)p;
154 EXPECT_EQ(p1, &a);
155
156 const void* p2 = *(void**)p1;
157 EXPECT_EQ(p2, nullptr);
158 }
159
160 {
161 EXPECT_EQ(list2.
Empty(),
false);
163 EXPECT_EQ(list2.
Size(), 0);
164 EXPECT_EQ(list2.
End(), &c);
165
166 const void* p = list2.
Begin();
167 EXPECT_EQ(p, &d);
168
169 const void* p1 = *(void**)p;
170 EXPECT_EQ(p1, &c);
171
172 const void* p2 = *(void**)p1;
173 EXPECT_EQ(p2, nullptr);
174 }
175 }
176 }
#define SPICESTEST_PROFILE_FUNCTION()
bool Empty() const
Determine if this list is empty.
void PopRange(void *&start, void *&end, size_t size)
Pop unused memory blocks from this free list.
void Push(void *obj)
Recycle a object memory to this free list.
const void * Begin() const
Get current pointer.
const size_t ApplyforNBlocks() const
Get m_NBlocksAppliedFor reference.
void *& End()
Get end pointer (no const & reference version).
const size_t Size() const
Get this freelist spare size.
Free list for memory pool.