diff --git a/ChangeLog b/ChangeLog index 4aa1d8c733..e5771f3579 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2010-11-20 Tatsuhiro Tsujikawa + + Added BtLeecherStateChoke::PeerEntry::swap(). Also added + non-member swap for it, which is friend function for + BtLeecherStateChoke because PeerEntry is private. + * src/BtLeecherStateChoke.cc + * src/BtLeecherStateChoke.h + 2010-11-20 Tatsuhiro Tsujikawa Added CookieStorage::DomainEntry::swap(). Also added non-member diff --git a/src/BtLeecherStateChoke.cc b/src/BtLeecherStateChoke.cc index 0088f8250a..ad9c264aeb 100644 --- a/src/BtLeecherStateChoke.cc +++ b/src/BtLeecherStateChoke.cc @@ -65,6 +65,14 @@ BtLeecherStateChoke::PeerEntry::PeerEntry(const PeerEntry& c) regularUnchoker_(c.regularUnchoker_) {} +void BtLeecherStateChoke::PeerEntry::swap(PeerEntry& c) +{ + using std::swap; + swap(peer_, c.peer_); + swap(downloadSpeed_, c.downloadSpeed_); + swap(regularUnchoker_, c.regularUnchoker_); +} + BtLeecherStateChoke::PeerEntry& BtLeecherStateChoke::PeerEntry::operator= (const PeerEntry& c) { @@ -123,6 +131,13 @@ bool BtLeecherStateChoke::PeerEntry::operator<(const PeerEntry& peerEntry) const return downloadSpeed_ > peerEntry.downloadSpeed_; } +void swap +(BtLeecherStateChoke::PeerEntry& a, + BtLeecherStateChoke::PeerEntry& b) +{ + a.swap(b); +} + bool BtLeecherStateChoke::PeerFilter::operator() (const PeerEntry& peerEntry) const { @@ -224,3 +239,13 @@ const Timer& BtLeecherStateChoke::getLastRound() const } } // namespace aria2 + +namespace std { +template<> +void swap +(aria2::BtLeecherStateChoke::PeerEntry& a, + aria2::BtLeecherStateChoke::PeerEntry& b) +{ + a.swap(b); +} +} // namespace std; diff --git a/src/BtLeecherStateChoke.h b/src/BtLeecherStateChoke.h index 80a3b9a0a2..d9e8985933 100644 --- a/src/BtLeecherStateChoke.h +++ b/src/BtLeecherStateChoke.h @@ -66,6 +66,8 @@ class BtLeecherStateChoke { bool operator<(const PeerEntry& rhs) const; + void swap(PeerEntry& c); + const SharedHandle& getPeer() const; unsigned int getDownloadSpeed() const; @@ -114,8 +116,22 @@ class BtLeecherStateChoke { void executeChoke(const std::vector >& peerSet); const Timer& getLastRound() const; + + friend void swap(PeerEntry& a, PeerEntry& b); + friend void std::swap(PeerEntry& a, PeerEntry& b); }; +void swap +(BtLeecherStateChoke::PeerEntry& a, + BtLeecherStateChoke::PeerEntry& b); + } // namespace aria2 +namespace std { +template<> +void swap +(aria2::BtLeecherStateChoke::PeerEntry& a, + aria2::BtLeecherStateChoke::PeerEntry& b); +} // namespace std + #endif // D_BT_LEECHER_STATE_CHOKE_H