* Replaced View sort code with commands.

git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@1044 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
rakshasa
2008-03-18 09:11:59 +00:00
parent d22e1ae30e
commit 7062935724
11 changed files with 117 additions and 182 deletions
+9 -13
View File
@@ -70,19 +70,9 @@ CommandMap::insert(key_type key, const command_map_data_type src) {
itr = base_type::insert(itr, value_type(key, command_map_data_type(src.m_variable, src.m_flags | flag_dont_delete, src.m_parm, src.m_doc)));
itr->second.m_target = src.m_target;
// This _should_ be optimized int just one assignment.
switch (itr->second.m_target) {
case Command::target_generic: itr->second.m_genericSlot = src.m_genericSlot; break;
case Command::target_any: itr->second.m_anySlot = src.m_anySlot; break;
case Command::target_download: itr->second.m_downloadSlot = src.m_downloadSlot; break;
case Command::target_file: itr->second.m_fileSlot = src.m_fileSlot; break;
case Command::target_file_itr: itr->second.m_fileItrSlot = src.m_fileItrSlot; break;
case Command::target_peer: itr->second.m_peerSlot = src.m_peerSlot; break;
case Command::target_tracker: itr->second.m_trackerSlot = src.m_trackerSlot; break;
default: throw torrent::internal_error("CommandMap::insert(...) Invalid target.");
}
// We can assume all the slots are the same size.
itr->second.m_target = src.m_target;
itr->second.m_genericSlot = src.m_genericSlot;
}
const CommandMap::mapped_type
@@ -119,6 +109,9 @@ CommandMap::call_command(key_type key, const mapped_type& arg, target_type targe
case Command::target_tracker: return itr->second.m_trackerSlot (itr->second.m_variable, (torrent::Tracker*)target.second, arg);
case Command::target_file: return itr->second.m_fileSlot (itr->second.m_variable, (torrent::File*)target.second, arg);
case Command::target_file_itr: return itr->second.m_fileItrSlot (itr->second.m_variable, (torrent::FileListIterator*)target.second, arg);
case Command::target_download_pair: return itr->second.m_downloadPairSlot(itr->second.m_variable, (core::Download*)target.second, (core::Download*)target.third, arg);
default: throw torrent::internal_error("CommandMap::call_command(...) Invalid target.");
}
}
@@ -146,6 +139,9 @@ CommandMap::call_command(const_iterator itr, const mapped_type& arg, target_type
case Command::target_tracker: return itr->second.m_trackerSlot (itr->second.m_variable, (torrent::Tracker*)target.second, arg);
case Command::target_file: return itr->second.m_fileSlot (itr->second.m_variable, (torrent::File*)target.second, arg);
case Command::target_file_itr: return itr->second.m_fileItrSlot (itr->second.m_variable, (torrent::FileListIterator*)target.second, arg);
case Command::target_download_pair: return itr->second.m_downloadPairSlot(itr->second.m_variable, (core::Download*)target.second, (core::Download*)target.third, arg);
default: throw torrent::internal_error("CommandMap::call_command(...) Invalid target.");
}
}