#include #ifndef PORYGONLANG_USERDATA_HPP #define PORYGONLANG_USERDATA_HPP #include #include #include "UserDataField.hpp" namespace Porygon::UserData { class UserData { std::unordered_map _fields; public: explicit UserData(std::unordered_map fields) : _fields(std::move(fields)) { } ~UserData(){ for (auto f: _fields){ delete f.second; } } bool ContainsField(uint32_t fieldId) const{ return _fields.find(fieldId) != _fields.end(); } UserDataField *GetField(uint32_t fieldId) const { return _fields.at(fieldId); } void CreateField(uint32_t fieldId, UserDataField *field) { _fields.insert({fieldId, field}); } int32_t GetFieldCount() const{ return _fields.size(); } }; } #endif //PORYGONLANG_USERDATA_HPP