File AccessArray.hpp¶
File List > astrea > trace > trace > risesets > AccessArray.hpp
Go to the documentation of this file
#pragma once
#include <gtl/btree.hpp>
#include <trace/risesets/RiseSetArray.hpp>
#include <trace/types/IdPair.hpp>
namespace astrea {
namespace trace {
class AccessArray {
friend std::ostream& operator<<(std::ostream& os, const AccessArray& accessarray);
public:
AccessArray() = default;
~AccessArray() = default;
RiseSetArray& operator[](const std::size_t& senderId, const std::size_t& receiverId);
const RiseSetArray& at(const std::size_t& senderId, const std::size_t& receiverId) const;
bool contains(const IdPair& idPair) const;
void erase(const std::size_t& senderId, const std::size_t& receiverId);
std::size_t size() const;
RiseSetArray get_all_accesses_to_receiver(const std::size_t& receiverId) const;
RiseSetArray get_all_accesses_from_sender(const std::size_t& senderId) const;
bool operator==(const AccessArray& other) const;
AccessArray& operator|=(const AccessArray& other);
AccessArray operator|(const AccessArray& other) const;
AccessArray& operator&=(const AccessArray& other);
AccessArray operator&(const AccessArray& other) const;
using iterator = gtl::btree_map<IdPair, RiseSetArray>::iterator;
using const_iterator = gtl::btree_map<IdPair, RiseSetArray>::const_iterator;
iterator begin() { return _accesses.begin(); }
iterator end() { return _accesses.end(); }
const_iterator begin() const { return _accesses.begin(); }
const_iterator end() const { return _accesses.end(); }
const_iterator cbegin() const { return _accesses.cbegin(); }
const_iterator cend() const { return _accesses.cend(); }
private:
gtl::btree_map<IdPair, RiseSetArray> _accesses;
};
} // namespace trace
} // namespace astrea