|
| | OnePlanarization ()=default |
| |
| | OnePlanarization (const EdgePairPartition *ep) |
| | Associates the graph with ep and computes the planarization.
|
| |
| const EdgeSet & | crossingEdges () const |
| | Returns the set of all edges that are incident to a crossing vertex.
|
| |
| const NodeSet & | crossingVertices () const |
| | Returns the set of all crossing vertices in the graph.
|
| |
| const EdgeSet & | freeEdges () const |
| | Returns the set of all edges that may still cross some other edge.
|
| |
| const EdgePairPartition * | getEdgePairPartition () const |
| | Returns the associated EdgePairPartition.
|
| |
| void | getSaturatedSubgraph (GraphCopy &cp) const |
| | Computes the subgraph induced by uncrossable edges.
|
| |
| void | init (const EdgePairPartition *ep) |
| | Re-initializes the graph with ep.
|
| |
| bool | isPlanar () const |
| | Returns true if the graph is planar and thus represents a solution.
|
| |
| const EdgeSet & | kiteEdges () const |
| | Returns the set of all kite edges in the graph.
|
| |
| const EdgeSet & | remainingEdges () const |
| | Returns the set of all uncrossable edges that are neither crossing edges nor kite edges.
|
| |
| | GraphCopy () |
| |
| | GraphCopy (const Graph &G) |
| |
| | GraphCopy (const Graph *G) |
| |
| | GraphCopy (const GraphCopy &other) |
| |
| void | clear () override |
| | Removes all nodes and edges from this copy but does not break the link with the original graph.
|
| |
| GraphCopy & | operator= (const GraphCopy &other) |
| |
| void | setOriginalGraph (const Graph &G) |
| | Re-initializes the copy using G, but does not create any nodes or edges.
|
| |
| void | setOriginalGraph (const Graph *G) override |
| | Associates the graph copy with G, but does not create any nodes or edges.
|
| |
| virtual void | setOriginalGraph (const Graph *G)=0 |
| | Re-initializes the copy using G (which might be null), but does not create any nodes or edges.
|
| |
| const List< edge > & | chain (edge e) const |
| | Returns the list of edges coresponding to edge e.
|
| |
| edge | copy (edge e) const override |
| | Returns the first edge in the list of edges corresponding to edge e.
|
| |
| adjEntry | copy (adjEntry adj) const override |
| | Returns the adjacency entry in the copy graph corresponding to adj.
|
| |
| bool | isReversed (edge e) const |
| | Returns true iff edge e has been reversed.
|
| |
| bool | isReversedCopyEdge (edge e) const |
| | Returns true iff e is reversed w.r.t.
|
| |
| node | copy (node v) const |
| | Returns the node in the graph copy corresponding to v.
|
| |
| virtual edge | copy (edge e) const=0 |
| | Returns the edge in the graph copy corresponding to e.
|
| |
| virtual adjEntry | copy (adjEntry adj) const=0 |
| | Returns the adjacency entry in the graph copy corresponding to adj.
|
| |
| void | delEdge (edge e) override |
| | Removes edge e and clears the list of edges corresponding to e's original edge.
|
| |
| edge | split (edge e) override |
| | Splits edge e.
|
| |
| void | unsplit (edge eIn, edge eOut) override |
| | Undoes a previous split operation.
|
| |
| edge | newEdge (edge eOrig) |
| | Creates a new edge (v,w) with original edge eOrig.
|
| |
| void | setEdge (edge eOrig, edge eCopy) |
| | sets eOrig to be the corresponding original edge of eCopy and vice versa
|
| |
| void | setOriginalEmbedding () override |
| | Sets the embedding of the graph copy to the embedding of the original graph.
|
| |
| void | removePseudoCrossings () |
| | Removes all crossing nodes which are actually only two "touching" edges.
|
| |
| bool | hasSameEdgesCrossings () const |
| | Returns whether there are two edges in the GraphCopy that cross each other multiple times.
|
| |
| bool | hasAdjacentEdgesCrossings () const |
| | Returns whether the GraphCopy contains at least one crossing of two adjacent edges.
|
| |
| bool | hasNonSimpleCrossings () const |
| | Returns whether the GraphCopy contains crossings that will result in a non-simple drawing.
|
| |
| void | removeNonSimpleCrossings (SListPure< edge > &edgesToCheck, DynamicDualGraph *dualGraph=nullptr) |
| | Removes all non-simple cossings involving edges from edgesToCheck (see hasNonSimpleCrossings() for a definition of non-simple crossings).
|
| |
| void | removeNonSimpleCrossings (DynamicDualGraph *dualGraph=nullptr) |
| | Removes all non-simple cossings (see hasNonSimpleCrossings() for a definition of non-simple crossings).
|
| |
| void | removeNonSimpleCrossings (node origNode, DynamicDualGraph *dualGraph=nullptr) |
| | Removes all non-simple cossings involving edges incident to origNode (see hasNonSimpleCrossings() for a definition of non-simple crossings).
|
| |
| void | insertEdgePath (edge eOrig, const SList< adjEntry > &crossedEdges) |
| | Re-inserts edge eOrig by "crossing" the edges in crossedEdges.
|
| |
| void | insertEdgePath (node srcOrig, node tgtOrig, const SList< adjEntry > &crossedEdges) |
| | Special version (for FixedEmbeddingUpwardEdgeInserter only).
|
| |
| void | removeEdgePath (edge eOrig) |
| | Removes the complete edge path for edge eOrig.
|
| |
| edge | insertCrossing (edge &crossingEdge, edge crossedEdge, bool rightToLeft) |
| | Inserts crossings between two copy edges.
|
| |
| edge | newEdge (node v, node w, int index=-1) |
| | Creates a new edge (v,w) and returns it.
|
| |
| edge | newEdge (node v, adjEntry adjTgt, int index=-1) |
| | Creates a new edge at predefined positions in the adjacency lists.
|
| |
| edge | newEdge (adjEntry adjSrc, node w, int index=-1) |
| | Creates a new edge at predefined positions in the adjacency lists.
|
| |
| edge | newEdge (adjEntry adjSrc, adjEntry adjTgt, Direction dir=Direction::after, int index=-1) |
| | Creates a new edge at predefined positions in the adjacency lists.
|
| |
| template<typename S , typename T > |
| edge | newEdge (S src, Direction dirSrc, T tgt, Direction dirTgt, int index=-1) |
| | Creates a new edge at predefined positions in the adjacency lists.
|
| |
| edge | newEdge (node v, adjEntry adj, edge eOrig, CombinatorialEmbedding &E) |
| | Creates a new edge with original edge eOrig in an embedding E.
|
| |
| void | insertEdgePathEmbedded (edge eOrig, CombinatorialEmbedding &E, const SList< adjEntry > &crossedEdges) |
| | Re-inserts edge eOrig by "crossing" the edges in crossedEdges in embedding E.
|
| |
| void | insertEdgePathEmbedded (edge eOrig, CombinatorialEmbedding &E, DynamicDualGraph &dual, const SList< adjEntry > &crossedEdges) |
| |
| void | removeEdgePathEmbedded (CombinatorialEmbedding &E, edge eOrig, FaceSet &newFaces) |
| | Removes the complete edge path for edge eOrig while preserving the embedding.
|
| |
| void | removeEdgePathEmbedded (CombinatorialEmbedding &E, DynamicDualGraph &dual, edge eOrig) |
| |
| void | consistencyCheck () const |
| | Asserts that this copy is consistent.
|
| |
| | GraphCopyBase ()=default |
| | Constructs a GraphCopyBase associated with no graph.
|
| |
| | GraphCopyBase (const GraphCopyBase &other)=delete |
| |
| | GraphCopyBase (GraphCopyBase &&other) noexcept=delete |
| |
| node | copy (node v) const |
| | Returns the node in the graph copy corresponding to v.
|
| |
| void | createEmpty (const Graph &G) |
| | Re-initializes the copy using G, but does not create any nodes or edges.
|
| |
| void | delNode (node v) override |
| | Removes node v.
|
| |
| bool | getLinkCopiesOnInsert () const |
| |
| const Graph * | getOriginalGraph () const |
| |
| void | init (const Graph &G) |
| | Re-initializes the copy using G, creating copies for all nodes and edges in G.
|
| |
| void | init (const Graph *G) |
| | Re-initializes the copy using G (which might be null), creating copies for all nodes and edges in G.
|
| |
| bool | isDummy (adjEntry adj) const |
| | Returns true iff adj->theEdge() has no corresponding edge in the original graph.
|
| |
| bool | isDummy (edge e) const |
| | Returns true iff e has no corresponding edge in the original graph.
|
| |
| bool | isDummy (node v) const |
| | Returns true iff v has no corresponding node in the original graph.
|
| |
| node | newNode (int index=-1) |
| | Creates a new node and returns it.
|
| |
| node | newNode (node vOrig) |
| | Creates a new node in the graph copy with original node vOrig.
|
| |
| GraphCopyBase & | operator= (const GraphCopyBase &other)=delete |
| |
| GraphCopyBase & | operator= (GraphCopyBase &&other) noexcept=delete |
| |
| const Graph & | original () const |
| | Returns a reference to the original graph.
|
| |
| adjEntry | original (adjEntry adj) const |
| | Returns the adjacency entry in the original graph corresponding to adj.
|
| |
| edge | original (edge e) const |
| | Returns the edge in the original graph corresponding to e.
|
| |
| node | original (node v) const |
| | Returns the node in the original graph corresponding to v.
|
| |
| void | setLinkCopiesOnInsert (bool linkCopiesOnInsert) |
| | Whether insert(getOriginalGraph()) will automatically set copy and original.
|
| |
| void | setOriginalGraph (const Graph &G) |
| | Re-initializes the copy using G, but does not create any nodes or edges.
|
| |
| | Graph () |
| | Constructs an empty graph.
|
| |
| | Graph (const Graph ©) |
| | Constructs a graph that is a copy of G.
|
| |
| | Graph (Graph &&move)=delete |
| |
| virtual | ~Graph () |
| | Destructor.
|
| |
| Graph & | operator= (const Graph ©) |
| | Overwrites this graph to be a copy of G.
|
| |
| Graph & | operator= (Graph &&move)=delete |
| |
| bool | empty () const |
| | Returns true iff the graph is empty, i.e., contains no nodes.
|
| |
| int | numberOfNodes () const |
| | Returns the number of nodes in the graph.
|
| |
| int | numberOfEdges () const |
| | Returns the number of edges in the graph.
|
| |
| int | maxNodeIndex () const |
| | Returns the largest used node index.
|
| |
| int | maxEdgeIndex () const |
| | Returns the largest used edge index.
|
| |
| int | maxAdjEntryIndex () const |
| | Returns the largest used adjEntry index.
|
| |
| node | firstNode () const |
| | Returns the first node in the list of all nodes.
|
| |
| node | lastNode () const |
| | Returns the last node in the list of all nodes.
|
| |
| edge | firstEdge () const |
| | Returns the first edge in the list of all edges.
|
| |
| edge | lastEdge () const |
| | Returns the last edge in the list of all edges.
|
| |
| node | chooseNode (std::function< bool(node)> includeNode=[](node) { return true;}, bool isFastTest=true) const |
| | Returns a random node.
|
| |
| edge | chooseEdge (std::function< bool(edge)> includeEdge=[](edge) { return true;}, bool isFastTest=true) const |
| | Returns a random edge.
|
| |
| template<class CONTAINER > |
| void | allNodes (CONTAINER &nodeContainer) const |
| | Returns a container with all nodes of the graph.
|
| |
| template<class CONTAINER > |
| void | allEdges (CONTAINER &edgeContainer) const |
| | Returns a container with all edges of the graph.
|
| |
| node | newNode (int index=-1) |
| | Creates a new node and returns it.
|
| |
| edge | newEdge (node v, node w, int index=-1) |
| | Creates a new edge (v,w) and returns it.
|
| |
| edge | newEdge (node v, adjEntry adjTgt, int index=-1) |
| | Creates a new edge at predefined positions in the adjacency lists.
|
| |
| edge | newEdge (adjEntry adjSrc, node w, int index=-1) |
| | Creates a new edge at predefined positions in the adjacency lists.
|
| |
| edge | newEdge (adjEntry adjSrc, adjEntry adjTgt, Direction dir=Direction::after, int index=-1) |
| | Creates a new edge at predefined positions in the adjacency lists.
|
| |
| template<typename S , typename T > |
| edge | newEdge (S src, Direction dirSrc, T tgt, Direction dirTgt, int index=-1) |
| | Creates a new edge at predefined positions in the adjacency lists.
|
| |
| void | restoreAllEdges () |
| | Restore all hidden edges and invalidate all HiddenEdgeSets.
|
| |
| void | unsplit (node u) |
| | Undoes a split operation.
|
| |
| node | splitNode (adjEntry adjStartLeft, adjEntry adjStartRight) |
| | Splits a node while preserving the order of adjacency entries.
|
| |
| node | contract (edge e, bool keepSelfLoops=false) |
| | Contracts edge e while preserving the order of adjacency entries.
|
| |
| void | move (edge e, adjEntry adjSrc, Direction dirSrc, adjEntry adjTgt, Direction dirTgt) |
| | Moves edge e to a different adjacency list.
|
| |
| void | moveTarget (edge e, node w) |
| | Moves the target node of edge e to node w.
|
| |
| void | moveTarget (edge e, adjEntry adjTgt, Direction dir) |
| | Moves the target node of edge e to a specific position in an adjacency list.
|
| |
| void | moveSource (edge e, node w) |
| | Moves the source node of edge e to node w.
|
| |
| void | moveSource (edge e, adjEntry adjSrc, Direction dir) |
| | Moves the source node of edge e to a specific position in an adjacency list.
|
| |
| edge | searchEdge (node v, node w, bool directed=false) const |
| | Searches and returns an edge connecting nodes v and w in time O( min(deg(v ), deg(w ))).
|
| |
| void | reverseEdge (edge e) |
| | Reverses the edge e, i.e., exchanges source and target node.
|
| |
| void | reverseAllEdges () |
| | Reverses all edges in the graph.
|
| |
| template<class NODELIST > |
| void | collapse (NODELIST &nodesToCollapse) |
| | Collapses all nodes in the list nodesToCollapse to the first node in the list.
|
| |
| template<class ADJ_ENTRY_LIST > |
| void | sort (node v, const ADJ_ENTRY_LIST &newOrder) |
| | Sorts the adjacency list of node v according to newOrder.
|
| |
| template<class IT > |
| void | sort (node v, IT begin, IT end) |
| | Sorts the adjacency list of node v according to the range denoted by two iterators.
|
| |
| void | reverseAdjEdges (node v) |
| | Reverses the adjacency list of v.
|
| |
| void | moveAdj (adjEntry adjMove, Direction dir, adjEntry adjPos) |
| | Moves adjacency entry adjMove before or after adjPos.
|
| |
| void | moveAdjAfter (adjEntry adjMove, adjEntry adjAfter) |
| | Moves adjacency entry adjMove after adjAfter.
|
| |
| void | moveAdjBefore (adjEntry adjMove, adjEntry adjBefore) |
| | Moves adjacency entry adjMove before adjBefore.
|
| |
| void | reverseAdjEdges () |
| | Reverses all adjacency lists.
|
| |
| void | swapAdjEdges (adjEntry adj1, adjEntry adj2) |
| | Exchanges two entries in an adjacency list.
|
| |
| int | genus () const |
| | Returns the genus of the graph's embedding.
|
| |
| bool | representsCombEmbedding () const |
| | Returns true iff the graph represents a combinatorial embedding.
|
| |
| void | consistencyCheck () const |
| | Asserts that this graph is consistent.
|
| |
| internal::GraphNodeRegistry & | nodeRegistry () |
| | Returns a reference to the registry of node arrays associated with this graph.
|
| |
| const internal::GraphNodeRegistry & | nodeRegistry () const |
| | Returns a const reference to the registry of node arrays associated with this graph.
|
| |
| | operator const internal::GraphNodeRegistry & () const |
| |
| internal::GraphEdgeRegistry & | edgeRegistry () |
| | Returns a reference to the registry of edge arrays associated with this graph.
|
| |
| const internal::GraphEdgeRegistry & | edgeRegistry () const |
| | Returns a const reference to the registry of edge arrays associated with this graph.
|
| |
| | operator const internal::GraphEdgeRegistry & () const |
| |
| internal::GraphAdjRegistry & | adjEntryRegistry () |
| | Returns a reference to the registry of adjEntry arrays associated with this graph.
|
| |
| const internal::GraphAdjRegistry & | adjEntryRegistry () const |
| | Returns a const reference to the registry of adjEntry arrays associated with this graph.
|
| |
| | operator const internal::GraphAdjRegistry & () const |
| |
| void | resetEdgeIdCount (int maxId) |
| | Resets the edge id count to maxId.
|
| |
| void | resetNodeIdCount (int maxId) |
| |
| template<OGDF_NODE_ITER NI, OGDF_EDGE_ITER EI, bool copyEmbedding = true, bool copyIDs = false, bool notifyObservers = true> |
| std::pair< int, int > | insert (const NI &nodesBegin, const NI &nodesEnd, const EI &edgesBegin, const EI &edgesEnd, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap) |
| | Inserts a copy of a given subgraph into this graph.
|
| |
| template<OGDF_NODE_ITER NI, OGDF_EDGE_FILTER EF, bool copyIDs = false, bool notifyObservers = true> |
| std::pair< int, int > | insert (const NI &nodesBegin, const NI &nodesEnd, const EF &edgeFilter, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap) |
| | Inserts a copy of a given subgraph into this graph.
|
| |
| template<OGDF_NODE_LIST NL> |
| std::pair< int, int > | insert (const NL &nodeList, const EdgeSet &edgeSet, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap) |
| | Inserts a copy of a given subgraph into this graph.
|
| |
| template<OGDF_NODE_LIST NL, OGDF_EDGE_LIST EL> |
| std::pair< int, int > | insert (const NL &nodeList, const EL &edgeList, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap) |
| | Inserts a copy of a given subgraph into this graph.
|
| |
| std::pair< int, int > | insert (const CCsInfo &info, int cc, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap) |
| | Inserts a copy of a given connected component cc into this graph.
|
| |
| std::pair< int, int > | insert (const Graph &G, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap) |
| | Inserts a copy of a given Graph G into this graph.
|
| |
| std::pair< int, int > | insert (const Graph &G) |
| | Inserts a copy of a given Graph G into this graph.
|
| |
| | Observable ()=default |
| |
| | Observable (const Observable ©)=delete |
| | If you want to copy a subclass of Observable, call the default Observable() constructor.
|
| |
| | Observable (Observable &&move)=delete |
| | If you want to move a subclass of Observable, call the default Observable() constructor.
|
| |
| virtual | ~Observable () |
| | Note that all Observers must already be removed once the destructor of this base class is invoked (e.g.
|
| |
| Observable & | operator= (const Observable ©)=delete |
| |
| Observable & | operator= (Observable &&move)=delete |
| |
|
| enum class | EdgeType { association = 0
, generalization = 1
, dependency = 2
} |
| | The type of edges (only used in derived classes). More...
|
| |
| enum class | NodeType { vertex = 0
, dummy = 1
, generalizationMerger = 2
, generalizationExpander = 3
, highDegreeExpander = 4
, lowDegreeExpander = 5
, associationClass = 6
} |
| | The type of nodes. More...
|
| |
| using | node_iterator = internal::GraphIterator< node > |
| | Provides a bidirectional iterator to a node in a graph.
|
| |
| using | edge_iterator = internal::GraphIterator< edge > |
| | Provides a bidirectional iterator to an edge in a graph.
|
| |
| using | adjEntry_iterator = internal::GraphIterator< adjEntry > |
| | Provides a bidirectional iterator to an entry in an adjacency list.
|
| |
| internal::GraphObjectContainer< NodeElement > | nodes |
| | The container containing all node objects.
|
| |
| internal::GraphObjectContainer< EdgeElement > | edges |
| | The container containing all edge objects.
|
| |
| void | edgeInserted (void *userData, edge original, edge copy) override |
| | Callback notifying subclasses that insert() copied an edge.
|
| |
| void | removeAdjacentEdgesCrossing (adjEntry adj1, adjEntry adj2, DynamicDualGraph *dualGraph) |
| | Removes the crossing of the two adjacent edges adj1->theEdge() and adj2->theEdge().
|
| |
| void | removeSameEdgesCrossing (adjEntry adjFirstCrossing1, adjEntry adjFirstCrossing2, adjEntry adjSecondCrossing1, adjEntry adjSecondCrossing2, DynamicDualGraph *dualGraph) |
| | Removes the two crossings given by the adjEntries, assuming that both crossings stem from the same two edges.
|
| |
| void | removeUnnecessaryCrossing (adjEntry adj, DynamicDualGraph *dualGraph) |
| | Removes the pseudo crossing that adj belongs to.
|
| |
| void | removeUnnecessaryCrossing (adjEntry adjA1, adjEntry adjA2, adjEntry adjB1, adjEntry adjB2) |
| |
| void | setOriginalEdgeAlongCrossings (adjEntry adjCopy1, adjEntry adjCopy2, node vCopy, edge eOrig1, edge eOrig2) |
| | Sets the original edges from adjCopy1 up to vCopy to eOrig2, and the original edges from adjCopy2 up to vCopy to eOrig1.
|
| |
| void | swapOriginalEdgesAtCrossing (adjEntry adjCopy1, adjEntry adjCopy2, DynamicDualGraph *dual=nullptr) |
| | Swaps the original edges from adjCopy1 up to the common node of {adjCopy1, adjCopy2} with the original edges from adjCopy2 up to the same common node.
|
| |
| void | swapOriginalEdgesBetweenCrossings (adjEntry adjFirstCrossing1, adjEntry adjFirstCrossing2, adjEntry adjSecondCrossing1, adjEntry adjSecondCrossing2, DynamicDualGraph *dual=nullptr) |
| | Swaps the original edges from adjFirstCrossing1 up to adjSecondCrossing1->theNode() with the original edges from adjFirstCrossing2 up to adjSecondCrossing2->theNode().
|
| |
| void | nodeInserted (void *userData, node original, node copy) override |
| | Callback notifying subclasses that insert() copied a node.
|
| |
| void * | preInsert (bool copyEmbedding, bool copyIDs, bool notifyObservers, bool edgeFilter, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap, int *newNodes, int *newEdges) override |
| | Callback notifying subclasses that some graph is about to be insert() -ed.
|
| |
| virtual void | postInsert (void *userData, int newNodes, int newEdges) |
| | Callback notifying subclasses that an insert() call has finished.
|
| |
| void | clearObservers () |
| |
| const ListPure< GraphObserver * > & | getObservers () const |
| |
| ListPure< GraphObserver * >::iterator | registerObserver (GraphObserver *obs) const |
| | Registers an observer.
|
| |
| void | unregisterObserver (typename ListPure< GraphObserver * >::iterator it) const |
| | Unregisters an observer.
|
| |
| EdgeArray< List< edge > > | m_eCopy |
| | The corresponding list of edges in the graph copy.
|
| |
| EdgeArray< ListIterator< edge > > | m_eIterator |
| | The position of copy edge in the list.
|
| |
| EdgeArray< edge > | m_eOrig |
| | The corresponding edge in the original graph.
|
| |
| bool | m_linkCopiesOnInsert |
| | Whether insert(getOriginalGraph()) will set copy and original.
|
| |
| const Graph * | m_pGraph = nullptr |
| | The original graph.
|
| |
| NodeArray< node > | m_vCopy |
| | The corresponding node in the graph copy.
|
| |
| NodeArray< node > | m_vOrig |
| | The corresponding node in the original graph.
|
| |