2016-08-09 23:44:39 +08:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "data_structures/map/rh_hashmultimap.hpp"
|
2016-08-25 22:29:45 +08:00
|
|
|
#include "storage/edge_record.hpp"
|
|
|
|
// #include "storage/vertex_record.hpp"
|
2016-08-09 23:44:39 +08:00
|
|
|
|
|
|
|
class EdgeMap
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
auto begin() { return edges.begin(); }
|
|
|
|
auto begin() const { return edges.begin(); }
|
|
|
|
auto cbegin() const { return edges.begin(); }
|
|
|
|
|
|
|
|
auto end() { return edges.end(); }
|
|
|
|
auto end() const { return edges.end(); }
|
|
|
|
auto cend() const { return edges.end(); }
|
|
|
|
|
|
|
|
size_t degree() const { return edges.size(); }
|
|
|
|
|
|
|
|
void add(EdgeRecord *edge) { edges.add(edge); }
|
|
|
|
|
|
|
|
void remove(EdgeRecord *edge)
|
|
|
|
{
|
2016-08-11 18:43:19 +08:00
|
|
|
edges.remove(edge); // Currently the return is ignored
|
2016-08-09 23:44:39 +08:00
|
|
|
}
|
|
|
|
|
2016-08-15 07:09:58 +08:00
|
|
|
bool contains(VertexRecord *vr) const { return edges.contains(vr); }
|
2016-08-10 03:29:03 +08:00
|
|
|
|
2016-08-09 23:44:39 +08:00
|
|
|
void clear() { edges.clear(); }
|
|
|
|
|
|
|
|
private:
|
|
|
|
RhHashMultiMap<VertexRecord *, EdgeRecord> edges;
|
|
|
|
};
|