From a1ca1d71d83bd460918529295fcb91235a51765b Mon Sep 17 00:00:00 2001 From: zergtmn Date: Tue, 12 Jul 2011 03:41:17 +0600 Subject: [PATCH] [11734] Use vector instead of list for sorting auction items --- src/game/AuctionHouseHandler.cpp | 11 +++++++---- src/game/AuctionHouseMgr.cpp | 4 ++-- src/game/AuctionHouseMgr.h | 3 +-- src/game/WorldSession.h | 2 +- src/shared/revision_nr.h | 2 +- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/game/AuctionHouseHandler.cpp b/src/game/AuctionHouseHandler.cpp index ad50e5d98..ae6355c56 100644 --- a/src/game/AuctionHouseHandler.cpp +++ b/src/game/AuctionHouseHandler.cpp @@ -658,12 +658,15 @@ void WorldSession::HandleAuctionListItems(WorldPacket & recv_data) AuctionHouseObject* auctionHouse = sAuctionMgr.GetAuctionsMap(auctionHouseEntry); // Sort - AuctionHouseObject::AuctionEntryMap *aucs = auctionHouse->GetAuctions(); - std::list auctions; - for (AuctionHouseObject::AuctionEntryMap::const_iterator itr = aucs->begin(); itr != aucs->end(); ++itr) + AuctionHouseObject::AuctionEntryMap const& aucs = auctionHouse->GetAuctions(); + std::vector auctions; + auctions.reserve(aucs.size()); + + for (AuctionHouseObject::AuctionEntryMap::const_iterator itr = aucs.begin(); itr != aucs.end(); ++itr) auctions.push_back(itr->second); + AuctionSorter sorter(Sort, GetPlayer()); - auctions.sort(sorter); + std::sort(auctions.begin(), auctions.end(), sorter); // remove fake death if (GetPlayer()->hasUnitState(UNIT_STAT_DIED)) diff --git a/src/game/AuctionHouseMgr.cpp b/src/game/AuctionHouseMgr.cpp index 28754ed85..c43973f0a 100644 --- a/src/game/AuctionHouseMgr.cpp +++ b/src/game/AuctionHouseMgr.cpp @@ -803,12 +803,12 @@ bool AuctionSorter::operator()(const AuctionEntry *auc1, const AuctionEntry *auc return false; // "equal" by all sorts } -void WorldSession::BuildListAuctionItems(std::list &auctions, WorldPacket& data, std::wstring const& wsearchedname, uint32 listfrom, uint32 levelmin, +void WorldSession::BuildListAuctionItems(std::vector const& auctions, WorldPacket& data, std::wstring const& wsearchedname, uint32 listfrom, uint32 levelmin, uint32 levelmax, uint32 usable, uint32 inventoryType, uint32 itemClass, uint32 itemSubClass, uint32 quality, uint32& count, uint32& totalcount, bool isFull) { int loc_idx = _player->GetSession()->GetSessionDbLocaleIndex(); - for (std::list::const_iterator itr = auctions.begin(); itr != auctions.end();++itr) + for (std::vector::const_iterator itr = auctions.begin(); itr != auctions.end(); ++itr) { AuctionEntry *Aentry = *itr; if (Aentry->moneyDeliveryTime) diff --git a/src/game/AuctionHouseMgr.h b/src/game/AuctionHouseMgr.h index 57e797d32..0801b82d5 100644 --- a/src/game/AuctionHouseMgr.h +++ b/src/game/AuctionHouseMgr.h @@ -104,8 +104,7 @@ class AuctionHouseObject uint32 GetCount() { return AuctionsMap.size(); } - AuctionEntryMap *GetAuctions() { return &AuctionsMap; } - + AuctionEntryMap const& GetAuctions() const { return AuctionsMap; } AuctionEntryMapBounds GetAuctionsBounds() const {return AuctionEntryMapBounds(AuctionsMap.begin(), AuctionsMap.end()); } void AddAuction(AuctionEntry *ah) diff --git a/src/game/WorldSession.h b/src/game/WorldSession.h index b3cbad76a..7bfa7d527 100644 --- a/src/game/WorldSession.h +++ b/src/game/WorldSession.h @@ -358,7 +358,7 @@ class MANGOS_DLL_SPEC WorldSession void SendAuctionRemovedNotification(AuctionEntry* auction); static void SendAuctionOutbiddedMail(AuctionEntry *auction); void SendAuctionCancelledToBidderMail(AuctionEntry *auction); - void BuildListAuctionItems(std::list &auctions, WorldPacket& data, std::wstring const& searchedname, uint32 listfrom, uint32 levelmin, + void BuildListAuctionItems(std::vector const& auctions, WorldPacket& data, std::wstring const& searchedname, uint32 listfrom, uint32 levelmin, uint32 levelmax, uint32 usable, uint32 inventoryType, uint32 itemClass, uint32 itemSubClass, uint32 quality, uint32& count, uint32& totalcount, bool isFull); AuctionHouseEntry const* GetCheckedAuctionHouseForAuctioneer(ObjectGuid guid); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 2a23ccf85..57f2644b4 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11733" + #define REVISION_NR "11734" #endif // __REVISION_NR_H__