-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathObjectList.cpp
More file actions
59 lines (49 loc) · 1.12 KB
/
ObjectList.cpp
File metadata and controls
59 lines (49 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include "ObjectList.h"
#include "Object.h"
namespace df {
ObjectList::ObjectList() : m_count(0) {
for (int i = 0; i < MAX_OBJECTS; i++) {
m_p_obj[i] = nullptr;
}
}
int ObjectList::insert(Object *p_o) {
if (isFull()) {
return -1;
}
m_p_obj[m_count] = p_o;
m_count++;
return 0;
}
int ObjectList::remove(Object *p_o) {
for (int i = 0; i < m_count; i++) {
if (m_p_obj[i] == p_o) {
// Shift remaining elements left
for (int j = i; j < m_count - 1; j++) {
m_p_obj[j] = m_p_obj[j + 1];
}
m_p_obj[m_count - 1] = nullptr;
m_count--;
return 0;
}
}
return -1; // not found
}
void ObjectList::clear() {
m_count = 0;
}
int ObjectList::getCount() const {
return m_count;
}
bool ObjectList::isEmpty() const {
return (m_count == 0);
}
bool ObjectList::isFull() const {
return (m_count >= MAX_OBJECTS);
}
Object *ObjectList::operator[](int index) const {
if (index < 0 || index >= m_count) {
return nullptr;
}
return m_p_obj[index];
}
} // end namespace df