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_SKELETON_H 00049 #define OGDF_SKELETON_H 00050 00051 00052 #include <ogdf/basic/NodeArray.h> 00053 #include <ogdf/basic/EdgeArray.h> 00054 00055 00056 namespace ogdf { 00057 00058 class OGDF_EXPORT SPQRTree; 00059 00060 00062 00077 class OGDF_EXPORT Skeleton 00078 { 00079 public: 00080 00081 // constructor 00082 00084 00090 Skeleton(node vT) : m_treeNode(vT) { } 00091 00092 00093 // destructor 00094 virtual ~Skeleton() { } 00095 00096 00098 virtual const SPQRTree &owner() const=0; 00099 00101 node treeNode() const { 00102 return m_treeNode; 00103 } 00104 00106 00110 edge referenceEdge() const { 00111 return m_referenceEdge; 00112 } 00113 00115 const Graph &getGraph() const { 00116 return m_M; 00117 } 00118 00120 Graph &getGraph() { 00121 return m_M; 00122 } 00123 00125 00128 virtual node original (node v) const=0; 00129 00131 00134 virtual bool isVirtual (edge e) const=0; 00135 00137 00141 virtual edge realEdge (edge e) const=0; 00142 00144 00148 virtual edge twinEdge (edge e) const=0; 00149 00151 00155 virtual node twinTreeNode (edge e) const=0; 00156 00157 OGDF_NEW_DELETE 00158 00159 protected: 00160 node m_treeNode; 00161 edge m_referenceEdge; 00162 Graph m_M; 00163 }; 00164 00165 00166 } // end namespace ogdf 00167 00168 00169 #endif