ソースを参照

2010-11-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	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
Tatsuhiro Tsujikawa 15 年 前
コミット
8f46dbc0ab
3 ファイル変更49 行追加0 行削除
  1. 8 0
      ChangeLog
  2. 25 0
      src/BtLeecherStateChoke.cc
  3. 16 0
      src/BtLeecherStateChoke.h

+ 8 - 0
ChangeLog

@@ -1,3 +1,11 @@
+2010-11-20  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	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  <t-tujikawa@users.sourceforge.net>
 
 	Added CookieStorage::DomainEntry::swap(). Also added non-member

+ 25 - 0
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>
+(aria2::BtLeecherStateChoke::PeerEntry& a,
+ aria2::BtLeecherStateChoke::PeerEntry& b)
+{
+  a.swap(b);
+}
+} // namespace std;

+ 16 - 0
src/BtLeecherStateChoke.h

@@ -66,6 +66,8 @@ private:
 
     bool operator<(const PeerEntry& rhs) const;
 
+    void swap(PeerEntry& c);
+
     const SharedHandle<Peer>& getPeer() const;
 
     unsigned int getDownloadSpeed() const;
@@ -114,8 +116,22 @@ public:
   void executeChoke(const std::vector<SharedHandle<Peer> >& peerSet);
 
   const Timer& getLastRound() const;
+
+  friend void swap(PeerEntry& a, PeerEntry& b);
+  friend void std::swap<PeerEntry>(PeerEntry& a, PeerEntry& b);
 };
 
+void swap
+(BtLeecherStateChoke::PeerEntry& a,
+ BtLeecherStateChoke::PeerEntry& b);
+
 } // namespace aria2
 
+namespace std {
+template<>
+void swap<aria2::BtLeecherStateChoke::PeerEntry>
+(aria2::BtLeecherStateChoke::PeerEntry& a,
+ aria2::BtLeecherStateChoke::PeerEntry& b);
+} // namespace std
+
 #endif // D_BT_LEECHER_STATE_CHOKE_H