4 const unsigned EMPTY = (unsigned) ~0;
\r
5 const unsigned MAX_DIAGS = 1024;
\r
9 unsigned m_uStartPosA;
\r
10 unsigned m_uStartPosB;
\r
16 unsigned m_uStartPosA;
\r
17 unsigned m_uStartPosB;
\r
18 unsigned m_uLengthA;
\r
19 unsigned m_uLengthB;
\r
40 void FromPath(const PWPath &Path);
\r
41 void Add(const Diag &d);
\r
42 void Add(unsigned uStartPosA, unsigned uStartPosB, unsigned uLength);
\r
43 void DeleteIncompatible();
\r
46 unsigned GetCount() const
\r
50 const Diag &Get(unsigned uIndex) const;
\r
54 void Copy(const DiagList &DL);
\r
57 // returns true iff given diagonal is included in the list
\r
58 // in whole or in part.
\r
59 bool NonZeroIntersection(const Diag &d) const;
\r
60 bool IsSorted() const;
\r
73 Diag m_Diags[MAX_DIAGS];
\r
76 unsigned DiagOverlap(const Diag &d1, const Diag &d2);
\r
77 unsigned DiagOverlapA(const Diag &d1, const Diag &d2);
\r
78 unsigned DiagOverlapB(const Diag &d1, const Diag &d2);
\r
79 unsigned DiagBreak(const Diag &d1, const Diag &d2);
\r
80 bool DiagCompatible(const Diag &d1, const Diag &d2);
\r
81 void CheckDiags(const ProfPos *PA, unsigned uLengthA, const ProfPos *PB,
\r
82 unsigned uLengthB, const MSA &msaA, const MSA &msaB, const PWPath &Path);
\r
83 void FindDiags(const ProfPos *PX, unsigned uLengthX, const ProfPos *PY,
\r
84 unsigned uLengthY, DiagList &DL);
\r
85 void FindDiagsNuc(const ProfPos *PX, unsigned uLengthX, const ProfPos *PY,
\r
86 unsigned uLengthY, DiagList &DL);
\r
87 void MergeDiags(DiagList &DL);
\r
89 #endif // diaglist_h
\r