df0bf6fa5f
DbAccessor: -Guarantees that access to Vertex and Edge is possible only through Vertex::Accessor and Edge::Accessor. -Guarantees that changing Vertex and Edge is possible only using Vertex::Accessor returned by vertex_insert() method and Edge::Accessor returned by edge_insert() method. -Offers CRUD for Vertex and Edge except iterating over all edges. Squashed commit messages: First step in database accessor refactoring done. It's compiling. All tests with exception of integration_querys pass Tests now initialize logging facilities. Refactored accessors. RecordAccessor now has 3 states. From,To,Out,In in there respecive Accessors return unfilled RecordAccessor. Added iterator classes into utils/itearator/.
33 lines
789 B
C++
33 lines
789 B
C++
#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)
|
|
{
|
|
edges.remove(edge); // Currently the return is ignored
|
|
}
|
|
|
|
bool contains(VertexRecord *vr) const { return edges.contains(vr); }
|
|
|
|
void clear() { edges.clear(); }
|
|
|
|
private:
|
|
RhHashMultiMap<VertexRecord *, EdgeRecord> edges;
|
|
};
|