1 #ifndef __DIADES__GRAPH__EDGEIMPL__HH 2 #define __DIADES__GRAPH__EDGEIMPL__HH 18 using std::stringstream;
26 stream <<
"EdgeData address = " <<
this <<
"\n";
27 stream <<
"EdgeData _identifier = " <<
_identifier <<
"\n";
28 stream <<
"EdgeData _source = " <<
_source <<
"\n";
29 stream <<
"EdgeData _target = " <<
_target <<
"\n";
30 stream <<
"_sourcePos ? " << ((*_sourcePos).data() ==
this) <<
"\n";
31 stream <<
"_targetPos ? " << ((*_targetPos).data() ==
this) <<
"\n";
40 return _eData->_source->_owner->source(*
this);
48 return _eData->_source->_owner->target(*
this);
57 return _eData->_source->_owner->sourceRef(*
this);
66 return _eData->_source->_owner->targetRef(*
this);
73 return (_eData !=
nullptr &&
74 _eData->_source !=
nullptr &&
75 _eData->_target !=
nullptr &&
76 (*
this) == (*(_eData->_sourcePos))
77 && (*
this) == (*(_eData->_targetPos))
78 && (_eData->_identifier < _eData->_source->owner().edgeCapacity()));
87 return _eData->_source->owner();
100 if (&(owner()) != &(edge.
owner())) {
101 return &(owner()) < &(edge.
owner());
103 return id() < edge.
id();
117 require(
Exception, s !=
nullptr && t !=
nullptr,
"create: s==nullptr || t==nullptr)");
121 _eData->setTargetPos(t->
newInEdge(_eData));
132 require(
Exception, &(_eData->_target->owner()) == &(s->
owner()),
"changeSource: _eData->_target->owner()!=s->_owner");
133 _eData->_source->delOutEdge(_eData);
146 require(
Exception, &(_eData->_source->owner()) == &(t->
owner()),
"Edge::changeTarget: source().owner()!=_target->_owner");
147 _eData->_target->delInEdge(_eData);
149 _eData->_targetPos = t->
newInEdge(_eData);
void changeTarget(NodeData *t)
NodeData * _source
identifier of the Edge
void create(EdgeId idt, NodeData *s, NodeData *t)
NodeData * _target
pointer to the NodeData source of the Edge
const Graph & owner() const
const Graph & owner() const
#define ensure(Exception, expr, message)
#define require(Exception, expr, message)
Namespace of the Diades project.
list< Edge >::iterator newOutEdge(EdgeData *eData)
bool operator<(const Edge &edge) const
boost::adjacency_list Graph
list< Edge >::iterator newInEdge(EdgeData *eData)
const Node & sourceRef() const
void changeSource(NodeData *s)
const Node & targetRef() const