Basic house ah
This commit is contained in:
@@ -3,17 +3,15 @@
|
||||
#include <unordered_map>
|
||||
#include <string>
|
||||
|
||||
|
||||
class IBlackBoardField
|
||||
class IBlackboardField
|
||||
{
|
||||
public:
|
||||
IBlackBoardField() = default;
|
||||
virtual ~IBlackBoardField() = default;
|
||||
virtual ~IBlackboardField() = default;
|
||||
};
|
||||
|
||||
//BlackboardField does not take ownership of pointers whatsoever!
|
||||
template<typename T>
|
||||
class BlackboardField : public IBlackBoardField
|
||||
class BlackboardField final : public IBlackboardField
|
||||
{
|
||||
public:
|
||||
explicit BlackboardField(T data) : m_Data(data) {
|
||||
@@ -30,7 +28,7 @@ class Blackboard final
|
||||
public:
|
||||
Blackboard() = default;
|
||||
~Blackboard() {
|
||||
for (auto el : m_BlackboardData)
|
||||
for (const auto& el : m_BlackboardData)
|
||||
delete el.second;
|
||||
m_BlackboardData.clear();
|
||||
}
|
||||
@@ -40,6 +38,7 @@ public:
|
||||
Blackboard(Blackboard&& other) = delete;
|
||||
Blackboard& operator=(Blackboard&& other) = delete;
|
||||
|
||||
//Add data to the blackboard
|
||||
template<typename T> bool AddData(const std::string& name, T data) {
|
||||
auto it = m_BlackboardData.find(name);
|
||||
if (it == m_BlackboardData.end()) {
|
||||
@@ -50,6 +49,7 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
//Change the data of the blackboard
|
||||
template<typename T> bool ChangeData(const std::string& name, T data) {
|
||||
auto it = m_BlackboardData.find(name);
|
||||
if (it != m_BlackboardData.end()) {
|
||||
@@ -63,6 +63,7 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//Get the data from the blackboard
|
||||
template<typename T> bool GetData(const std::string& name, T& data) {
|
||||
BlackboardField<T>* p = dynamic_cast<BlackboardField<T>*>(m_BlackboardData[name]);
|
||||
@@ -75,6 +76,5 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
std::unordered_map<std::string, IBlackBoardField*> m_BlackboardData;
|
||||
std::unordered_map<std::string, IBlackboardField*> m_BlackboardData;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user