diff options
| author | Léo Lam <leo@leolam.fr> | 2020-10-04 15:39:04 +0200 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2020-10-08 00:09:53 +0200 |
| commit | 76655d85a90ca1cede47a45b4faa3e6e767b99a3 (patch) | |
| tree | 15d04cd8e0e130435f11d561c7c4131ee44f674f /src/KingSystem/Resource/resUnitPool.cpp | |
| parent | 99de7fa00931d1d7c75a0c51d6fd38c09f60b160 (diff) | |
ksys/res: Implement some ResourceMgrTask prerequisites
Diffstat (limited to 'src/KingSystem/Resource/resUnitPool.cpp')
| -rw-r--r-- | src/KingSystem/Resource/resUnitPool.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/KingSystem/Resource/resUnitPool.cpp b/src/KingSystem/Resource/resUnitPool.cpp new file mode 100644 index 00000000..fd235159 --- /dev/null +++ b/src/KingSystem/Resource/resUnitPool.cpp @@ -0,0 +1,33 @@ +#include "KingSystem/Resource/resUnitPool.h" + +namespace ksys::res { + +ResourceUnitPool::ResourceUnitPool() = default; + +ResourceUnitPool::~ResourceUnitPool() = default; + +bool ResourceUnitPool::init() { + for (s32 i = 0; i < UnitCapacity; ++i) + mRingBuffer.pushBack(&mUnits[i]); + return true; +} + +ResourceUnit* ResourceUnitPool::tryAlloc() { + if (mRingBuffer.empty()) + return nullptr; + return mRingBuffer.popFront(); +} + +ResourceUnit* ResourceUnitPool::alloc() { + return mRingBuffer.popFront(); +} + +void ResourceUnitPool::free(ResourceUnit* unit) { + mRingBuffer.pushBack(unit); +} + +void ResourceUnitPool::freeForSync(ResourceUnit* unit) { + free(unit); +} + +} // namespace ksys::res |
