summaryrefslogtreecommitdiff
path: root/src/KingSystem/Resource/resUnitPool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/KingSystem/Resource/resUnitPool.cpp')
-rw-r--r--src/KingSystem/Resource/resUnitPool.cpp33
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