diff --git a/configure.ac b/configure.ac index 2264a9c8..4936778f 100644 --- a/configure.ac +++ b/configure.ac @@ -96,6 +96,27 @@ PKG_PROG_PKG_CONFIG([0.20]) # Check C++ compiler supports C++0x/C++11 feature AX_CXX_COMPILE_STDCXX_11([noext]) +# i686-w64-mingw32-g++ 4.6 does not support override keyword. For +# those compilers, define CXX11_OVERRIDE to empty string. Otherwise +# define it as override. Use CXX11_OVERRIDE instead of override. +AC_MSG_CHECKING([whether the C++ compiler supports `override` keyword]) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +struct Base { +virtual void f() = 0; +}; +struct Derived : Base { +virtual void f() override {} +}; +]], +[[ +Derived x; +]])], + [cxx11_override=override + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) +AC_DEFINE_UNQUOTED([CXX11_OVERRIDE], [$cxx11_override], + [Define `override` keyword if the compiler supports it]) + # Check static build is requested if test "x$ARIA2_STATIC" = "xyes"; then case "$host" in diff --git a/src/NullSinkStreamFilter.h b/src/NullSinkStreamFilter.h index 8cbed35e..e3dc8f43 100644 --- a/src/NullSinkStreamFilter.h +++ b/src/NullSinkStreamFilter.h @@ -75,7 +75,8 @@ public: return bytesProcessed_; } - virtual bool installDelegate(const std::unique_ptr filter) override + virtual bool installDelegate(const std::unique_ptr filter) + CXX11_OVERRIDE { return false; } diff --git a/src/SinkStreamFilter.h b/src/SinkStreamFilter.h index 6fb829cf..5f428b12 100644 --- a/src/SinkStreamFilter.h +++ b/src/SinkStreamFilter.h @@ -75,7 +75,8 @@ public: return bytesProcessed_; } - virtual bool installDelegate(const std::unique_ptr filter) override + virtual bool installDelegate(const std::unique_ptr filter) + CXX11_OVERRIDE { return false; } diff --git a/test/BtCancelMessageTest.cc b/test/BtCancelMessageTest.cc index 20420f53..e382c6f0 100644 --- a/test/BtCancelMessageTest.cc +++ b/test/BtCancelMessageTest.cc @@ -41,7 +41,7 @@ public: length(0) {} virtual void doCancelSendingPieceAction - (size_t index, int32_t begin, int32_t length) override { + (size_t index, int32_t begin, int32_t length) CXX11_OVERRIDE { this->index = index; this->begin = begin; this->length = length; diff --git a/test/BtChokeMessageTest.cc b/test/BtChokeMessageTest.cc index 1fefcf35..85d2dbf6 100644 --- a/test/BtChokeMessageTest.cc +++ b/test/BtChokeMessageTest.cc @@ -48,12 +48,12 @@ public: doChokingActionCalled{false} {} - virtual void doChokedAction() override + virtual void doChokedAction() CXX11_OVERRIDE { doChokedActionCalled = true; } - virtual void doChokingAction() override + virtual void doChokingAction() CXX11_OVERRIDE { doChokingActionCalled = true; } @@ -65,7 +65,7 @@ public: public: MockBtRequestFactory2():doChokedActionCalled{false} {} - virtual void doChokedAction() override + virtual void doChokedAction() CXX11_OVERRIDE { doChokedActionCalled = true; } diff --git a/test/BtRejectMessageTest.cc b/test/BtRejectMessageTest.cc index be0fb866..ac700fdf 100644 --- a/test/BtRejectMessageTest.cc +++ b/test/BtRejectMessageTest.cc @@ -41,7 +41,8 @@ public: } virtual const RequestSlot* getOutstandingRequest - (size_t index, int32_t begin, int32_t length) override { + (size_t index, int32_t begin, int32_t length) CXX11_OVERRIDE + { if(slot && slot->getIndex() == index && slot->getBegin() == begin && slot->getLength() == length) { @@ -51,7 +52,7 @@ public: } } - virtual void removeOutstandingRequest(const RequestSlot* s) override + virtual void removeOutstandingRequest(const RequestSlot* s) CXX11_OVERRIDE { if(slot->getIndex() == s->getIndex() && slot->getBegin() == s->getBegin() && diff --git a/test/BtRequestMessageTest.cc b/test/BtRequestMessageTest.cc index 32cbe3a0..e718d2d8 100644 --- a/test/BtRequestMessageTest.cc +++ b/test/BtRequestMessageTest.cc @@ -54,7 +54,7 @@ public: class MockPieceStorage2 : public MockPieceStorage { public: - virtual bool hasPiece(size_t index) override + virtual bool hasPiece(size_t index) CXX11_OVERRIDE { return index == 1; } @@ -63,13 +63,15 @@ public: class MockBtMessageFactory2 : public MockBtMessageFactory { public: virtual std::unique_ptr - createPieceMessage(size_t index, int32_t begin, int32_t length) override + createPieceMessage(size_t index, int32_t begin, int32_t length) + CXX11_OVERRIDE { return make_unique(index, begin, length); } virtual std::unique_ptr - createRejectMessage(size_t index, int32_t begin, int32_t length) override + createRejectMessage(size_t index, int32_t begin, int32_t length) + CXX11_OVERRIDE { return make_unique(index, begin, length); } diff --git a/test/DHTAnnouncePeerMessageTest.cc b/test/DHTAnnouncePeerMessageTest.cc index 9f6da3c8..f93c7f79 100644 --- a/test/DHTAnnouncePeerMessageTest.cc +++ b/test/DHTAnnouncePeerMessageTest.cc @@ -37,7 +37,8 @@ public: class MockDHTMessageFactory2:public MockDHTMessageFactory { virtual std::unique_ptr createAnnouncePeerReplyMessage(const std::shared_ptr& remoteNode, - const std::string& transactionID) override + const std::string& transactionID) + CXX11_OVERRIDE { return make_unique(localNode_, remoteNode, transactionID); diff --git a/test/DHTFindNodeMessageTest.cc b/test/DHTFindNodeMessageTest.cc index 743cc271..0a86ef67 100644 --- a/test/DHTFindNodeMessageTest.cc +++ b/test/DHTFindNodeMessageTest.cc @@ -40,7 +40,7 @@ public: createFindNodeReplyMessage (const std::shared_ptr& remoteNode, std::vector> closestKNodes, - const std::string& transactionID) override + const std::string& transactionID) CXX11_OVERRIDE { auto m = make_unique (AF_INET, localNode_, remoteNode, transactionID); diff --git a/test/DHTGetPeersMessageTest.cc b/test/DHTGetPeersMessageTest.cc index 903c550c..e1310904 100644 --- a/test/DHTGetPeersMessageTest.cc +++ b/test/DHTGetPeersMessageTest.cc @@ -44,7 +44,7 @@ public: std::vector> closestKNodes, std::vector> peers, const std::string& token, - const std::string& transactionID) override + const std::string& transactionID) CXX11_OVERRIDE { auto m = make_unique(AF_INET, localNode_, remoteNode, token, diff --git a/test/DHTPingMessageTest.cc b/test/DHTPingMessageTest.cc index c72ad5f0..35f79211 100644 --- a/test/DHTPingMessageTest.cc +++ b/test/DHTPingMessageTest.cc @@ -38,7 +38,7 @@ public: virtual std::unique_ptr createPingReplyMessage(const std::shared_ptr& remoteNode, const unsigned char* remoteNodeID, - const std::string& transactionID) override + const std::string& transactionID) CXX11_OVERRIDE { unsigned char id[DHT_ID_LENGTH]; std::fill(std::begin(id), std::end(id), '0'); diff --git a/test/DefaultBtMessageDispatcherTest.cc b/test/DefaultBtMessageDispatcherTest.cc index 4b718685..5ce5adef 100644 --- a/test/DefaultBtMessageDispatcherTest.cc +++ b/test/DefaultBtMessageDispatcherTest.cc @@ -83,14 +83,14 @@ public: : evcheck{evcheck} {} - virtual void onQueued() override + virtual void onQueued() CXX11_OVERRIDE { if(evcheck){ evcheck->onQueuedCalled = true; } } - virtual void send() override + virtual void send() CXX11_OVERRIDE { if(evcheck) { evcheck->sendCalled = true; @@ -98,7 +98,7 @@ public: } virtual void onCancelSendingPieceEvent - (const BtCancelSendingPieceEvent& event) override + (const BtCancelSendingPieceEvent& event) CXX11_OVERRIDE { if(evcheck) { evcheck->doCancelActionCalled = true; @@ -110,7 +110,7 @@ public: private: std::shared_ptr piece; public: - virtual std::shared_ptr getPiece(size_t index) override + virtual std::shared_ptr getPiece(size_t index) CXX11_OVERRIDE { return piece; } @@ -124,7 +124,8 @@ public: class MockBtMessageFactory2 : public MockBtMessageFactory { public: virtual std::unique_ptr - createCancelMessage(size_t index, int32_t begin, int32_t length) override + createCancelMessage(size_t index, int32_t begin, int32_t length) + CXX11_OVERRIDE { return make_unique(index, begin, length); } diff --git a/test/DefaultBtRequestFactoryTest.cc b/test/DefaultBtRequestFactoryTest.cc index cc7d724d..fda9cb3a 100644 --- a/test/DefaultBtRequestFactoryTest.cc +++ b/test/DefaultBtRequestFactoryTest.cc @@ -53,7 +53,7 @@ public: public: virtual std::unique_ptr createRequestMessage(const std::shared_ptr& piece, - size_t blockIndex) override + size_t blockIndex) CXX11_OVERRIDE { return make_unique(piece->getIndex(), 0, 0, blockIndex); @@ -62,7 +62,8 @@ public: class MockBtMessageDispatcher2 : public MockBtMessageDispatcher { public: - virtual bool isOutstandingRequest(size_t index, size_t blockIndex) override + virtual bool isOutstandingRequest(size_t index, size_t blockIndex) + CXX11_OVERRIDE { return index == 0 && blockIndex == 0; } diff --git a/test/GZipDecodingStreamFilterTest.cc b/test/GZipDecodingStreamFilterTest.cc index a65f92ae..56408c44 100644 --- a/test/GZipDecodingStreamFilterTest.cc +++ b/test/GZipDecodingStreamFilterTest.cc @@ -30,12 +30,12 @@ class GZipDecodingStreamFilterTest:public CppUnit::TestFixture { public: MockSegment2():positionToWrite_(0) {} - virtual void updateWrittenLength(int32_t bytes) override + virtual void updateWrittenLength(int32_t bytes) CXX11_OVERRIDE { positionToWrite_ += bytes; } - virtual int64_t getPositionToWrite() const override + virtual int64_t getPositionToWrite() const CXX11_OVERRIDE { return positionToWrite_; } diff --git a/test/extension_message_test_helper.h b/test/extension_message_test_helper.h index 5c2480b5..c5d1094f 100644 --- a/test/extension_message_test_helper.h +++ b/test/extension_message_test_helper.h @@ -9,7 +9,7 @@ class WrapExtBtMessageFactory:public MockBtMessageFactory { public: virtual std::unique_ptr createBtExtendedMessage(std::unique_ptr extmsg) - override + CXX11_OVERRIDE { return make_unique(std::move(extmsg)); }