CMiniLexicon::FindMajorSignatures(): use log file routines
[linguistica.git] / StringEditGrid.h
blobe00dab26a984f88246164a4ddbf17b872ae8a1e4
1 // Intermediate state for string alignment algorithm
2 // Copyright © 2009 The University of Chicago
3 #ifndef STRINGEDITGRID_H
4 #define STRINGEDITGRID_H
6 struct StringEditGridEntry;
7 class StringEditGrid;
9 #include "generaldefinitions.h"
11 // basically, just the entry in the grid: an arrow
12 // with a direction, and
13 struct StringEditGridEntry {
14 enum eAlignmentOperation m_Movement;
15 int m_Slips;
18 class CStringEditGrid {
19 // horizontal string
20 int m_Length1;
21 class QChar* m_String1;
23 // vertical string
24 int m_Length2;
25 class QChar* m_String2;
27 // parameters
28 float m_DeletionCost;
29 float m_SubstitutionCost;
31 // per-entry data
32 // XXX. valarray would make layout more obvious
33 // XXX. consider moving scores to grid entries
34 float* m_Scores;
35 StringEditGridEntry** m_GridEntries;
36 public:
37 // construction/destruction.
39 CStringEditGrid(class QString, class QString);
40 CStringEditGrid(class CAlignment*);
41 virtual ~CStringEditGrid();
42 private:
43 // copying not implemented.
44 CStringEditGrid(const CStringEditGrid& x);
45 CStringEditGrid& operator=(const CStringEditGrid& x);
46 public:
48 // Levenshtein algorithm.
50 float FindBestAlignment(class CAlignment& Output);
51 // pass in reference for answer
52 class CAlignment& GetAlignment(class CAlignment&);
54 // per-entry data.
56 float GetScore(int, int);
57 void SetScore(int, int, float);
58 StringEditGridEntry* GetStringEditGridEntry(int, int);
59 void SetStringEditGridEntry(int, int, StringEditGridEntry*);
61 /// cost of character alignment
62 float GetCost(class QChar, class QChar);
65 #endif // STRINGEDITGRID_H