From 76655d85a90ca1cede47a45b4faa3e6e767b99a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Sun, 4 Oct 2020 15:39:04 +0200 Subject: ksys/res: Implement some ResourceMgrTask prerequisites --- src/KingSystem/Resource/resUnitPool.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/KingSystem/Resource/resUnitPool.cpp (limited to 'src/KingSystem/Resource/resUnitPool.cpp') 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 -- cgit v1.2.3