-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathChunk.h
48 lines (35 loc) · 968 Bytes
/
Chunk.h
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
#ifndef Chunk_h__
#define Chunk_h__
// Forward Declarations:
template <class TMeat>
class Pool;
template <class TMeat>
class Chunk {
public:
TMeat *meat; // Pointer to the actual little bit of data whose pool is being managed
Chunk ();
inline void SetPool (Pool<TMeat> *_pool) { this->pool = _pool; }
inline void SetMeat (TMeat *_meat) { this->meat = _meat; }
inline void Use () { this->use_count++; }
inline void DisUse () {
this->use_count--;
if (this->use_count <= 0) {
this->returnToPool ();
}
}
inline int GetUseCount () { return this->use_count; }
private:
int use_count;
Pool<TMeat> *pool;
// Utility Functions:
void returnToPool ();
};
////////////////////////////////////////////////////////////////////////////////
template <class TMeat>
Chunk<TMeat>::Chunk() {
this->meat = nullptr;
this->pool = nullptr;
this->use_count = 0;
}
#include "Chunk.cpp"
#endif // Chunk_h__