Fix all valgrind leak issues in tests
Some checks failed
continuous-integration/drone/push Build is failing

Signed-off-by: Deukhoofd <deukhoofd@gmail.com>
This commit is contained in:
2019-06-24 13:38:41 +02:00
parent 76b8ba3ebc
commit 021750a135
13 changed files with 295 additions and 63 deletions

View File

@@ -3,27 +3,46 @@
#define PORYGONLANG_USERDATASTORAGE_HPP
#include <unordered_map>
#include <mutex>
#include "UserData.hpp"
namespace Porygon::UserData {
class UserDataStorage {
class _internalDataStorage {
public:
std::unordered_map<uint32_t, shared_ptr<UserData>> _userData;
std::unordered_map<uint32_t, UserData*> _userData;
std::mutex _userDataMutex;
~_internalDataStorage(){
std::lock_guard<std::mutex> guard(_userDataMutex);
for (auto u: _userData){
delete u.second;
}
_userData.clear();
}
};
static _internalDataStorage _internal;
public:
static void RegisterType(uint32_t i, UserData *ud) {
UserDataStorage::_internal._userData.insert({i, shared_ptr<UserData>(ud)});
std::lock_guard<std::mutex> guard(_internal._userDataMutex);
UserDataStorage::_internal._userData.insert({i, ud});
}
static void ClearTypes(){
std::lock_guard<std::mutex> guard(_internal._userDataMutex);
for (auto u: _internal._userData){
delete u.second;
}
_internal._userData.clear();
}
static bool HasUserDataType(uint32_t i) {
return UserDataStorage::_internal._userData.find(i) != UserDataStorage::_internal._userData.end();
}
static shared_ptr<UserData> GetUserDataType(uint32_t i) {
static UserData* GetUserDataType(uint32_t i) {
return UserDataStorage::_internal._userData[i];
}
};