+PackSource::PackSource(const PackSource &other):
+ packs(other.packs),
+ files(other.files),
+ objects(other.objects)
+{
+ translate_maps(other);
+}
+
+PackSource &PackSource::operator=(const PackSource &other)
+{
+ packs = list<Pack>(other.packs.begin(), other.packs.end());
+ files = other.files;
+ objects = other.objects;
+ translate_maps(other);
+ return *this;
+}
+
+void PackSource::translate_maps(const PackSource &other)
+{
+ for(list<Pack>::const_iterator i=packs.begin(), j=other.packs.begin(); (i!=packs.end() && j!=other.packs.end()); ++i, ++j)
+ i->translate_files(files, *j);
+ for(FileMap::const_iterator i=files.begin(), j=other.files.begin(); (i!=files.end() && j!=other.files.end()); ++i, ++j)
+ i->second->translate_objects(objects, *j->second);
+}
+