86 for (
auto leaf : getLeaves()) {
87 mapping[getIncidentEdgeForLeaf(leaf)] = leaf;
105 for (
auto leaf : getLeaves()) {
106 mapping[getGraphNodeForInnerNode(leaf)] = leaf;
118 for (
auto leaf : getLeaves()) {
119 mapping[getIncidentEdgeForLeaf(leaf)] = &getPartnerEdgesForLeaf(leaf);
137 if (m_bundleEdgesForLeaf.registeredAt() ==
nullptr) {
140 return &m_bundleEdgesForLeaf.registeredAt()->getForest() == getForest();
170 [[nodiscard]]
const char*
what() const noexcept
override {
return "Graph is not planar"; }
Includes declaration of graph class.
An intrusive list for the leaves of a PCTree.
Declaration of doubly linked lists and iterators.
Predeclaration of various PC-tree related classes and enums.
A node in a PC-tree that is either a P-node, C-node or leaf.
A registry that allows labelling the nodes of a PC-tree.
The main class of the PC-tree.
Basic declarations, included by all source files.
Class for the representation of edges.
Data type for general directed graphs (adjacency list representation).
Doubly linked lists (maintaining the length of the list).
Class for the representation of nodes.
Dynamic arrays indexed with arbitrary keys.
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
RegisteredArray for nodes, edges and adjEntries of a graph.
This class represents the embedding tree of a single node in a biconnected component.
void generateLeafForIncidentEdgeMapping(EdgeArray< PCNode * > &mapping) const
void generatePartnerEdgesForIncidentEdge(EdgeArray< const List< edge > * > &mapping) const
std::function< bool(PCNode *, PCNode *)> uidComparer() const
node getTrivialPartnerPole() const
If this embedding tree is trivial (i.e., consists of a single P-node allowing arbitrary rotations),...
PCTreeNodeArray< List< edge > > m_bundleEdgesForLeaf
std::function< void(std::ostream &os, PCNode *, int)> uidPrinter() const
PCTreeNodeArray< node > m_graphNodeForInnerNode
bool knowsPartnerEdges() const
void generateInnerNodeForGraphNodeMapping(NodeArray< PCNode * > &mapping) const
node getGraphNodeForInnerNode(PCNode *n) const
Returns which graph node created a P-node during the run of the planarity test that resulted in this ...
PCTreeNodeArray< edge > m_incidentEdgeForLeaf
static node getTrivialPartnerPole(const Graph &G, node n)
const Graph * getGraph() const
edge getIncidentEdgeForLeaf(PCNode *n) const
Returns which incident edge corresponds to which leaf.
bool isEqual(const NodePCRotation &pc) const
Equality check where to leaves are considered the same if they map to the same edge via getIncidentEd...
NodePCRotation(const Graph &G, node n, bool mapBundleEdges=true)
Calculate the embedding tree of node n in graph G.
const List< edge > & getPartnerEdgesForLeaf(PCNode *l) const
If this embedding tree is trivial and getNode() thus has a partner pole, returns the set of edges inc...
void setIncidentEdgeForLeaf(PCNode *n, edge e)
This is only needed so that SyncPlan::propagatePQ can fix its mapping when propagating into an adjace...
A node in a PC-tree that is either a P-node, C-node or leaf.
A PC-tree represents a set of cyclic orders of its leaves by labeling its inner nodes as either P- or...
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
const char * what() const noexcept override