4template<
typename A,
typename HANDLE>
14template<
typename A,
typename HANDLE>
20template<
typename A,
typename HANDLE>
30 index = GetRegisteredIndex(name);
32 mObjects.push_back(res);
33 index = (int)mObjects.size() - 1;
37 SetRegisteredName(name, index);
40 handle->Initialize(index);
45template<
typename A,
typename HANDLE>
48 int index = handle.GetIndex();
49 if (handle.IsNull()) {
55template<
typename A,
typename HANDLE>
61 if (name ==
nullptr) {
64 std::string str(name);
65 if (mResourceHash !=
nullptr) {
66 key = mResourceHash->HashFunction(str);
67 tmpHashItem = mResourceHash->Find(key);
68 if (tmpHashItem.
GetKey() != -1) {
69 return tmpHashItem.
GetObject().GetIndex();
75template<
typename A,
typename HANDLE>
78 int index = handle.GetIndex();
79 if (index >=
GetSize() || index <= HANDLE::NULL_HANDLE) {
82 return mObjects[index];
85template<
typename A,
typename HANDLE>
88 return (
int)mObjects.size();
91template<
typename A,
typename HANDLE>
97template<
typename A,
typename HANDLE>
98void ResourceManager<A,HANDLE>::SetRegisteredName(
const char* name,
int index)
100 if (!name || !mResourceHash|| index < 0) {
103 HashItem<ResourceName> hashItem;
104 std::string str(name);
106 ResourceName resName;
107 resName.SetName(name);
108 resName.SetIndex(index);
110 hashItem.SetKey(mResourceHash->HashFunction(str));
111 hashItem.SetObj(resName);
113 mResourceHash->Insert(hashItem);
116template<
typename A,
typename HANDLE>
117void ResourceManager<A,HANDLE>::DeleteAllMemory()
119 for (
int i = 0; i < GetSize(); i++) {
122 mObjects[i] =
nullptr;
126 delete mResourceHash;
127 mResourceHash =
nullptr;
Definition HashTable.h:16
T GetObject()
Definition HashTable.h:36
int GetKey() const
Definition HashTable.h:31
Definition HashTable.h:62
A * GetResource(const HANDLE &handle)
Definition ResourceManager.inl:76
int GetSize()
Definition ResourceManager.inl:86
int GetRegisteredIndex(const char *name)
Definition ResourceManager.inl:56
std::vector< A * > * GetObjects()
Definition ResourceManager.inl:92
virtual ~ResourceManager()
Definition ResourceManager.inl:15
void Release(HANDLE &handle)
Definition ResourceManager.inl:46
bool Create(A *res, const char *name, HANDLE *handle)
Definition ResourceManager.inl:21
ResourceManager(int hashSize=0)
Definition ResourceManager.inl:5
Definition ResourceName.h:13