All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PropResourceRepository.h
1 #pragma once
2 
3 #include <unordered_map>
4 #include <string>
5 #include "CallbackCollection.h"
6 
7 namespace Eegeo
8 {
9  namespace Resources
10  {
11  namespace Interiors
12  {
13  namespace Builder
14  {
15  class PropResource;
16  }
17 
19  {
20  public:
21 
23 
24  bool Contains(const std::string& propResourcelId) const;
25 
26  void Add(const std::string& propResourceId, Builder::PropResource* pPropModelResource);
27 
28  Builder::PropResource& Get(const std::string& propResourceId) const;
29 
30  void ReleaseReference(const std::string& propResourceId);
31 
32  void RegisterPropResourceAddedCallback(Helpers::ICallback1<const std::string>& _callback);
33 
34  void UnregisterPropResourceAddedCallback(Helpers::ICallback1<const std::string>& _callback);
35 
36  void RegisterPropResourceRemovedCallback(Helpers::ICallback1<const std::string>& _callback);
37 
38  void UnregisterPropResourceRemovedCallback(Helpers::ICallback1<const std::string>& _callback);
39 
40  void ReleaseUnreferencedResources();
41 
42  private:
43 
46  std::unordered_map<std::string, Builder::PropResource*> m_urlsToResources;
47  };
48  }
49  }
50 }