diff -r ff900a23e102 -r 68a692eacf22 src/cargopacket.cpp --- a/src/cargopacket.cpp Fri Apr 25 02:15:34 2008 +0000 +++ b/src/cargopacket.cpp Mon May 26 20:45:25 2008 +0000 @@ -273,3 +273,15 @@ days_in_transit = dit / count; source = (*packets.begin())->source; } + +/** Restore an array of cargo packets from a backup + * The end of the row should be marked by an invalid packet + */ +void CargoPacket::RestoreBackup() const +{ + for (const CargoPacket *cargo = this; cargo->IsValid(); cargo++) { + CargoPacket *dest = GetCargoPacket(cargo->index); + assert(!dest->IsValid()); + memcpy(dest, cargo, sizeof(CargoPacket)); + } +}