void ReadsLayout::save(ostream& out_bin) { unsigned int crcCheck; Crc32 CRC; tabSize = R->getEffectiveNReads() + 1; CRC.AddData((uint8_t*) & tabSize, sizeof (unsigned int)); CRC.AddData((uint8_t*) lastIdentical, sizeof (unsigned int) *tabSize); CRC.AddData((uint8_t*) next, sizeof (unsigned int) *tabSize); CRC.AddData((uint8_t*) previous, sizeof (unsigned int) *tabSize); CRC.AddData((uint8_t*) nodeId, sizeof (unsigned int) *tabSize); CRC.AddData((uint8_t*) position, sizeof (int) *tabSize); CRC.AddData((uint8_t*) flags, sizeof (unsigned char) *tabSize); crcCheck=CRC.GetCrc32(); out_bin.write((char*) &crcCheck, sizeof (unsigned int)); out_bin.write((char*) &tabSize, sizeof (unsigned int)); out_bin.write((char*) lastIdentical, sizeof (unsigned int) *tabSize); out_bin.write((char*) next, sizeof (unsigned int) *tabSize); out_bin.write((char*) previous, sizeof (unsigned int) *tabSize); out_bin.write((char*) nodeId, sizeof (unsigned int) *tabSize); out_bin.write((char*) position, sizeof (int) *tabSize); out_bin.write((char*) flags, sizeof (unsigned char) *tabSize); }
bool ReadsLayout::load(istream& in_bin, ReadsStorage*r) { unsigned int crcCheck; Crc32 CRC; cleanMemory(); unsigned int tabsize; in_bin.read((char*) &crcCheck, sizeof (unsigned int)); in_bin.read((char*) &tabsize, sizeof (unsigned int)); init(r, tabsize); in_bin.read((char*) lastIdentical, sizeof (unsigned int) *tabSize); in_bin.read((char*) next, sizeof (unsigned int) *tabSize); in_bin.read((char*) previous, sizeof (unsigned int) *tabSize); in_bin.read((char*) nodeId, sizeof (unsigned int) *tabSize); in_bin.read((char*) position, sizeof (int) *tabSize); in_bin.read((char*) flags, sizeof (unsigned char) *tabSize); CRC.AddData((uint8_t*) & tabSize, sizeof (unsigned int)); CRC.AddData((uint8_t*) lastIdentical, sizeof (unsigned int) *tabSize); CRC.AddData((uint8_t*) next, sizeof (unsigned int) *tabSize); CRC.AddData((uint8_t*) previous, sizeof (unsigned int) *tabSize); CRC.AddData((uint8_t*) nodeId, sizeof (unsigned int) *tabSize); CRC.AddData((uint8_t*) position, sizeof (int) *tabSize); CRC.AddData((uint8_t*) flags, sizeof (unsigned char) *tabSize); unsigned int crc2=CRC.GetCrc32(); if (crc2 != crcCheck) return false; return true; }