2016-08-09 23:44:39 +08:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "data_structures/map/rh_hashmultimap.hpp"
|
|
|
|
#include "mvcc/version_list.hpp"
|
|
|
|
|
|
|
|
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)
|
|
|
|
{
|
|
|
|
// TODO
|
|
|
|
throw std::bad_function_call::bad_function_call();
|
|
|
|
}
|
|
|
|
|
2016-08-10 03:29:03 +08:00
|
|
|
bool contains(VertexRecord *vr) { return edges.contains(vr); }
|
|
|
|
|
2016-08-09 23:44:39 +08:00
|
|
|
void clear() { edges.clear(); }
|
|
|
|
|
|
|
|
private:
|
|
|
|
RhHashMultiMap<VertexRecord *, EdgeRecord> edges;
|
|
|
|
};
|