Next version of JABA
[jabaws.git] / binaries / src / muscle / distcalc.h
1 #ifndef DistCalc_h\r
2 #define DistCalc_h\r
3 \r
4 typedef float dist_t;\r
5 const dist_t BIG_DIST = (dist_t) 1e29;\r
6 \r
7 class DistFunc;\r
8 \r
9 class DistCalc\r
10         {\r
11 public:\r
12         virtual void CalcDistRange(unsigned i, dist_t Dist[]) const = 0;\r
13         virtual unsigned GetCount() const = 0;\r
14         virtual unsigned GetId(unsigned i) const = 0;\r
15         virtual const char *GetName(unsigned i) const = 0;\r
16         };\r
17 \r
18 class DistCalcDF : public DistCalc\r
19         {\r
20 public:\r
21         void Init(const DistFunc &DF);\r
22         virtual void CalcDistRange(unsigned i, dist_t Dist[]) const;\r
23         virtual unsigned GetCount() const;\r
24         virtual unsigned GetId(unsigned i) const;\r
25         virtual const char *GetName(unsigned i) const;\r
26 \r
27 private:\r
28         const DistFunc *m_ptrDF;\r
29         };\r
30 \r
31 class DistCalcMSA : public DistCalc\r
32         {\r
33 public:\r
34         void Init(const MSA &msa, DISTANCE Distance);\r
35         virtual void CalcDistRange(unsigned i, dist_t Dist[]) const;\r
36         virtual unsigned GetCount() const;\r
37         virtual unsigned GetId(unsigned i) const;\r
38         virtual const char *GetName(unsigned i) const;\r
39 \r
40 private:\r
41         const MSA *m_ptrMSA;\r
42         DISTANCE m_Distance;\r
43         };\r
44 \r
45 #endif  // DistCalc_h\r