/** * @brief Resets the chunk vector to the given position. * * This method will call reset on all chunks which are behind the * given position. * * It calls also reset on the nested chunk vector. * * @param pos The position to reset to. */ void reset(const Position& pos) { assert(pos.chunk < chunks.size()); assert(pos.data < chunkSize); for(size_t i = curChunkIndex; i > pos.chunk; --i) { chunks[i]->reset(); } curChunk = chunks[pos.chunk]; curChunk->load(); curChunk->setUsedSize(pos.data); curChunkIndex = pos.chunk; nested.reset(pos.inner); }
/** * @brief Release all the memory, that the chunk vector has acquired. * * Reverts the chunk vector into its initial state after the construction. * Only the memory of one chunk stays allocated. */ void resetHard() { for(size_t i = 1; i < chunks.size(); ++i) { delete chunks[i]; } chunks.resize(1); positions.resize(1); curChunk = chunks[0]; curChunk->load(); curChunk->setUsedSize(0); curChunkIndex = 0; nested->resetHard(); }