2016-01-17 01:24:35 +08:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "storage/edge.hpp"
|
2016-08-11 22:32:58 +08:00
|
|
|
#include "storage/edge_record.hpp"
|
2016-01-17 01:24:35 +08:00
|
|
|
#include "storage/record_accessor.hpp"
|
2016-08-29 21:51:31 +08:00
|
|
|
#include "storage/vertex_accessor.hpp"
|
2016-07-07 00:37:05 +08:00
|
|
|
#include "utils/assert.hpp"
|
|
|
|
#include "utils/reference_wrapper.hpp"
|
2016-01-17 01:24:35 +08:00
|
|
|
|
2016-08-25 22:29:45 +08:00
|
|
|
class EdgeType;
|
|
|
|
using edge_type_ref_t = ReferenceWrapper<const EdgeType>;
|
|
|
|
|
2016-01-17 01:24:35 +08:00
|
|
|
class Edges;
|
|
|
|
|
2016-08-29 03:46:30 +08:00
|
|
|
// There exists circular dependecy with VertexAccessor.
|
2016-08-25 22:29:45 +08:00
|
|
|
class EdgeAccessor : public RecordAccessor<TypeGroupEdge, EdgeAccessor>
|
2016-01-17 01:24:35 +08:00
|
|
|
{
|
2016-08-30 15:53:02 +08:00
|
|
|
friend VertexAccessor;
|
|
|
|
|
2016-01-17 01:24:35 +08:00
|
|
|
public:
|
|
|
|
using RecordAccessor::RecordAccessor;
|
2016-08-25 22:29:45 +08:00
|
|
|
typedef Edge record_t;
|
|
|
|
typedef EdgeRecord record_list_t;
|
2016-03-13 03:16:19 +08:00
|
|
|
|
2016-08-30 13:16:04 +08:00
|
|
|
// Removes self and disconects vertices from it.
|
2016-08-30 15:53:02 +08:00
|
|
|
void remove() const;
|
2016-08-30 13:16:04 +08:00
|
|
|
|
2016-08-28 22:47:13 +08:00
|
|
|
void edge_type(EdgeType const &edge_type);
|
2016-03-13 03:16:19 +08:00
|
|
|
|
2016-08-28 22:47:13 +08:00
|
|
|
const EdgeType &edge_type() const;
|
2016-03-20 15:56:13 +08:00
|
|
|
|
2016-08-30 15:53:02 +08:00
|
|
|
// EdgeAccessor doesnt need to be filled
|
2016-08-29 21:51:31 +08:00
|
|
|
VertexAccessor from() const;
|
2016-08-10 03:29:03 +08:00
|
|
|
|
2016-08-30 15:53:02 +08:00
|
|
|
// EdgeAccessor doesnt need to be filled
|
2016-08-29 21:51:31 +08:00
|
|
|
VertexAccessor to() const;
|
2016-01-17 01:24:35 +08:00
|
|
|
};
|