Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
ClusterPQContainer.h
Go to the documentation of this file.
1
36#pragma once
37
38#include <ogdf/basic/Array.h>
39#include <ogdf/basic/Graph.h>
41#include <ogdf/basic/SList.h>
45
46namespace ogdf {
47
48class CconnectClusterPlanarEmbed;
49
50namespace cluster_planarity {
51
55
56 // Definition
57 // incoming edge of v: an edge e = (v,w) with number(v) < number(w)
58
59 // Stores for every node v the keys corresponding to the incoming edges of v
61
62 // Stores for every node v the keys corresponding to the outgoing edges of v
64
65 // Stores for every node v the sequence of incoming edges of v according
66 // to the embedding
68
69 // Stores for every node v the nodes corresponding to the
70 // opposed sink indicators found in the frontier of v.
72
73 // Stores for every node v the nodes corresponding to the
74 // non opposed sink indicators found in the frontier of v.
76
77 // Table to acces for every edge its corresponding key in the PQTree
79
80 // Stores for every node its st-number
82
83 // Stores for every st-number the node
85
87
88 // the subgraph that contains the biconnected component
89 // NOT THE COPY OF THE BICONNECTED COMPONENT THAT WAS CONSTRUCTED
90 // DURING PLANARITY TESTING. THIS HAS BEEN DELETED.
92 // corresponding PQTree
94 // The leaf correpsonding to the edge (s,t).
96
97public:
99 : m_inLeaves(nullptr)
100 , m_outLeaves(nullptr)
101 , m_frontier(nullptr)
102 , m_opposed(nullptr)
103 , m_nonOpposed(nullptr)
104 , m_edge2Key(nullptr)
105 , m_numbering(nullptr)
106 , m_tableNumber2Node(nullptr)
107 , m_superSink(nullptr)
108 , m_subGraph(nullptr)
109 , m_T(nullptr)
110 , m_stEdgeLeaf(nullptr) { }
111
113
114 void init(Graph* subGraph) {
115 m_subGraph = subGraph;
117
119
120 m_frontier = new NodeArray<SListPure<edge>>(*subGraph);
121
122 m_opposed = new NodeArray<SListPure<node>>(*subGraph);
123
124 m_nonOpposed = new NodeArray<SListPure<node>>(*subGraph);
125
126 m_edge2Key = new EdgeArray<InfoLeafPtr>(*subGraph);
127
128 m_numbering = new NodeArray<int>(*subGraph);
129
130 m_tableNumber2Node = new Array<node>(subGraph->numberOfNodes() + 1);
131 }
132
133 void Cleanup() {
134 delete m_inLeaves;
135 if (m_outLeaves) {
136 for (node v : m_subGraph->nodes) {
137 while (!(*m_outLeaves)[v].empty()) {
138 InfoLeafPtr L = (*m_outLeaves)[v].popFrontRet();
139 delete L;
140 }
141 }
142 delete m_outLeaves;
143 }
144 delete m_frontier;
145 delete m_opposed;
146 delete m_nonOpposed;
147 delete m_edge2Key;
148 if (m_T) {
150 delete m_T;
151 }
152 delete m_numbering;
153 delete m_tableNumber2Node;
154 }
155};
156
157}
158}
Declaration and implementation of Array class and Array algorithms.
Declaration of the class EmbedPQTree.
Includes declaration of graph class.
Decralation of GraphElement and GraphList classes.
Declaration of the class EmbedKey.
Declaration of class PlanarLeafKey.
Declaration of singly linked lists and iterators.
The parameterized class Array implements dynamic arrays of type E.
Definition Array.h:219
C-planarity test and embedding by Cohen, Feng and Eades.
Data type for general directed graphs (adjacency list representation).
Definition Graph_d.h:866
int numberOfNodes() const
Returns the number of nodes in the graph.
Definition Graph_d.h:979
internal::GraphObjectContainer< NodeElement > nodes
The container containing all node objects.
Definition Graph_d.h:929
Class for the representation of nodes.
Definition Graph_d.h:241
virtual void emptyAllPertinentNodes() override
Cleans up all flags that have been set in the pertinent nodes during the reduction process.
NodeArray< SListPure< node > > * m_opposed
NodeArray< SListPure< InfoLeafPtr > > * m_outLeaves
NodeArray< SListPure< edge > > * m_frontier
NodeArray< SListPure< node > > * m_nonOpposed
NodeArray< SListPure< InfoLeafPtr > > * m_inLeaves
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition Graph_d.h:717
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition Graph_d.h:659
The namespace for all OGDF objects.