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_STATIC_SKELETON_H 00049 #define OGDF_STATIC_SKELETON_H 00050 00051 00052 #include <ogdf/decomposition/Skeleton.h> 00053 00054 00055 namespace ogdf { 00056 00057 class OGDF_EXPORT StaticSPQRTree; 00058 00059 00061 00076 class OGDF_EXPORT StaticSkeleton : public Skeleton 00077 { 00078 friend class OGDF_EXPORT StaticSPQRTree; 00079 00080 public: 00081 00082 // constructor 00083 00085 00091 StaticSkeleton(const StaticSPQRTree *T, node vT); 00092 00093 00094 // destructor 00095 ~StaticSkeleton() { } 00096 00097 00099 const SPQRTree &owner() const; 00100 00102 00105 node original (node v) const { 00106 return m_orig[v]; 00107 } 00108 00110 00113 bool isVirtual (edge e) const { 00114 return (m_real[e] == 0); 00115 } 00116 00118 00122 edge realEdge (edge e) const { 00123 return m_real[e]; 00124 } 00125 00127 00131 edge twinEdge (edge e) const; 00132 00134 00138 node twinTreeNode (edge e) const; 00139 00141 00145 edge treeEdge (edge e) const { 00146 return m_treeEdge[e]; 00147 } 00148 00149 OGDF_MALLOC_NEW_DELETE 00150 00151 protected: 00152 const StaticSPQRTree *m_owner; 00153 NodeArray<node> m_orig; 00154 EdgeArray<edge> m_real; 00155 EdgeArray<edge> m_treeEdge; 00156 }; 00157 00158 00159 } // end namespace ogdf 00160 00161 00162 #endif