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 00048 #ifndef OGDF_PERTINENT_GRAPH_H 00049 #define OGDF_PERTINENT_GRAPH_H 00050 00051 00052 namespace ogdf { 00053 00054 class OGDF_EXPORT SPQRTree; 00055 00056 00057 //--------------------------------------------------------- 00058 // PertinentGraph 00059 // pertinent graph of a node in an SPQR-tree 00060 //--------------------------------------------------------- 00062 00079 class OGDF_EXPORT PertinentGraph 00080 { 00081 friend class OGDF_EXPORT SPQRTree; 00082 00083 public: 00084 00085 // constructor 00086 // Remark: Pertinent graphs are created by the pertinentGraph() 00087 // function of SPQRTree. 00088 00090 00094 PertinentGraph() : m_vT(0) { } 00095 00097 void init(node vT) { 00098 m_P = Graph(); 00099 m_vT = vT; 00100 m_vEdge = m_skRefEdge = 0; 00101 m_origV.init(m_P,0); 00102 m_origE.init(m_P,0); 00103 } 00104 00105 00107 node treeNode() const { 00108 return m_vT; 00109 } 00110 00112 const Graph &getGraph() const { 00113 return m_P; 00114 } 00115 00117 Graph &getGraph() { 00118 return m_P; 00119 } 00120 00122 00125 edge referenceEdge() const { 00126 return m_vEdge; 00127 } 00128 00130 00134 edge skeletonReferenceEdge() const { 00135 return m_skRefEdge; 00136 } 00137 00139 00142 node original(node v) const { 00143 return m_origV[v]; 00144 } 00145 00147 00151 edge original(edge e) const { 00152 return m_origE[e]; 00153 } 00154 00155 protected: 00156 node m_vT; 00157 Graph m_P; 00158 edge m_vEdge; 00159 edge m_skRefEdge; 00160 00161 NodeArray<node> m_origV; 00162 EdgeArray<edge> m_origE; 00163 }; 00164 00165 00166 00167 } // end namespace ogdf 00168 00169 00170 #endif