From 9c007114ac1df418a43282adb368598fe19dec4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 24 Nov 2012 11:34:29 +0100 Subject: [PATCH] ResourceManager: make internal functions private. Even if this is internal implementation class, the functions should be accessible only from Resource itself. --- src/ResourceManager.h | 56 ++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/src/ResourceManager.h b/src/ResourceManager.h index 696eb3640..4621e212c 100644 --- a/src/ResourceManager.h +++ b/src/ResourceManager.h @@ -35,35 +35,14 @@ namespace Implementation { }; template class ResourceManagerData { + template friend class Resource; + ResourceManagerData(const ResourceManagerData&) = delete; ResourceManagerData(ResourceManagerData&&) = delete; ResourceManagerData& operator=(const ResourceManagerData&) = delete; ResourceManagerData& operator=(ResourceManagerData&&) = delete; public: - struct Data { - Data(const Data&) = delete; - Data& operator=(const Data&) = delete; - Data& operator=(Data&&) = delete; - - inline Data(): data(nullptr), state(ResourceDataState::Mutable), policy(ResourcePolicy::Manual), referenceCount(0) {} - - inline Data(Data&& other): data(other.data), state(other.state), policy(other.policy), referenceCount(other.referenceCount) { - other.data = nullptr; - other.referenceCount = 0; - } - - inline ~Data() { - CORRADE_ASSERT(referenceCount == 0, "ResourceManager: cannot destruct it while data are still referenced", ); - delete data; - } - - T* data; - ResourceDataState state; - ResourcePolicy policy; - std::size_t referenceCount; - }; - inline virtual ~ResourceManagerData() { delete _fallback; } @@ -136,6 +115,33 @@ namespace Implementation { inline T* fallback() const { return _fallback; } + protected: + inline ResourceManagerData(): _fallback(nullptr), _lastChange(0) {} + + private: + struct Data { + Data(const Data&) = delete; + Data& operator=(const Data&) = delete; + Data& operator=(Data&&) = delete; + + inline Data(): data(nullptr), state(ResourceDataState::Mutable), policy(ResourcePolicy::Manual), referenceCount(0) {} + + inline Data(Data&& other): data(other.data), state(other.state), policy(other.policy), referenceCount(other.referenceCount) { + other.data = nullptr; + other.referenceCount = 0; + } + + inline ~Data() { + CORRADE_ASSERT(referenceCount == 0, "ResourceManager: cannot destruct it while data are still referenced", ); + delete data; + } + + T* data; + ResourceDataState state; + ResourcePolicy policy; + std::size_t referenceCount; + }; + inline const Data& data(ResourceKey key) { return _data[key]; } @@ -152,10 +158,6 @@ namespace Implementation { _data.erase(it); } - protected: - inline ResourceManagerData(): _fallback(nullptr), _lastChange(0) {} - - private: std::unordered_map _data; T* _fallback; std::size_t _lastChange;