rodecomp/Source/Utility/Async/NRecycleObjectPoolMgr.cpp
ragnarok-clanker 3399be46a3 Decompile fn_07637 (NRecycleObjectPoolMgr::Acquire)
Batch #12956 by cremane: 1 byte-identical, 0 confirmed by peer review.

- fn_07637 NRecycleObjectPoolMgr::Acquire: byte-identical

Merged automatically: every function is byte-identical to the original.
2026-11-06 03:34:18 +00:00

49 lines
1.3 KiB
C++

#include "Utility/Async/NRecycleObjectPoolMgr.h"
// INLINED
std::size_t NRecycleObjectPoolMgr::NameHash::operator()(const std::string& name) const {
std::uint32_t hash = 2166136261;
for (unsigned char byte : name) {
hash = 16777619 * (hash ^ byte);
}
std::uint32_t value = hash & 0x7FFFFFFF;
std::int32_t reduced = static_cast<std::int32_t>(16807 * (value % 127773)) - static_cast<std::int32_t>(2836 * (value / 127773));
if (reduced < 0) {
reduced += 0x7FFFFFFF;
}
return static_cast<std::uint32_t>(reduced);
}
// OFFSET: 0x00736B30
// FUNCTION: fn_07632
NRecycleObjectPoolMgr::NRecycleObjectPoolMgr() : m_enabled(false) {
this->m_pools.rehash(8);
this->m_enabled = true;
}
// OFFSET: 0x00736DE0
// FUNCTION: fn_07635
NRecycleObjectPoolMgr::~NRecycleObjectPoolMgr() = default;
// OFFSET: 0x00736EE0
// FUNCTION: fn_07637
NRecycleObject* NRecycleObjectPoolMgr::Acquire(std::string poolName) {
auto pool = this->m_pools.find(poolName);
if (pool != this->m_pools.end()) {
return pool->second->Acquire();
}
return nullptr;
}
// OFFSET: 0x00736F60
// FUNCTION: fn_07638
void NRecycleObjectPoolMgr::Release(std::string poolName, NRecycleObject* object) {
auto pool = this->m_pools.find(poolName);
if (pool != this->m_pools.end()) {
pool->second->Release(object);
}
}