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
;
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
;
18 class CStringEditGrid
{
21 class QChar
* m_String1
;
25 class QChar
* m_String2
;
29 float m_SubstitutionCost
;
32 // XXX. valarray would make layout more obvious
33 // XXX. consider moving scores to grid entries
35 StringEditGridEntry
** m_GridEntries
;
37 // construction/destruction.
39 CStringEditGrid(class QString
, class QString
);
40 CStringEditGrid(class CAlignment
*);
41 virtual ~CStringEditGrid();
43 // copying not implemented.
44 CStringEditGrid(const CStringEditGrid
& x
);
45 CStringEditGrid
& operator=(const CStringEditGrid
& x
);
48 // Levenshtein algorithm.
50 float FindBestAlignment(class CAlignment
& Output
);
51 // pass in reference for answer
52 class CAlignment
& GetAlignment(class CAlignment
&);
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