------------------------------------------------------------ revno: 2944 committer: poy <p...@123gen.com> branch nick: trunk timestamp: Fri 2012-06-08 17:27:48 +0200 message: GCC 4.7 modified: Compile.txt SConstruct dcpp/AdcHub.cpp dcpp/ClientManager.cpp dcpp/ConnectionManager.h dcpp/FavoriteManager.cpp dcpp/HashManager.cpp dcpp/NmdcHub.cpp dcpp/QueueManager.cpp dcpp/ShareManager.cpp dcpp/atomic.h dcpp/compiler.h dcpp/noexcept.h dwt/include/dwt/aspects/Scrollable.h dwt/include/dwt/forward.h dwt/include/dwt/widgets/Table.h dwt/include/dwt/widgets/ToolBar.h dwt/src/widgets/ScrolledContainer.cpp dwt/src/widgets/Table.cpp dwt/src/widgets/Tree.cpp win32/DirectoryListingFrame.cpp win32/HubFrame.cpp win32/PrivateFrame.cpp win32/QueueFrame.cpp win32/UserInfoBase.h win32/UsersFrame.cpp win32/compiler.h
-- lp:dcplusplus https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk Your team Dcplusplus-team is subscribed to branch lp:dcplusplus. To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'Compile.txt' --- Compile.txt 2012-06-01 18:52:20 +0000 +++ Compile.txt 2012-06-08 15:27:48 +0000 @@ -54,7 +54,7 @@ 2. Compiler - a. MinGW (GCC 4.6 or later): + a. MinGW (GCC 4.7 or later): <http://sourceforge.net/projects/mingw/files/> The easiest way to install is via mingw-get. Extract it to C:\MinGW and run: === modified file 'SConstruct' --- SConstruct 2012-03-03 15:04:23 +0000 +++ SConstruct 2012-06-08 15:27:48 +0000 @@ -12,7 +12,7 @@ } gcc_xxflags = { - 'common' : ['-std=gnu++0x'], + 'common' : ['-std=gnu++11'], 'debug' : [], 'release' : [] } === modified file 'dcpp/AdcHub.cpp' --- dcpp/AdcHub.cpp 2012-05-24 17:47:25 +0000 +++ dcpp/AdcHub.cpp 2012-06-08 15:27:48 +0000 @@ -82,7 +82,7 @@ { Lock l(cs); - ou = users.insert(make_pair(aSID, new OnlineUser(p, *this, aSID))).first->second; + ou = users.emplace(aSID, new OnlineUser(p, *this, aSID)).first->second; } if(aSID != AdcCommand::HUB_SID) @@ -947,7 +947,7 @@ c.addParam(var, value); } } else if(!value.empty()) { - lastInfoMap.insert(make_pair(var, value)); + lastInfoMap.emplace(var, value); c.addParam(var, value); } } === modified file 'dcpp/ClientManager.cpp' --- dcpp/ClientManager.cpp 2012-05-15 23:26:22 +0000 +++ dcpp/ClientManager.cpp 2012-06-08 15:27:48 +0000 @@ -259,7 +259,7 @@ UserPtr p(new User(cid)); p->setFlag(User::NMDC); - users.insert(make_pair(cid, p)); + users.emplace(cid, p); return p; } @@ -272,7 +272,7 @@ } UserPtr p(new User(cid)); - users.insert(make_pair(cid, p)); + users.emplace(cid, p); return p; } @@ -306,7 +306,7 @@ void ClientManager::putOnline(OnlineUser* ou) noexcept { { Lock l(cs); - onlineUsers.insert(make_pair(ou->getUser()->getCID(), ou)); + onlineUsers.emplace(ou->getUser()->getCID(), ou); } if(!ou->getUser()->isOnline()) { @@ -554,7 +554,7 @@ Lock l(cs); if(!me) { me = new User(getMyCID()); - users.insert(make_pair(me->getCID(), me)); + users.emplace(me->getCID(), me); } } return me; === modified file 'dcpp/ConnectionManager.h' --- dcpp/ConnectionManager.h 2012-01-13 20:55:20 +0000 +++ dcpp/ConnectionManager.h 2012-06-08 15:27:48 +0000 @@ -19,6 +19,9 @@ #ifndef DCPLUSPLUS_DCPP_CONNECTION_MANAGER_H #define DCPLUSPLUS_DCPP_CONNECTION_MANAGER_H +#include <memory> +#include <unordered_map> + #include "TimerManager.h" #include "UserConnectionListener.h" #include "CriticalSection.h" @@ -30,6 +33,7 @@ namespace dcpp { using std::unique_ptr; +using std::unordered_map; class SocketException; @@ -65,7 +69,7 @@ public: void add(const string& aNick, const string& aMyNick, const string& aHubUrl) { Lock l(cs); - expectedConnections.insert(make_pair(aNick, make_pair(aMyNick, aHubUrl))); + expectedConnections.emplace(aNick, make_pair(aMyNick, aHubUrl)); } StringPair remove(const string& aNick) { @@ -83,7 +87,7 @@ private: /** Nick -> myNick, hubUrl for expected NMDC incoming connections */ - typedef map<string, StringPair> ExpectMap; + typedef unordered_map<string, StringPair> ExpectMap; ExpectMap expectedConnections; CriticalSection cs; === modified file 'dcpp/FavoriteManager.cpp' --- dcpp/FavoriteManager.cpp 2012-05-15 23:26:22 +0000 +++ dcpp/FavoriteManager.cpp 2012-06-08 15:27:48 +0000 @@ -172,7 +172,7 @@ if(nicks.empty()) nicks.push_back(Util::emptyString); - auto i = users.insert(make_pair(aUser->getCID(), FavoriteUser(aUser, nicks[0], urls[0]))).first; + auto i = users.emplace(aUser->getCID(), FavoriteUser(aUser, nicks[0], urls[0])).first; fire(FavoriteManagerListener::UserAdded(), i->second); save(); } @@ -499,7 +499,7 @@ } ClientManager::getInstance()->saveUser(u->getCID()); - auto i = users.insert(make_pair(u->getCID(), FavoriteUser(u, nick, hubUrl))).first; + auto i = users.emplace(u->getCID(), FavoriteUser(u, nick, hubUrl)).first; if(aXml.getBoolChildAttrib("GrantSlot")) i->second.setFlag(FavoriteUser::FLAG_GRANTSLOT); === modified file 'dcpp/HashManager.cpp' --- dcpp/HashManager.cpp 2012-03-03 19:33:45 +0000 +++ dcpp/HashManager.cpp 2012-06-08 15:27:48 +0000 @@ -109,7 +109,7 @@ try { File f(getDataFile(), File::READ | File::WRITE, File::OPEN); int64_t index = saveTree(f, tt); - treeIndex.insert(make_pair(tt.getRoot(), TreeInfo(tt.getFileSize(), index, tt.getBlockSize()))); + treeIndex.emplace(tt.getRoot(), TreeInfo(tt.getFileSize(), index, tt.getBlockSize())); dirty = true; } catch (const FileException& e) { LogManager::getInstance()->message(str(F_("Error saving hash data: %1%") % e.getError())); @@ -251,12 +251,7 @@ } for (auto& i: fileIndex) { -#ifndef __GNUC__ auto fi = newFileIndex.emplace(i.first, FileInfoList()).first; -#else - /// @todo retry with emplace on GCC 4.7 (see comment in compiler.h) - auto fi = newFileIndex.insert(make_pair(i.first, FileInfoList())).first; -#endif for (auto& j: i.second) { if (newTreeIndex.find(j.getRoot()) != newTreeIndex.end()) { @@ -469,7 +464,7 @@ void HashManager::Hasher::hashFile(const string& fileName, int64_t size) { Lock l(cs); - if (w.insert(make_pair(fileName, size)).second) { + if(w.insert(make_pair(fileName, size)).second) { if(paused > 0) paused++; else === modified file 'dcpp/NmdcHub.cpp' --- dcpp/NmdcHub.cpp 2012-05-24 17:47:25 +0000 +++ dcpp/NmdcHub.cpp 2012-06-08 15:27:48 +0000 @@ -88,7 +88,7 @@ { Lock l(cs); - u = users.insert(make_pair(aNick, new OnlineUser(p, *this, 0))).first->second; + u = users.emplace(aNick, new OnlineUser(p, *this, 0)).first->second; u->getIdentity().setNick(aNick); if(u->getUser() == getMyIdentity().getUser()) { setMyIdentity(u->getIdentity()); === modified file 'dcpp/QueueManager.cpp' --- dcpp/QueueManager.cpp 2012-06-08 14:15:53 +0000 +++ dcpp/QueueManager.cpp 2012-06-08 15:27:48 +0000 @@ -90,7 +90,7 @@ void QueueManager::FileQueue::add(QueueItem* qi) { if(lastInsert == queue.end()) - lastInsert = queue.insert(make_pair(const_cast<string*>(&qi->getTarget()), qi)).first; + lastInsert = queue.emplace(const_cast<string*>(&qi->getTarget()), qi).first; else lastInsert = queue.insert(lastInsert, make_pair(const_cast<string*>(&qi->getTarget()), qi)); } @@ -712,7 +712,7 @@ } // Unique directory, fine... - directories.insert(make_pair(aUser, new DirectoryItem(aUser, aDir, aTarget, p))); + directories.emplace(aUser, new DirectoryItem(aUser, aDir, aTarget, p)); needList = (dp.first == dp.second); setDirty(); } @@ -745,7 +745,7 @@ }); std::for_each(dir->files.cbegin(), dir->files.cend(), [&](DirectoryListing::File* f) { - tthMap.insert(make_pair(f->getTTH(), f)); + tthMap.emplace(f->getTTH(), f); }); } } === modified file 'dcpp/ShareManager.cpp' --- dcpp/ShareManager.cpp 2012-05-27 14:02:55 +0000 +++ dcpp/ShareManager.cpp 2012-06-08 15:27:48 +0000 @@ -347,7 +347,7 @@ const string& virtualName = aXml.getChildAttrib("Virtual"); string vName = validateVirtual(virtualName.empty() ? Util::getLastDir(realPath) : virtualName); - shares.insert(make_pair(realPath, vName)); + shares.emplace(realPath, vName); if(getByVirtual(vName) == directories.end()) { directories.push_back(Directory::create(vName)); } @@ -485,7 +485,7 @@ { Lock l(cs); - shares.insert(make_pair(realPath, vName)); + shares.emplace(realPath, vName); updateIndices(*merge(dp)); setDirty(); @@ -516,7 +516,7 @@ if(findFile(subSource->getName()) != files.end()) { dcdebug("File named the same as directory"); } else { - directories.insert(make_pair(subSource->getName(), subSource)); + directories.emplace(subSource->getName(), subSource); subSource->parent = this; } } else { === modified file 'dcpp/atomic.h' --- dcpp/atomic.h 2012-03-03 15:04:23 +0000 +++ dcpp/atomic.h 2012-06-08 15:27:48 +0000 @@ -19,8 +19,9 @@ #ifndef DCPLUSPLUS_DCPP_ATOMIC_HPP_ #define DCPLUSPLUS_DCPP_ATOMIC_HPP_ -// GCC 4.6 and below has issues with atomic - see https://bugs.launchpad.net/dcplusplus/+bug/735512 -#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7)) +// GCC has issues with atomic - see https://bugs.launchpad.net/dcplusplus/+bug/735512 +/// @todo check this again when GCC improves their threading support +#if defined(__GNUC__) #include <boost/atomic.hpp> === modified file 'dcpp/compiler.h' --- dcpp/compiler.h 2012-03-03 15:04:23 +0000 +++ dcpp/compiler.h 2012-06-08 15:27:48 +0000 @@ -20,11 +20,8 @@ #define DCPLUSPLUS_DCPP_COMPILER_H #if defined(__GNUC__) -#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) -#error GCC 4.6 is required - -/** @todo when switching to GCC 4.7, see if unordered_map's insert/make_pair combo can be changed -to emplace. <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44436> */ +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) +#error GCC 4.7 is required #endif === modified file 'dcpp/noexcept.h' --- dcpp/noexcept.h 2012-01-13 20:55:20 +0000 +++ dcpp/noexcept.h 2012-06-08 15:27:48 +0000 @@ -21,15 +21,7 @@ // for compilers that don't support noexcept, use an exception specifier -#ifdef __GNUC__ -#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) // GCC 4.6 is the first GCC to implement noexcept. - -#ifndef noexcept -#define noexcept throw() -#endif - -#endif -#elif defined(_MSC_VER) +#ifdef _MSC_VER #ifndef noexcept #define noexcept throw() === modified file 'dwt/include/dwt/aspects/Scrollable.h' --- dwt/include/dwt/aspects/Scrollable.h 2012-04-17 17:32:56 +0000 +++ dwt/include/dwt/aspects/Scrollable.h 2012-06-08 15:27:48 +0000 @@ -54,7 +54,7 @@ public: /// @ refer to the ::GetScrollInfo doc for information on the params. - SCROLLINFO getScrollInfo(int fnBar, int mask = SIF_ALL) const; + SCROLLINFO getScrollInfo(int fnBar, unsigned mask = SIF_ALL) const; bool scrollIsAtEnd() const; /** catch horizontal scrolling events. @@ -86,7 +86,7 @@ }; template<typename WidgetType> -SCROLLINFO Scrollable<WidgetType>::getScrollInfo(int fnBar, int mask) const { +SCROLLINFO Scrollable<WidgetType>::getScrollInfo(int fnBar, unsigned mask) const { SCROLLINFO info = { sizeof(SCROLLINFO), mask }; if(!::GetScrollInfo(H(), fnBar, &info)) { throw Win32Exception("aspects::Scrollable: Can't get scroll info"); === modified file 'dwt/include/dwt/forward.h' --- dwt/include/dwt/forward.h 2012-01-22 20:39:56 +0000 +++ dwt/include/dwt/forward.h 2012-06-08 15:27:48 +0000 @@ -117,7 +117,7 @@ typedef MDIParent* MDIParentPtr; // Not a Color - corresponds to 1 + 0xFFFFFF (the max value of a COLORREF) -enum { NaC = 0x1000000 }; +static const COLORREF NaC = 0x1000000; class Notification; typedef std::unique_ptr<Notification> NotificationPtr; === modified file 'dwt/include/dwt/widgets/Table.h' --- dwt/include/dwt/widgets/Table.h 2012-01-13 20:55:20 +0000 +++ dwt/include/dwt/widgets/Table.h 2012-06-08 15:27:48 +0000 @@ -364,7 +364,7 @@ void setTableStyle(int style); - int insert(int mask, int i, LPCTSTR text, UINT state, UINT stateMask, int image, LPARAM lparam); + int insert(unsigned mask, int i, LPCTSTR text, unsigned state, unsigned stateMask, int image, LPARAM lparam); int getNext(int i, int type) const; @@ -630,7 +630,7 @@ } inline int Table::find(const tstring& b, int start, bool aPartial) { - LVFINDINFO fi = { aPartial ? LVFI_PARTIAL : LVFI_STRING, b.c_str() }; + LVFINDINFO fi = { static_cast<UINT>(aPartial ? LVFI_PARTIAL : LVFI_STRING), b.c_str() }; return ListView_FindItem(handle(), start, &fi); } === modified file 'dwt/include/dwt/widgets/ToolBar.h' --- dwt/include/dwt/widgets/ToolBar.h 2012-06-01 17:26:20 +0000 +++ dwt/include/dwt/widgets/ToolBar.h 2012-06-08 15:27:48 +0000 @@ -315,7 +315,7 @@ inline bool ToolBar::getButtonVisible( unsigned int id ) { - TBBUTTONINFO tb = { sizeof(TBBUTTONINFO), TBIF_STATE, id }; + TBBUTTONINFO tb = { sizeof(TBBUTTONINFO), TBIF_STATE, static_cast<int>(id) }; sendMessage(TB_GETBUTTONINFO, id, reinterpret_cast< LPARAM >( & tb ) ); return ( tb.fsState & TBSTATE_HIDDEN ) == 0; } @@ -327,14 +327,14 @@ inline bool ToolBar::getButtonEnabled( unsigned int id ) { - TBBUTTONINFO tb = { sizeof(TBBUTTONINFO), TBIF_STATE, id }; + TBBUTTONINFO tb = { sizeof(TBBUTTONINFO), TBIF_STATE, static_cast<int>(id) }; sendMessage(TB_GETBUTTONINFO, id, reinterpret_cast< LPARAM >( & tb ) ); return ( tb.fsState & TBSTATE_ENABLED ) == TBSTATE_ENABLED; } inline bool ToolBar::getButtonChecked( unsigned int id ) { - TBBUTTONINFO tb = { sizeof(TBBUTTONINFO), TBIF_STATE, id }; + TBBUTTONINFO tb = { sizeof(TBBUTTONINFO), TBIF_STATE, static_cast<int>(id) }; sendMessage(TB_GETBUTTONINFO, id, reinterpret_cast< LPARAM >( & tb ) ); return ( tb.fsState & TBSTATE_CHECKED ) == TBSTATE_CHECKED; } === modified file 'dwt/src/widgets/ScrolledContainer.cpp' --- dwt/src/widgets/ScrolledContainer.cpp 2012-01-13 20:55:20 +0000 +++ dwt/src/widgets/ScrolledContainer.cpp 2012-06-08 15:27:48 +0000 @@ -65,7 +65,7 @@ } void ScrolledContainer::setScrollInfo(int type, int page, int max, int pos) { - SCROLLINFO si = { sizeof(SCROLLINFO), SIF_ALL, 0, max - 1, page, pos }; + SCROLLINFO si = { sizeof(SCROLLINFO), SIF_ALL, 0, max - 1, static_cast<UINT>(page), pos }; ::SetScrollInfo(handle(), type, &si, TRUE); } === modified file 'dwt/src/widgets/Table.cpp' --- dwt/src/widgets/Table.cpp 2012-03-03 19:33:45 +0000 +++ dwt/src/widgets/Table.cpp 2012-06-08 15:27:48 +0000 @@ -220,7 +220,7 @@ return ret; } -int Table::insert(int mask, int i, LPCTSTR text, UINT state, UINT stateMask, int image, LPARAM lparam) { +int Table::insert(unsigned mask, int i, LPCTSTR text, unsigned state, unsigned stateMask, int image, LPARAM lparam) { LVITEM item = { mask }; item.state = state; item.stateMask = stateMask; @@ -482,7 +482,7 @@ } void Table::setIcon(unsigned row, unsigned column, int newIconIndex) { - LVITEM item = { LVIF_IMAGE, row, column }; + LVITEM item = { LVIF_IMAGE, static_cast<int>(row), static_cast<int>(column) }; item.iImage = newIconIndex; ListView_SetItem(handle(), &item); } === modified file 'dwt/src/widgets/Tree.cpp' --- dwt/src/widgets/Tree.cpp 2012-02-04 18:51:03 +0000 +++ dwt/src/widgets/Tree.cpp 2012-06-08 15:27:48 +0000 @@ -139,7 +139,7 @@ } } else { auto i = texts.find(node); - if(i != texts.end() && i->second.size() > column) { + if(i != texts.end() && i->second.size() > static_cast<size_t>(column)) { return i->second[column]; } } @@ -152,9 +152,9 @@ TVITEMEX item = { TVIF_HANDLE | TVIF_TEXT, node }; item.pszText = const_cast<LPTSTR>(text.c_str()); TreeView_SetItem(treeHandle(), &item); - } else if(column < getColumnCount()) { + } else if(static_cast<size_t>(column) < getColumnCount()) { auto &v = texts[node]; - if(v.size() <= column) v.resize(column + 1); + if(v.size() <= static_cast<size_t>(column)) v.resize(column + 1); v[column] = text; } } === modified file 'win32/DirectoryListingFrame.cpp' --- win32/DirectoryListingFrame.cpp 2012-06-08 13:55:30 +0000 +++ win32/DirectoryListingFrame.cpp 2012-06-08 15:27:48 +0000 @@ -400,7 +400,7 @@ layout(); - lists.insert(make_pair(aUser, this)); + lists.emplace(aUser, this); } DirectoryListingFrame::~DirectoryListingFrame() { === modified file 'win32/HubFrame.cpp' --- win32/HubFrame.cpp 2012-06-03 17:49:39 +0000 +++ win32/HubFrame.cpp 2012-06-08 15:27:48 +0000 @@ -717,7 +717,7 @@ auto i = userMap.find(u.user); if(i == userMap.end()) { UserInfo* ui = new UserInfo(u); - userMap.insert(make_pair(u.user, ui)); + userMap.emplace(u.user, ui); if(!ui->isHidden() && showUsers->getChecked()) users->insert(ui); === modified file 'win32/PrivateFrame.cpp' --- win32/PrivateFrame.cpp 2012-05-28 21:43:42 +0000 +++ win32/PrivateFrame.cpp 2012-06-08 15:27:48 +0000 @@ -194,7 +194,7 @@ updateOnlineStatus(); }); - frames.insert(make_pair(replyTo.getUser(), this)); + frames.emplace(replyTo.getUser(), this); addRecent(); } === modified file 'win32/QueueFrame.cpp' --- win32/QueueFrame.cpp 2012-05-04 21:20:44 +0000 +++ win32/QueueFrame.cpp 2012-06-08 15:27:48 +0000 @@ -248,7 +248,7 @@ const string& dir = ii->getPath(); bool updateDir = (directories.find(dir) == directories.end()); - directories.insert(make_pair(dir, ii)); + directories.emplace(dir, ii); if(updateDir) { addDirectory(dir, ii->isSet(QueueItem::FLAG_USER_LIST)); === modified file 'win32/UserInfoBase.h' --- win32/UserInfoBase.h 2012-05-28 21:43:42 +0000 +++ win32/UserInfoBase.h 2012-06-08 15:27:48 +0000 @@ -36,6 +36,7 @@ class UserInfoBase { public: UserInfoBase(const HintedUser& u) : user(u) { } + virtual ~UserInfoBase() { } virtual void getList(); virtual void browseList(); === modified file 'win32/UsersFrame.cpp' --- win32/UsersFrame.cpp 2012-03-03 19:33:45 +0000 +++ win32/UsersFrame.cpp 2012-06-08 15:27:48 +0000 @@ -289,7 +289,7 @@ auto ui = userInfos.find(aUser); if(ui == userInfos.end()) { - auto x = userInfos.insert(make_pair(aUser, UserInfo(aUser, false))).first; + auto x = userInfos.emplace(aUser, UserInfo(aUser, false)).first; if(matches(x->second)) { x->second.update(aUser, true); === modified file 'win32/compiler.h' --- win32/compiler.h 2012-03-03 15:04:23 +0000 +++ win32/compiler.h 2012-06-08 15:27:48 +0000 @@ -17,8 +17,8 @@ */ #if defined(__GNUC__) -#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) -#error GCC 4.6 is required +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) +#error GCC 4.7 is required #endif #elif defined(_MSC_VER)
_______________________________________________ Mailing list: https://launchpad.net/~linuxdcpp-team Post to : linuxdcpp-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~linuxdcpp-team More help : https://help.launchpad.net/ListHelp