CSimplePool matches

This commit is contained in:
Phillip Stephens 2025-05-13 12:05:24 -07:00
parent 58bf733091
commit 03f3b2e312
3 changed files with 28 additions and 29 deletions

View File

@ -16,15 +16,15 @@ public:
CSimplePool(IFactory& factory);
~CSimplePool();
void DebugDumpPool() const;
virtual CToken GetObj(const SObjectTag& tag, const CVParamTransfer& xfer);
virtual CToken GetObj(const SObjectTag& tag);
virtual CToken GetObj(const char* name);
virtual CToken GetObj(const char* name, const CVParamTransfer& xfer);
virtual bool HasObject(const SObjectTag& tag) const;
virtual bool ObjectIsLive(const SObjectTag& tag) const;
virtual IFactory& GetFactory() const { return x18_factory; }
virtual void Flush();
virtual void ObjectUnreferenced(const SObjectTag& tag);
CToken GetObj(const SObjectTag& tag, const CVParamTransfer& xfer) override;
CToken GetObj(const SObjectTag& tag) override;
CToken GetObj(const char* name) override;
CToken GetObj(const char* name, const CVParamTransfer& xfer) override;
bool HasObject(const SObjectTag& tag) const override;
bool ObjectIsLive(const SObjectTag& tag) const override;
IFactory& GetFactory() const override { return x18_factory; }
void Flush() override;
void ObjectUnreferenced(const SObjectTag& tag) override;
rstl::vector< SObjectTag > GetReferencedTags();
private:

View File

@ -13,6 +13,8 @@ namespace rstl {
template < typename K, typename P, int unk, typename Select, typename Hash, typename Equal,
typename Alloc = rmemory_allocator >
class hash_table {
public:
int size() const { return x.size(); }
private:
rstl::vector< rstl::list< P, Alloc > /*::iterator*/, Alloc > x;
};
@ -21,6 +23,8 @@ template < typename K, typename V, typename Hash, typename Equal,
typename Alloc = rmemory_allocator >
class hash_map {
typedef rstl::pair< K, V > Pair;
public:
int size() const { return table.size(); }
private:
hash_table< K, Pair, 0, select1st< Pair >, Hash, Equal, Alloc > table;

View File

@ -1,12 +1,14 @@
#include "Kyoto/CSimplePool.hpp"
#include "Kyoto/CVParamTransfer.hpp"
#include "Kyoto/SObjectTag.hpp"
#include "Kyoto/IFactory.hpp"
CSimplePool::CSimplePool(IFactory& factory)
: x18_factory(factory), x1c_paramXfr(CVParamTransfer::Null()) {}
CSimplePool::~CSimplePool() {
DebugDumpPool();
Flush();
if (x8_resources.size() > 0) {
DebugDumpPool();
}
}
void CSimplePool::ObjectUnreferenced(const SObjectTag& tag) {}
@ -15,26 +17,19 @@ CToken CSimplePool::GetObj(const SObjectTag& tag, const CVParamTransfer& xfer) {
CToken CSimplePool::GetObj(const SObjectTag& tag) { return CSimplePool::GetObj(tag, x1c_paramXfr); }
CToken CSimplePool::GetObj(const char* name) { return CToken(); }
CToken CSimplePool::GetObj(const char* name) { return CSimplePool::GetObj(name, x1c_paramXfr); }
CToken CSimplePool::GetObj(const char* name, const CVParamTransfer& xfer) { return CToken(); }
bool CSimplePool::HasObject(const SObjectTag& tag) const {
return false;
CToken CSimplePool::GetObj(const char* name, const CVParamTransfer& xfer) {
const SObjectTag* tag = CSimplePool::GetFactory().GetResourceIdByName(name);
return CSimplePool::GetObj(*tag, xfer);
}
bool CSimplePool::ObjectIsLive(const SObjectTag& tag) const {
return false;
}
bool CSimplePool::HasObject(const SObjectTag& tag) const { return false; }
void CSimplePool::Flush() {
bool CSimplePool::ObjectIsLive(const SObjectTag& tag) const { return false; }
}
void CSimplePool::Flush() {}
void CSimplePool::DebugDumpPool() const {
void CSimplePool::DebugDumpPool() const {}
}
rstl::vector<SObjectTag> CSimplePool::GetReferencedTags() {
return rstl::vector<SObjectTag>();
}
rstl::vector< SObjectTag > CSimplePool::GetReferencedTags() { return rstl::vector< SObjectTag >(); }