+++ /dev/null
-#ifndef diaglist_h\r
-#define diaglist_h\r
-\r
-const unsigned EMPTY = (unsigned) ~0;\r
-const unsigned MAX_DIAGS = 1024;\r
-\r
-struct Diag\r
- {\r
- unsigned m_uStartPosA;\r
- unsigned m_uStartPosB;\r
- unsigned m_uLength;\r
- };\r
-\r
-struct Rect\r
- {\r
- unsigned m_uStartPosA;\r
- unsigned m_uStartPosB;\r
- unsigned m_uLengthA;\r
- unsigned m_uLengthB;\r
- };\r
-\r
-class DiagList\r
- {\r
-public:\r
- DiagList()\r
- {\r
- m_uCount = 0;\r
- }\r
- ~DiagList()\r
- {\r
- Free();\r
- }\r
-\r
-public:\r
-// Creation\r
- void Clear()\r
- {\r
- Free();\r
- }\r
- void FromPath(const PWPath &Path);\r
- void Add(const Diag &d);\r
- void Add(unsigned uStartPosA, unsigned uStartPosB, unsigned uLength);\r
- void DeleteIncompatible();\r
-\r
-// Accessors\r
- unsigned GetCount() const\r
- {\r
- return m_uCount;\r
- }\r
- const Diag &Get(unsigned uIndex) const;\r
-\r
-// Operations\r
- void Sort();\r
- void Copy(const DiagList &DL);\r
-\r
-// Query\r
- // returns true iff given diagonal is included in the list\r
- // in whole or in part.\r
- bool NonZeroIntersection(const Diag &d) const;\r
- bool IsSorted() const;\r
-\r
-// Diagnostics\r
- void LogMe() const;\r
-\r
-private:\r
- void Free()\r
- {\r
- m_uCount = 0;\r
- }\r
-\r
-private:\r
- unsigned m_uCount;\r
- Diag m_Diags[MAX_DIAGS];\r
- };\r
-\r
-unsigned DiagOverlap(const Diag &d1, const Diag &d2);\r
-unsigned DiagOverlapA(const Diag &d1, const Diag &d2);\r
-unsigned DiagOverlapB(const Diag &d1, const Diag &d2);\r
-unsigned DiagBreak(const Diag &d1, const Diag &d2);\r
-bool DiagCompatible(const Diag &d1, const Diag &d2);\r
-void CheckDiags(const ProfPos *PA, unsigned uLengthA, const ProfPos *PB,\r
- unsigned uLengthB, const MSA &msaA, const MSA &msaB, const PWPath &Path);\r
-void FindDiags(const ProfPos *PX, unsigned uLengthX, const ProfPos *PY,\r
- unsigned uLengthY, DiagList &DL);\r
-void FindDiagsNuc(const ProfPos *PX, unsigned uLengthX, const ProfPos *PY,\r
- unsigned uLengthY, DiagList &DL);\r
-void MergeDiags(DiagList &DL);\r
-\r
-#endif // diaglist_h\r