| 92 | } |
| 93 | |
| 94 | void Archive::freeArchive(Archive* archive) |
| 95 | { |
| 96 | if (!archive) { return; } |
| 97 | |
| 98 | const ArchiveType type = archive->m_type; |
| 99 | ArchiveMap::iterator iArchive = s_archives[type].find(archive->m_name); |
| 100 | if (iArchive != s_archives[archive->m_type].end()) |
| 101 | { |
| 102 | Archive* foundArchive = iArchive->second; |
| 103 | assert(foundArchive == archive); |
| 104 | foundArchive->close(); |
| 105 | delete foundArchive; |
| 106 | |
| 107 | s_archives[type].erase(iArchive); |
| 108 | } |
| 109 | } |
| 110 | |
| 111 | void Archive::freeAllArchives() |
| 112 | { |