Open
Graph Drawing
Framework

 v.2012.05
 

BoyerMyrvoldInit.h
Go to the documentation of this file.
00001 /*
00002  * $Revision: 2299 $
00003  * 
00004  * last checkin:
00005  *   $Author: gutwenger $ 
00006  *   $Date: 2012-05-07 15:57:08 +0200 (Mon, 07 May 2012) $ 
00007  ***************************************************************/
00008  
00043 #ifdef _MSC_VER
00044 #pragma once
00045 #endif
00046 
00047 #ifndef OGDF_BOYER_MYRVOLD_INIT_H
00048 #define OGDF_BOYER_MYRVOLD_INIT_H
00049 
00050 
00051 #include <ogdf/internal/planarity/BoyerMyrvoldPlanar.h>
00052 #include <ogdf/basic/List.h>
00053 
00054 
00055 namespace ogdf {
00056 
00058 
00062 class BoyerMyrvoldInit {
00063     public:
00065         BoyerMyrvoldInit(BoyerMyrvoldPlanar* pBM);
00066         
00068         ~BoyerMyrvoldInit() { };
00069         
00071         void computeDFS();
00072         
00074         void computeLowPoints();
00075         
00077         void computeDFSChildLists();
00078         
00079         // avoid automatic creation of assignment operator
00081         BoyerMyrvoldInit &operator=(const BoyerMyrvoldInit &);
00082 
00083     private:
00085         Graph& m_g;
00086         
00088         const int& m_embeddingGrade;
00089         const bool& m_randomDFSTree;
00090         
00092 
00094         NodeArray<node>& m_realVertex;
00095         
00097         NodeArray<int>& m_dfi;
00098         
00100         Array<node>& m_nodeFromDFI;
00101         
00103 
00105         NodeArray<adjEntry> (&m_link)[2];
00106         
00108         NodeArray<adjEntry>& m_adjParent;
00109         
00111 
00113         NodeArray<int>& m_leastAncestor;
00114         
00116 
00123         EdgeArray<int>& m_edgeType;
00124         
00126         NodeArray<int>& m_lowPoint;
00127         
00129         NodeArray<int>& m_highestSubtreeDFI;
00130         
00132 
00134         NodeArray<ListPure<node> >& m_separatedDFSChildList;
00135         
00137 
00139         NodeArray<ListIterator<node> >& m_pNodeInParent;
00140         
00142         void createVirtualVertex(const adjEntry father);
00143 };
00144 
00146 
00148 class BucketLowPoint : public BucketFunc<node> {
00149     public:
00150         BucketLowPoint(const NodeArray<int>& lowPoint) :m_pLow(&lowPoint) { };
00151     
00153         int getBucket(const node& v) {
00154             return (*m_pLow)[v];
00155         }
00156     private:
00158         const NodeArray<int>* m_pLow;
00159 };
00160 
00161 }
00162 
00163 
00164 #endif