Hummingbird Framework
 All Classes Functions Variables Modules Pages
Resource.h
1 #ifndef HB_RESOURCE_H
2 #define HB_RESOURCE_H
3 
4 
5 namespace hb
6 {
15  template <typename ResourceType, typename ResourceId, typename ResourceManager>
16  class Resource
17  {
18  public:
26  Resource(const ResourceType& resource, const ResourceId& id)
27  {
28  m_id = ResourceManager::instance()->addResource(id, resource);
29  }
38  Resource(const ResourceId& id)
39  {
40  if (not ResourceManager::instance()->isLoaded(id, m_id))
41  m_id = ResourceManager::instance()->addResource(id, ResourceType());
42  }
47  Resource(const Resource& other)
48  {
49  m_id = ResourceManager::instance()->addResource(other.id(), other.get());
50  }
55  Resource& operator=(const Resource& other)
56  {
57  m_id = ResourceManager::instance()->addResource(other.id(), other.get());
58  return *this;
59  }
66  {
67  ResourceManager::instance()->release(m_id);
68  }
69 
74  const ResourceType& get() const
75  {
76  return ResourceManager::instance()->get(m_id);
77  }
82  ResourceType& get()
83  {
84  return ResourceManager::instance()->get(m_id);
85  }
89  const ResourceId& id() const
90  {
91  return ResourceManager::instance()->getId(m_id);
92  }
93 
94  protected:
95  int m_id;
96  };
97 }
98 #endif
Class representing a loaded resource.
Definition: Resource.h:16
Resource(const Resource &other)
Copy constructor.
Definition: Resource.h:47
~Resource()
Class destructor.
Definition: Resource.h:65
const ResourceId & id() const
Get the resource id.
Definition: Resource.h:89
static ManagerType * instance()
Get the singleton instance.
Definition: ResourceManager.h:25
Resource(const ResourceType &resource, const ResourceId &id)
Class constructor.
Definition: Resource.h:26
Definition: Box2DPlugin.h:6
Resource & operator=(const Resource &other)
Copy assignment.
Definition: Resource.h:55
const ResourceType & get() const
Get the resource.
Definition: Resource.h:74
Resource(const ResourceId &id)
Class constructor. Used for getting an already loaded resource.
Definition: Resource.h:38