Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
NodeTricRotation.h
Go to the documentation of this file.
1
31#pragma once
32
34#include <ogdf/basic/Graph.h>
35#include <ogdf/basic/SList.h>
36#include <ogdf/basic/basic.h>
40
41#include <vector>
42
43namespace ogdf::pc_tree {
44class PCNode;
45} // namespace ogdf::pc_tree
46
47namespace ogdf {
48class Logger;
49template<class E>
50class List;
51} // namespace ogdf
52
53namespace ogdf::sync_plan {
54
55namespace spqr_utils {
56inline bool isSNode(const Graph& skel) {
57 return skel.numberOfNodes() > 2 && skel.numberOfNodes() == skel.numberOfEdges();
58}
59
60inline bool isPNode(const Graph& skel) { return skel.numberOfNodes() == 2; }
61
62inline bool isRNode(const Graph& skel) { return !isSNode(skel) && !isPNode(skel); }
63
65 return skel->copy(GC_adj->theEdge())->getAdj(skel->copy(GC_adj->theNode()));
66}
67
68inline adjEntry getAdjInOrig(const OverlappingGraphCopy* skel, adjEntry skel_adj) {
69 return skel->original(skel_adj->theEdge())->getAdj(skel->original(skel_adj->theNode()));
70}
71}
72
76 static Logger log;
82 std::vector<OverlappingGraphCopy*> skel_array;
83 bool planar = true;
84
86
88
89 SimpleSPQRTree(OverlappingGraphCopies& OGC_base) : GC(OGC_base), GC_skels(GC) {};
90
92 for (auto ptr : skel_array) {
93 if (!ptr) {
94 continue;
95 }
96 ptr->breakLinkForMasterDeconstruction();
97 delete ptr;
98 }
99 }
100
101 void init();
102
104
106
108};
109
129
130}
Implementation of disjoint sets data structures (union-find functionality).
Includes declaration of graph class.
An embedding tree representing, for a single node, all orders of incident edges in all planar embeddi...
Multiple GraphCopies that contain different, overlapping parts of the same original graph.
Declaration of singly linked lists and iterators.
Declares class Triconnectivity which realizes the Hopcroft/Tarjan algorithm for finding the triconnec...
Basic declarations, included by all source files.
Class for adjacency list elements.
Definition Graph_d.h:143
edge theEdge() const
Returns the edge associated with this adjacency entry.
Definition Graph_d.h:161
node theNode() const
Returns the node whose adjacency list contains this element.
Definition Graph_d.h:167
Class for the representation of edges.
Definition Graph_d.h:364
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
int numberOfEdges() const
Returns the number of edges in the graph.
Definition Graph_d.h:982
Doubly linked lists (maintaining the length of the list).
Definition List.h:1451
Centralized global and local logging facility working on streams like std::cout.
Definition Logger.h:102
Class for the representation of nodes.
Definition Graph_d.h:241
The manager class for multiple OverlappingGraphCopy instances of the same graph.
Version of GraphCopySimple that may efficiently share some overlap with other instances of the same o...
node copy(node v) const
Returns the node in the graph copy corresponding to v.
const Graph & original() const
Returns a reference to the original graph.
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition Graph_d.h:717
This class represents the embedding tree of a single node in a biconnected component.
A node in a PC-tree that is either a P-node, C-node or leaf.
Definition PCNode.h:62
Derive embedding trees from Triconnectivity information.
void getIncidentRealEdgesInSubtree(adjEntry skel_adj, OverlappingGraphCopy &skel, List< edge > &out)
pc_tree::PCNode * process(adjEntry skel_adj, OverlappingGraphCopy &skel, pc_tree::PCNode *parent=nullptr)
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
Definition config.h:117
#define OGDF_NO_COPY(cls)
Explicitly disables (deletes) copy construction and assignment for class cls.
Definition copy_move.h:37
#define OGDF_NO_MOVE(cls)
Explicitly disables (deletes) move construction and assignment for class cls.
Definition copy_move.h:42
adjEntry getAdjInSkel(const OverlappingGraphCopy *skel, adjEntry GC_adj)
adjEntry getAdjInOrig(const OverlappingGraphCopy *skel, adjEntry skel_adj)
bool isPNode(const Graph &skel)
bool isSNode(const Graph &skel)
bool isRNode(const Graph &skel)
The namespace for all OGDF objects.
representation of a component
Wrapper class around Triconnectivity information.
EdgeArray< OverlappingGraphCopy * > skels
OverlappingGraphCopies GC_skels
std::vector< OverlappingGraphCopy * > skel_array
OverlappingGraphCopy * getTwinSkel(OverlappingGraphCopy *skel, edge skel_e) const
EdgeArray< OverlappingGraphCopy * > twins
OverlappingGraphCopy * getNonSSkel(node GC_n) const
EdgeArray< SList< edge > > par_replacement
OverlappingGraphCopy * getTwinSkel_GC(OverlappingGraphCopy *skel, edge GC_e) const