Project SkyFire Core
SkyFire 5.4.8 server core API documentation
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"
11
12#include <map>
13#include <string>
14#include <vector>
15
18template<class T, class Key = std::string>
20{
21public:
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
77 {
79 }
80
83 {
84 for (typename RegistryMapType::iterator iter = i_registeredObjects.begin(); iter != i_registeredObjects.end(); ++iter)
85 delete iter->second;
86 i_registeredObjects.clear();
87 }
88private:
90};
91
92#endif
void RemoveItem(Key key, bool delete_object=true)
Removes a registry item.
const T * GetRegistryItem(Key key) const
Returns a registry item.
bool InsertItem(T *obj, Key key, bool override=false)
Inserts a registry item.
RegistryMapType const & GetRegisteredItems() const
Return the map of registered items.
unsigned int GetRegisteredItems(std::vector< Key > &l) const
Inefficiently return a vector of registered items.
bool HasItem(Key key) const
Returns true if registry contains an item.