When the proof class finds two or more rows that are the same, it stores the details in a private variable, where. This can be retrieved by the function failed
. The variable is defined as:
typedef list<linedetail> proof::failinfo; failinfo where;
linedetail is a struct defined as:
struct linedetail { row _row; list<int> _lines; };
When a row is repeated more than once, a new linedetail item is added to where. In the linedetail data is stored a pointer, _row, to the first of the matching rows, and the row numbers are put into _lines. If the first row given to the class matches the 11th row, then 0 and 10 will be placed into _lines. If there are three or more rows that all match, then the relevant numbers will be placed into the _lines list without repeating any.