diff --git a/include/Kyoto/CSimplePool.hpp b/include/Kyoto/CSimplePool.hpp index b48e426a..db61d965 100644 --- a/include/Kyoto/CSimplePool.hpp +++ b/include/Kyoto/CSimplePool.hpp @@ -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: diff --git a/include/rstl/hash_map.hpp b/include/rstl/hash_map.hpp index d9366820..0cb71bc0 100644 --- a/include/rstl/hash_map.hpp +++ b/include/rstl/hash_map.hpp @@ -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; diff --git a/src/Kyoto/CSimplePool.cpp b/src/Kyoto/CSimplePool.cpp index 66485430..a4c4742b 100644 --- a/src/Kyoto/CSimplePool.cpp +++ b/src/Kyoto/CSimplePool.cpp @@ -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::DebugDumpPool() const { - -} +void CSimplePool::Flush() {} -rstl::vector CSimplePool::GetReferencedTags() { - return rstl::vector(); -} +void CSimplePool::DebugDumpPool() const {} + +rstl::vector< SObjectTag > CSimplePool::GetReferencedTags() { return rstl::vector< SObjectTag >(); }