SpaghettiKart
Loading...
Searching...
No Matches
DataRegistry.h
Go to the documentation of this file.
1#pragma once
2#include <string>
3#include <unordered_map>
4#include <memory>
5#include <cstdint>
6
7template<typename TObject>
9public:
10 // Add object by copy or move; overwrites if exists
11 void Add(const std::string& resourceName, TObject&& object) {
12 mMap[resourceName] = std::make_unique<TObject>(std::forward<TObject>(object));
13 }
14
15 void Add(const std::string& resourceName, const TObject& object) {
16 mMap[resourceName] = std::make_unique<TObject>(object);
17 }
18
19 // Get pointer to object (nullptr if not found)
20 TObject* Get(const std::string& resourceName) {
21 auto it = mMap.find(resourceName);
22 return it != mMap.end() ? it->second.get() : nullptr;
23 }
24
25 const TObject* Get(const std::string& resourceName) const {
26 auto it = mMap.find(resourceName);
27 return it != mMap.end() ? it->second.get() : nullptr;
28 }
29
30 bool Remove(const std::string& resourceName) {
31 return mMap.erase(resourceName) > 0;
32 }
33
34 size_t Size() const {
35 return mMap.size();
36 }
37
38 void Clear() {
39 mMap.clear();
40 }
41
42private:
43 std::unordered_map<std::string, std::unique_ptr<TObject>> mMap;
44};
Definition DataRegistry.h:8
std::unordered_map< std::string, std::unique_ptr< TObject > > mMap
Definition DataRegistry.h:43
void Add(const std::string &resourceName, const TObject &object)
Definition DataRegistry.h:15
size_t Size() const
Definition DataRegistry.h:34
void Clear()
Definition DataRegistry.h:38
const TObject * Get(const std::string &resourceName) const
Definition DataRegistry.h:25
void Add(const std::string &resourceName, TObject &&object)
Definition DataRegistry.h:11
TObject * Get(const std::string &resourceName)
Definition DataRegistry.h:20
bool Remove(const std::string &resourceName)
Definition DataRegistry.h:30