45template <
class IDTYPE>
49 std::map<std::string, IDTYPE>
names;
50 std::map<IDTYPE, ManagedItem*>
items;
62 virtual void del(IDTYPE
id)
70 if (
items[
id]->delref())
80 if (it !=
names.end())
100 bool has(
const std::string& name)
105 IDTYPE
get(
const std::string& name)
107 auto it =
names.find(name);
108 if (it !=
names.end())
114 std::string
get(IDTYPE
id)
117 for (
auto const& it :
names)
130 for (
size_t i = 0; i < 50; i++)
132 if (
items.find(
static_cast<const unsigned int>(i)) !=
items.end())
144 for (
auto it :
items)
145 LOG_INFO << it.first <<
"->" << it.second->itemName() <<
"(" << it.second->refCount() <<
")";
Abstract base class representing a file within the game data archive.
Reference-counted item stored in a Manager.
ManagedItem(std::string n)
void setItemName(std::string name)
const std::string & itemName() const
Generic name-to-ID resource manager with reference-counted items.
virtual IDTYPE add(GameFile *)=0
bool has(const std::string &name)
virtual void del(IDTYPE id)
void delbyname(const std::string &name)
std::string get(IDTYPE id)
std::map< IDTYPE, ManagedItem * > items
virtual void doDelete(IDTYPE)
std::map< std::string, IDTYPE > names
IDTYPE get(const std::string &name)
void do_add(const std::string &name, IDTYPE id, ManagedItem *item)