49 int pipe_priority = -1;
51 void* heap_entry =
nullptr;
90 int priority_pipes = 0;
93 std::unique_ptr<PipeQueue>
queue;
151 queue = std::move(q);
Utilities for working with the bijections between the edges incident to the two endpoints of a Pipe.
Includes declaration of graph class.
Declaration of doubly linked lists and iterators.
Basic declarations, included by all source files.
Class for adjacency list elements.
Class for the representation of edges.
Data type for general directed graphs (adjacency list representation).
Abstract Base class for graph observers.
Doubly linked lists (maintaining the length of the list).
void clear()
Removes all elements from the list.
Encapsulates a pointer to a list element.
Class for the representation of nodes.
Simple before-C++20 version for std::ranges::ref_view.
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
RegisteredArray for nodes, edges and adjEntries of a graph.
Manages the matching of P-nodes via pipes in an instance of SyncPlan.
void nodeDeleted(node v) override
Called by watched graph just before a node is deleted.
node removeMatching(node n, node t=nullptr)
void setPipeQueue(PipeQueue *q)
void cleared() override
Called by watched graph when its clear function is called, just before things are removed.
void setPipeQueue(std::unique_ptr< PipeQueue > q)
void getIncidentEdgeBijection(node u, AdjEntryArray< adjEntry > &out) const
const Pipe * getPipe(node n) const
adjEntry translateIncidentEdge(adjEntry e) const
void edgeDeleted(edge e) override
Called by watched graph just before an edge is deleted.
void getIncidentEdgeBijection(node u, EdgeArray< edge > &out) const
const Pipe & getTopPipe() const
void nodeAdded(node v) override
Called by watched graph after a node has been added.
PMatching(const Graph *G)
PipeBijRange getIncidentEdgeBijection(node u) const
Get the bijection between the edges incident to the two endpoints of a pipe.
List< Pipe >::const_iterator begin() const
void edgeAdded(edge e) override
Called by watched graph after an edge has been added.
void makePriority(node n)
Mark the pipe of this ndoe to be processed before all other pipes, no matter the order in the PipeQue...
PipeQueue * getPipeQueue() const
node getTwin(node n) const
For a matched vertex, return the vertex it is matched with.
void rebuildHeap()
Rebuild the PipeQueue, e.g. after priorities were changed externally.
List< Pipe >::const_iterator end() const
std::unique_ptr< PipeQueue > queue
bool isReduced() const
Whether there are no pipes left.
std::function< std::ostream &(std::ostream &)> printBijection(node u) const
void getIncidentEdgeBijection(node u, PipeBij &out) const
const List< Pipe > & getPipes() const
void matchNodes(node f, node s)
NodeArray< Pipe * > nodes
int getPriorityPipeCount() const
node getTwinOrNull(node n) const
bool isMatchedPVertex(node n) const
Consistency checks for debugging the SyncPlan algorithm.
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
A pair of matched vertices of the same degree, whose rotation shall be synchronized.
node getTwin(node n) const
List< Pipe >::iterator list_entry
Pipe(node node1, node node2)
friend std::ostream & operator<<(std::ostream &os, const Pipe &pipe)
A queue of all pipes, ordered by an arbitrary comparator function.
virtual void rebuild(List< Pipe > &pipes_list)=0
virtual ~PipeQueue()=default
virtual Pipe * getTop()=0
virtual void removePipe(Pipe *p)=0
virtual void addPipe(Pipe *p)=0