#ifndef PORYGONLANG_USERDATASTORAGE_HPP #define PORYGONLANG_USERDATASTORAGE_HPP #include #include "UserData.hpp" namespace Porygon::UserData { class UserDataStorage { class _internalDataStorage { public: std::unordered_map> _userData; }; static _internalDataStorage _internal; public: static void RegisterType(uint32_t i, UserData *ud) { UserDataStorage::_internal._userData.insert({i, shared_ptr(ud)}); } static bool HasUserDataType(uint32_t i) { return UserDataStorage::_internal._userData.find(i) != UserDataStorage::_internal._userData.end(); } static shared_ptr GetUserDataType(uint32_t i) { return UserDataStorage::_internal._userData[i]; } }; } #endif //PORYGONLANG_USERDATASTORAGE_HPP