22 #ifndef QDENGINE_QDCORE_QD_RESOURCE_DISPATCHER_H 23 #define QDENGINE_QDCORE_QD_RESOURCE_DISPATCHER_H 25 #include "qdengine/qdcore/qd_resource.h" 39 qdResourceHandle<T> hres(res, res_owner);
50 qdResourceHandle<T> hres(res, res_owner);
64 qdResourceHandle<T> hres(const_cast<qdResource *>(res), res_owner);
73 const T *find_owner(
const qdResource *res)
const {
76 return (*it).resource_owner();
83 if (it->resource_owner() == owner)
96 if (it->resource_owner() == owner && (!hold_owner || !
is_registered(it->resource(), hold_owner)))
97 it->release_resource();
102 if (it->resource_owner() != hold_owner)
103 it->release_resource();
107 it->release_resource();
114 qdResourceHandle<T> hres(res, res_owner);
116 return hres.load_resource();
123 qdResourceHandle<T> hres(res, res_owner);
124 return hres.release_resource();
141 if (
this == &h)
return *
this;
142 _resource = h._resource;
143 _resource_owner = h._resource_owner;
147 bool operator == (
const qdResource &res)
const {
148 return (_resource == &res);
151 return (_resource == h._resource && _resource_owner == h._resource_owner);
160 return _resource_owner;
181 const T *_resource_owner;
192 #endif // QDENGINE_QDCORE_QD_RESOURCE_DISPATCHER_H void release_resources(const T *owner=NULL, const T *hold_owner=NULL) const
Выгружает из памяти данные ресурсов.
Definition: qd_resource_dispatcher.h:93
bool register_resource(qdResource *res, const T *res_owner)
Регистрация ресурса.
Definition: qd_resource_dispatcher.h:38
bool is_registered(const qdResource *res, const T *res_owner=NULL) const
Возвращает true, если ресурс res (опционально - с владельцем res_owner) есть в списке.
Definition: qd_resource_dispatcher.h:62
In find(In first, In last, const T &v)
Definition: algorithm.h:225
const U * resource_owner() const
Возвращает указатель на владельца ресурса.
Definition: qd_resource_dispatcher.h:159
bool unregister_resource(qdResource *res, const T *res_owner)
Отмена регистрации ресурса.
Definition: qd_resource_dispatcher.h:49
Definition: qd_resource.h:34
bool release_resource() const
Выгружает ресурс из памяти.
Definition: qd_resource_dispatcher.h:170
virtual bool free_resource()=0
Выгружает из памяти данные ресурса.
Диспетчер ресурсов.
Definition: qd_resource_dispatcher.h:32
iterator end()
Definition: list.h:240
virtual bool load_resource()=0
Загружает в память данные ресурса.
handle_container_t _handles
Хэндлы ресурсов.
Definition: qd_resource_dispatcher.h:187
Базовый класс для игровых ресурсов.
Definition: console.h:28
iterator begin()
Definition: list.h:227
void load_resources(const T *owner=NULL) const
Загружает в память данные для ресурсов.
Definition: qd_resource_dispatcher.h:80
Хэндл для управления ресурсами.
Definition: qd_resource_dispatcher.h:134
Definition: list_intern.h:48
Definition: list_intern.h:51
iterator erase(iterator pos)
Definition: list.h:95
bool load_resource() const
Загружает ресурс в память.
Definition: qd_resource_dispatcher.h:164
qdResource * resource() const
Возвращает указатель на ресурс.
Definition: qd_resource_dispatcher.h:155
bool load_resource(qdResource *res, const T *res_owner)
Загружает в память данные ресурса, если они еще не загружены.
Definition: qd_resource_dispatcher.h:113
bool release_resource(qdResource *res, const T *res_owner)
Выгружает из памяти данные ресурса, если на него нет больше ссылок.
Definition: qd_resource_dispatcher.h:120
void push_back(const t_T &element)
Definition: list.h:140
bool is_resource_loaded() const
Возвращает true, если данные ресурса загружены в память.
Definition: qd_resource.h:68