}
-void ParagraphMetrics::computeRowSignature(Row & row,
- BufferParams const & bparams)
+size_t ParagraphMetrics::computeRowSignature(Row const & row,
+ BufferParams const & bparams) const
{
boost::crc_32_type crc;
for (pos_type i = row.pos(); i < row.endpos(); ++i) {
char_type const b[] = { par_->getChar(i) };
- crc.process_bytes(b, 1);
+ crc.process_bytes(b, sizeof(char_type));
if (bparams.trackChanges) {
Change change = par_->lookupChange(i);
char_type const b[] = { change.type };
+ // 1 byte is enough to encode Change::Type
crc.process_bytes(b, 1);
}
}
- row.setCrc(crc.checksum());
+
+ Dimension const & d = row.dimension();
+ char_type const b[] = { row.sel_beg, row.sel_end, d.wid, d.asc, d.des};
+ // Each of the variable to process is 4 bytes: 4x5 = 20
+ crc.process_bytes(b, 20);
+
+ return crc.checksum();
}