00001
00035 #ifndef __SKELETON_H__
00036 #define __SKELETON_H__
00037
00038 #include <fstream.h>
00039 #include "sg.h"
00040
00041 typedef std::istream istream;
00042 typedef std::ostream ostream;
00043
00044 using namespace sg;
00045
00046 class BlumSkeleton
00047 {
00048 public:
00049 virtual void Read(istream& is) = 0;
00050 virtual void Write(ostream& os) = 0;
00051 virtual ~BlumSkeleton() {}
00052 };
00053
00054 class McGillSkeleton : public BlumSkeleton
00055 {
00056 sg::DDSkeleton* pMAT;
00057
00058 public:
00059 McGillSkeleton(sg::DDSkeleton* p = NULL) { pMAT = p; }
00060 ~McGillSkeleton() { delete pMAT; }
00061
00062 sg::DDSkeleton* GetSkeleton() { return pMAT; }
00063 void SetSkeleton(sg::DDSkeleton* p) { pMAT = p; }
00064
00065 sg::DDSkeleton* ReadDDSkeleton(istream& is);
00066 void WriteDDSkeleton(ostream& os, sg::DDSkeleton& dds);
00067
00068 void ReadNodesAndEdges(istream& is, DDSkeleton& dds);
00069 void WriteNodesAndEdges(ostream& os, DDSkeleton& dds);
00070
00071 void Read(istream& is) { pMAT = ReadDDSkeleton(is); }
00072 void Write(ostream& os) { WriteDDSkeleton(os, *pMAT); }
00073 };
00074
00075 #endif //__SKELETON_H__