File AccessObject.hpp¶
File List > astrea > trace > trace > platforms > AccessObject.hpp
Go to the documentation of this file
#pragma once
#include <memory>
#include <trace/risesets/AccessArray.hpp>
#include <trace/types/typedefs.hpp>
namespace astrea {
namespace trace {
class AccessObject {
protected:
AccessObject() = default;
virtual ~AccessObject() = default;
public:
void add_access(const std::size_t& receiverId, const RiseSetArray& access)
{
if (_accesses.contains({ get_id(), receiverId })) {
_accesses[get_id(), receiverId] = (_accesses[get_id(), receiverId] | access);
}
else {
_accesses[get_id(), receiverId] = access;
}
}
void drop_access(const std::size_t& receiverId, const RiseSetArray& access)
{
_accesses.erase(get_id(), receiverId);
}
AccessArray& get_accesses() { return _accesses; }
const AccessArray& get_accesses() const { return _accesses; }
virtual std::size_t get_id() const = 0;
private:
AccessArray _accesses;
};
} // namespace trace
} // namespace astrea