Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

ogdf::sync_plan::internal Namespace Reference

all operators will only be found when using sync_plan::internal, so no namespace pollution More...

Classes

struct  BlockEmbedding
 Internal class used to embed a biconnected component with Q-vertices. More...
 
struct  EncapsulatedBlock
 Information on a single block adjacent to a cut-vertex that is about to be encapsulated. More...
 
struct  FrozenSimplifyMapping
 
struct  SimplifyMapping
 
class  UndoSimplify
 

Typedefs

using GnMultiArray = RegisteredMultiArray< node, BlockEmbedding *, node, NA >
 
template<typename V >
using NA = NodeArray< V >
 
using tp = const std::chrono::time_point< std::chrono::high_resolution_clock >
 
using tpc = std::chrono::high_resolution_clock
 

Functions

bool compareWithExhaustiveNodeDFS (Graph &G, adjEntry u_adj, node v, const EdgeSet<> &visited, const List< adjEntry > &found)
 Check that the method exhaustiveNodeDFS would return the same adjEntries as contained in found. More...
 
adjEntry continueNodeDFS (Graph &G, adjEntry u_adj, node v, EdgeSet<> &visited, List< adjEntry > &dfs_stack)
 Continue a DFS from the last node of dfs_stack until an unvisited edge incident to v is found. More...
 
int64_t dur_ms (const tp::duration &d)
 
int64_t dur_ns (const tp::duration &d)
 
int exhaustiveNodeDFS (Graph &G, adjEntry u_adj, node v, EdgeSet<> &visited, List< adjEntry > &out)
 Use a DFS to find all edges incident to v reachable from u_adj without crossing the node u and add them to out. More...
 
int findCycles (Graph &G, node u, const std::function< adjEntry(adjEntry)> &mapping, List< List< adjEntry >> &cycles, std::ostream &log)
 Find all cycles the permutation mapping defines on the order of the adjEntries of u and put all adjEntries of each cycle into their own list in cycles. More...
 
 OGDF_CONTAINER_PRINTER (printBijection)
 
 OGDF_CONTAINER_PRINTER (printContainer)
 
 OGDF_CONTAINER_PRINTER (printEdges)
 
 OGDF_CONTAINER_PRINTER (printFrozenBijection)
 
 OGDF_CONTAINER_PRINTER (printIncidentEdges)
 
std::ostream & operator<< (std::ostream &os, const ogdf::ClusterGraph &CG)
 
std::ostream & operator<< (std::ostream &os, const ogdf::Graph &G)
 
template<typename Container >
std::ostream & operator<< (std::ostream &os, const printBijection< Container > &inst)
 
template<typename Container >
std::ostream & operator<< (std::ostream &os, const printContainer< Container > &inst)
 
template<typename Container >
std::ostream & operator<< (std::ostream &os, const printEdges< Container > &inst)
 
template<>
std::ostream & operator<< (std::ostream &os, const printEdges< PipeBij > &inst)
 
template<typename Container >
std::ostream & operator<< (std::ostream &os, const printFrozenBijection< Container > &inst)
 
template<typename Container >
std::ostream & operator<< (std::ostream &os, const printIncidentEdges< Container > &inst)
 
template<>
std::ostream & operator<< (std::ostream &os, const printIncidentEdges< PipeBij > &inst)
 
std::ostream & operator<< (std::ostream &os, const std::function< std::ostream &(std::ostream &)> &func)
 
template<typename T1 , typename T2 >
std::ostream & operator<< (std::ostream &os, const std::pair< T1, T2 > &pair)
 
adjEntry startNodeDFS (Graph &G, adjEntry u_adj, node v, EdgeSet<> &visited, List< adjEntry > &dfs_stack)
 Use a DFS to find an edge incident to v reachable from u_adj without crossing the node u. More...
 
int sumPNodeDegrees (const ogdf::pc_tree::PCTree &pct)
 
std::string to_string (const std::function< std::ostream &(std::ostream &)> &func)
 
bool validateCollectedAdjs (node v, node u, List< SimplifyMapping > &bij_list, EdgeSet<> &visited, SyncPlanComponents &components)
 Check that /p bij_list contains all adjEntries of v which belong to a parallel bundle leading to u. More...
 
void validatePartnerPCTree (const NodePCRotation *u_pc, const NodePCRotation *v_pc)
 For two poles u,v of an (SPQR-Tree) parallel, check that their embedding PCTrees correctly represent all parallel bundles between u and v. More...
 

Detailed Description

all operators will only be found when using sync_plan::internal, so no namespace pollution

Typedef Documentation

◆ GnMultiArray

◆ NA

template<typename V >
using ogdf::sync_plan::internal::NA = typedef NodeArray<V>

Definition at line 47 of file BlockEmbedding.h.

◆ tp

using ogdf::sync_plan::internal::tp = typedef const std::chrono::time_point<std::chrono::high_resolution_clock>

Definition at line 83 of file SyncPlan.h.

◆ tpc

using ogdf::sync_plan::internal::tpc = typedef std::chrono::high_resolution_clock

Definition at line 82 of file SyncPlan.h.

Function Documentation

◆ compareWithExhaustiveNodeDFS()

bool ogdf::sync_plan::internal::compareWithExhaustiveNodeDFS ( Graph G,
adjEntry  u_adj,
node  v,
const EdgeSet<> &  visited,
const List< adjEntry > &  found 
)

Check that the method exhaustiveNodeDFS would return the same adjEntries as contained in found.

◆ continueNodeDFS()

adjEntry ogdf::sync_plan::internal::continueNodeDFS ( Graph G,
adjEntry  u_adj,
node  v,
EdgeSet<> &  visited,
List< adjEntry > &  dfs_stack 
)

Continue a DFS from the last node of dfs_stack until an unvisited edge incident to v is found.

All edges visited on the way (also those that didn't lead to an edge incident to v and the edge incident to v found in the end) are added to the set visited.

Parameters
Gthe graph
u_adj(for debugging purposes) an adjEntry at the bottom of the stack, whose node we should never visit
vthe node to find (an adjacent edge to)
visitedset of already used edges
dfs_stackcontinuation points for the dfs
Returns
an adjEntry of v reachable from dfs_stack.back() via previously unvisited edges

◆ dur_ms()

int64_t ogdf::sync_plan::internal::dur_ms ( const tp::duration &  d)
inline

Definition at line 85 of file SyncPlan.h.

◆ dur_ns()

int64_t ogdf::sync_plan::internal::dur_ns ( const tp::duration &  d)
inline

Definition at line 89 of file SyncPlan.h.

◆ exhaustiveNodeDFS()

int ogdf::sync_plan::internal::exhaustiveNodeDFS ( Graph G,
adjEntry  u_adj,
node  v,
EdgeSet<> &  visited,
List< adjEntry > &  out 
)

Use a DFS to find all edges incident to v reachable from u_adj without crossing the node u and add them to out.

All edges visited on the way (also those that didn't lead to an edge incident to v and the edge incident to v found in the end) are added to the set visited. Calls startNodeDFS once and then repeatedly calls continueNodeDFS until no new adjEntry is found.

◆ findCycles()

int ogdf::sync_plan::internal::findCycles ( Graph G,
node  u,
const std::function< adjEntry(adjEntry)> &  mapping,
List< List< adjEntry >> &  cycles,
std::ostream &  log 
)

Find all cycles the permutation mapping defines on the order of the adjEntries of u and put all adjEntries of each cycle into their own list in cycles.

◆ OGDF_CONTAINER_PRINTER() [1/5]

ogdf::sync_plan::internal::OGDF_CONTAINER_PRINTER ( printBijection  )

◆ OGDF_CONTAINER_PRINTER() [2/5]

ogdf::sync_plan::internal::OGDF_CONTAINER_PRINTER ( printContainer  )

◆ OGDF_CONTAINER_PRINTER() [3/5]

ogdf::sync_plan::internal::OGDF_CONTAINER_PRINTER ( printEdges  )

◆ OGDF_CONTAINER_PRINTER() [4/5]

ogdf::sync_plan::internal::OGDF_CONTAINER_PRINTER ( printFrozenBijection  )

◆ OGDF_CONTAINER_PRINTER() [5/5]

ogdf::sync_plan::internal::OGDF_CONTAINER_PRINTER ( printIncidentEdges  )

◆ operator<<() [1/11]

std::ostream& ogdf::sync_plan::internal::operator<< ( std::ostream &  os,
const ogdf::ClusterGraph CG 
)

◆ operator<<() [2/11]

std::ostream& ogdf::sync_plan::internal::operator<< ( std::ostream &  os,
const ogdf::Graph G 
)

◆ operator<<() [3/11]

template<typename Container >
std::ostream& ogdf::sync_plan::internal::operator<< ( std::ostream &  os,
const printBijection< Container > &  inst 
)

Definition at line 116 of file Logging.h.

◆ operator<<() [4/11]

template<typename Container >
std::ostream& ogdf::sync_plan::internal::operator<< ( std::ostream &  os,
const printContainer< Container > &  inst 
)

Definition at line 82 of file Logging.h.

◆ operator<<() [5/11]

template<typename Container >
std::ostream& ogdf::sync_plan::internal::operator<< ( std::ostream &  os,
const printEdges< Container > &  inst 
)

Definition at line 104 of file Logging.h.

◆ operator<<() [6/11]

template<>
std::ostream& ogdf::sync_plan::internal::operator<< ( std::ostream &  os,
const printEdges< PipeBij > &  inst 
)

◆ operator<<() [7/11]

template<typename Container >
std::ostream& ogdf::sync_plan::internal::operator<< ( std::ostream &  os,
const printFrozenBijection< Container > &  inst 
)

Definition at line 144 of file Logging.h.

◆ operator<<() [8/11]

template<typename Container >
std::ostream& ogdf::sync_plan::internal::operator<< ( std::ostream &  os,
const printIncidentEdges< Container > &  inst 
)

Definition at line 92 of file Logging.h.

◆ operator<<() [9/11]

template<>
std::ostream& ogdf::sync_plan::internal::operator<< ( std::ostream &  os,
const printIncidentEdges< PipeBij > &  inst 
)

◆ operator<<() [10/11]

std::ostream& ogdf::sync_plan::internal::operator<< ( std::ostream &  os,
const std::function< std::ostream &(std::ostream &)> &  func 
)

◆ operator<<() [11/11]

template<typename T1 , typename T2 >
std::ostream& ogdf::sync_plan::internal::operator<< ( std::ostream &  os,
const std::pair< T1, T2 > &  pair 
)

Definition at line 63 of file Logging.h.

◆ startNodeDFS()

adjEntry ogdf::sync_plan::internal::startNodeDFS ( Graph G,
adjEntry  u_adj,
node  v,
EdgeSet<> &  visited,
List< adjEntry > &  dfs_stack 
)

Use a DFS to find an edge incident to v reachable from u_adj without crossing the node u.

All edges visited on the way (also those that didn't lead to an edge incident to v and the edge incident to v found in the end) are added to the set visited. The path taken is recorded in dfs_stack, where dfs_stack.front() == u_adj and dfs_stack.back() is the adjEntry of v which is also returned. If you want to find a further alternative adjEntries that match this criterion, pop the last entry off the stack and call continueNodeDFS (see also exhaustiveNodeDFS).

◆ sumPNodeDegrees()

int ogdf::sync_plan::internal::sumPNodeDegrees ( const ogdf::pc_tree::PCTree pct)

◆ to_string()

std::string ogdf::sync_plan::internal::to_string ( const std::function< std::ostream &(std::ostream &)> &  func)

◆ validateCollectedAdjs()

bool ogdf::sync_plan::internal::validateCollectedAdjs ( node  v,
node  u,
List< SimplifyMapping > &  bij_list,
EdgeSet<> &  visited,
SyncPlanComponents components 
)

Check that /p bij_list contains all adjEntries of v which belong to a parallel bundle leading to u.

◆ validatePartnerPCTree()

void ogdf::sync_plan::internal::validatePartnerPCTree ( const NodePCRotation u_pc,
const NodePCRotation v_pc 
)

For two poles u,v of an (SPQR-Tree) parallel, check that their embedding PCTrees correctly represent all parallel bundles between u and v.

Note: u_pc must be trivial, while v_pc may be non-trivial.