Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
ObjectRegistry.h
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#ifndef SKYFIRE_OBJECTREGISTRY_H
7
#define SKYFIRE_OBJECTREGISTRY_H
8
9
#include "
Define.h
"
10
#include "
Dynamic/UnorderedMap.h
"
11
12
#include <map>
13
#include <string>
14
#include <vector>
15
18
template
<
class
T,
class
Key = std::
string
>
19
class
ObjectRegistry
20
{
21
public
:
22
typedef
std::map<Key, T*>
RegistryMapType
;
23
25
const
T*
GetRegistryItem
(Key key)
const
26
{
27
typename
RegistryMapType::const_iterator iter =
i_registeredObjects
.find(key);
28
return
(iter ==
i_registeredObjects
.end() ? NULL : iter->second);
29
}
30
32
bool
InsertItem
(T* obj, Key key,
bool
override
=
false
)
33
{
34
typename
RegistryMapType::iterator iter =
i_registeredObjects
.find(key);
35
if
(iter !=
i_registeredObjects
.end())
36
{
37
if
(!
override
)
38
return
false
;
39
delete
iter->second;
40
i_registeredObjects
.erase(iter);
41
}
42
43
i_registeredObjects
[key] = obj;
44
return
true
;
45
}
46
48
void
RemoveItem
(Key key,
bool
delete_object =
true
)
49
{
50
typename
RegistryMapType::iterator iter =
i_registeredObjects
.find(key);
51
if
(iter !=
i_registeredObjects
.end())
52
{
53
if
(delete_object)
54
delete
iter->second;
55
i_registeredObjects
.erase(iter);
56
}
57
}
58
60
bool
HasItem
(Key key)
const
61
{
62
return
(
i_registeredObjects
.find(key) !=
i_registeredObjects
.end());
63
}
64
66
unsigned
int
GetRegisteredItems
(std::vector<Key>& l)
const
67
{
68
unsigned
int
sz = l.size();
69
l.resize(sz +
i_registeredObjects
.size());
70
for
(
typename
RegistryMapType::const_iterator iter =
i_registeredObjects
.begin(); iter !=
i_registeredObjects
.end(); ++iter)
71
l[sz++] = iter->first;
72
return
i_registeredObjects
.size();
73
}
74
76
RegistryMapType
const
&
GetRegisteredItems
()
const
77
{
78
return
i_registeredObjects
;
79
}
80
81
ObjectRegistry
() { }
82
~ObjectRegistry
()
83
{
84
for
(
typename
RegistryMapType::iterator iter =
i_registeredObjects
.begin(); iter !=
i_registeredObjects
.end(); ++iter)
85
delete
iter->second;
86
i_registeredObjects
.clear();
87
}
88
private
:
89
RegistryMapType
i_registeredObjects
;
90
};
91
92
#endif
Define.h
UnorderedMap.h
ObjectRegistry::~ObjectRegistry
~ObjectRegistry()
Definition
ObjectRegistry.h:82
ObjectRegistry< FactoryHolder< T, Key >, Key >::i_registeredObjects
RegistryMapType i_registeredObjects
Definition
ObjectRegistry.h:89
ObjectRegistry::RemoveItem
void RemoveItem(Key key, bool delete_object=true)
Removes a registry item.
Definition
ObjectRegistry.h:48
ObjectRegistry::GetRegistryItem
const T * GetRegistryItem(Key key) const
Returns a registry item.
Definition
ObjectRegistry.h:25
ObjectRegistry::InsertItem
bool InsertItem(T *obj, Key key, bool override=false)
Inserts a registry item.
Definition
ObjectRegistry.h:32
ObjectRegistry::ObjectRegistry
ObjectRegistry()
Definition
ObjectRegistry.h:81
ObjectRegistry< FactoryHolder< T, Key >, Key >::RegistryMapType
std::map< Key, T * > RegistryMapType
Definition
ObjectRegistry.h:22
ObjectRegistry::GetRegisteredItems
RegistryMapType const & GetRegisteredItems() const
Return the map of registered items.
Definition
ObjectRegistry.h:76
ObjectRegistry::GetRegisteredItems
unsigned int GetRegisteredItems(std::vector< Key > &l) const
Inefficiently return a vector of registered items.
Definition
ObjectRegistry.h:66
ObjectRegistry::HasItem
bool HasItem(Key key) const
Returns true if registry contains an item.
Definition
ObjectRegistry.h:60
src
server
shared
Dynamic
ObjectRegistry.h
Generated on
for Project SkyFire Core by
1.17.0