Change Eclipse configuration
[jabaws.git] / website / archive / binaries / mac / src / muscle / clustsetmsa.h
1 #ifndef ClustSetMSA_h\r
2 #define ClustSetMSA_h\r
3 \r
4 class MSA;\r
5 class Clust;\r
6 \r
7 #include "clustset.h"\r
8 #include "msadist.h"\r
9 \r
10 // Distance matrix based set.\r
11 // Computes distances between leaves, never between\r
12 // joined clusters (leaves this to distance matrix method).\r
13 class ClustSetMSA : public ClustSet\r
14         {\r
15 public:\r
16         ClustSetMSA(const MSA &msa, MSADist &MD) :\r
17                 m_ptrMSA(&msa),\r
18                 m_ptrMSADist(&MD)\r
19                 {\r
20                 }\r
21 \r
22 public:\r
23         virtual unsigned GetLeafCount()\r
24                 {\r
25                 return m_ptrMSA->GetSeqCount();\r
26                 }\r
27         virtual const char *GetLeafName(unsigned uNodeIndex)\r
28                 {\r
29                 return m_ptrMSA->GetSeqName(uNodeIndex);\r
30                 }\r
31         virtual unsigned GetLeafId(unsigned uNodeIndex)\r
32                 {\r
33                 return m_ptrMSA->GetSeqId(uNodeIndex);\r
34                 }\r
35         virtual void JoinNodes(const Clust &C, unsigned uLeftNodeIndex,\r
36           unsigned uRightNodeIndex, unsigned uJoinedNodeIndex,\r
37           double *ptrdLeftLength, double *ptrdRightLength)\r
38                 {\r
39                 Quit("ClustSetMSA::JoinNodes, should never be called");\r
40                 }\r
41         virtual double ComputeDist(const Clust &C, unsigned uNodeIndex1,\r
42           unsigned uNodeIndex2)\r
43                 {\r
44                 return m_ptrMSADist->ComputeDist(*m_ptrMSA, uNodeIndex1, uNodeIndex2);\r
45                 }\r
46 \r
47 public:\r
48         const MSA &GetMSA();\r
49 \r
50 private:\r
51         const MSA *m_ptrMSA;\r
52         MSADist *m_ptrMSADist;\r
53         };\r
54 \r
55 #endif  // ClustSetMSA_h\r