Check that C++ compiler supports override keyword

If the compiler supports override, define CXX11_OVERRIDE as override,
otherwise define it as empty. Use CXX11_OVERRIDE instead of override.
pull/106/head
Tatsuhiro Tsujikawa 2013-07-06 15:54:03 +09:00
parent cce5b3206a
commit 28d5c7408f
15 changed files with 54 additions and 25 deletions

View File

@ -96,6 +96,27 @@ PKG_PROG_PKG_CONFIG([0.20])
# Check C++ compiler supports C++0x/C++11 feature # Check C++ compiler supports C++0x/C++11 feature
AX_CXX_COMPILE_STDCXX_11([noext]) 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 # Check static build is requested
if test "x$ARIA2_STATIC" = "xyes"; then if test "x$ARIA2_STATIC" = "xyes"; then
case "$host" in case "$host" in

View File

@ -75,7 +75,8 @@ public:
return bytesProcessed_; return bytesProcessed_;
} }
virtual bool installDelegate(const std::unique_ptr<StreamFilter> filter) override virtual bool installDelegate(const std::unique_ptr<StreamFilter> filter)
CXX11_OVERRIDE
{ {
return false; return false;
} }

View File

@ -75,7 +75,8 @@ public:
return bytesProcessed_; return bytesProcessed_;
} }
virtual bool installDelegate(const std::unique_ptr<StreamFilter> filter) override virtual bool installDelegate(const std::unique_ptr<StreamFilter> filter)
CXX11_OVERRIDE
{ {
return false; return false;
} }

View File

@ -41,7 +41,7 @@ public:
length(0) {} length(0) {}
virtual void doCancelSendingPieceAction 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->index = index;
this->begin = begin; this->begin = begin;
this->length = length; this->length = length;

View File

@ -48,12 +48,12 @@ public:
doChokingActionCalled{false} doChokingActionCalled{false}
{} {}
virtual void doChokedAction() override virtual void doChokedAction() CXX11_OVERRIDE
{ {
doChokedActionCalled = true; doChokedActionCalled = true;
} }
virtual void doChokingAction() override virtual void doChokingAction() CXX11_OVERRIDE
{ {
doChokingActionCalled = true; doChokingActionCalled = true;
} }
@ -65,7 +65,7 @@ public:
public: public:
MockBtRequestFactory2():doChokedActionCalled{false} {} MockBtRequestFactory2():doChokedActionCalled{false} {}
virtual void doChokedAction() override virtual void doChokedAction() CXX11_OVERRIDE
{ {
doChokedActionCalled = true; doChokedActionCalled = true;
} }

View File

@ -41,7 +41,8 @@ public:
} }
virtual const RequestSlot* getOutstandingRequest 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 && if(slot &&
slot->getIndex() == index && slot->getBegin() == begin && slot->getIndex() == index && slot->getBegin() == begin &&
slot->getLength() == length) { 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() && if(slot->getIndex() == s->getIndex() &&
slot->getBegin() == s->getBegin() && slot->getBegin() == s->getBegin() &&

View File

@ -54,7 +54,7 @@ public:
class MockPieceStorage2 : public MockPieceStorage { class MockPieceStorage2 : public MockPieceStorage {
public: public:
virtual bool hasPiece(size_t index) override virtual bool hasPiece(size_t index) CXX11_OVERRIDE
{ {
return index == 1; return index == 1;
} }
@ -63,13 +63,15 @@ public:
class MockBtMessageFactory2 : public MockBtMessageFactory { class MockBtMessageFactory2 : public MockBtMessageFactory {
public: public:
virtual std::unique_ptr<BtPieceMessage> virtual std::unique_ptr<BtPieceMessage>
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<BtPieceMessage>(index, begin, length); return make_unique<BtPieceMessage>(index, begin, length);
} }
virtual std::unique_ptr<BtRejectMessage> virtual std::unique_ptr<BtRejectMessage>
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<BtRejectMessage>(index, begin, length); return make_unique<BtRejectMessage>(index, begin, length);
} }

View File

@ -37,7 +37,8 @@ public:
class MockDHTMessageFactory2:public MockDHTMessageFactory { class MockDHTMessageFactory2:public MockDHTMessageFactory {
virtual std::unique_ptr<DHTAnnouncePeerReplyMessage> virtual std::unique_ptr<DHTAnnouncePeerReplyMessage>
createAnnouncePeerReplyMessage(const std::shared_ptr<DHTNode>& remoteNode, createAnnouncePeerReplyMessage(const std::shared_ptr<DHTNode>& remoteNode,
const std::string& transactionID) override const std::string& transactionID)
CXX11_OVERRIDE
{ {
return make_unique<DHTAnnouncePeerReplyMessage>(localNode_, remoteNode, return make_unique<DHTAnnouncePeerReplyMessage>(localNode_, remoteNode,
transactionID); transactionID);

View File

@ -40,7 +40,7 @@ public:
createFindNodeReplyMessage createFindNodeReplyMessage
(const std::shared_ptr<DHTNode>& remoteNode, (const std::shared_ptr<DHTNode>& remoteNode,
std::vector<std::shared_ptr<DHTNode>> closestKNodes, std::vector<std::shared_ptr<DHTNode>> closestKNodes,
const std::string& transactionID) override const std::string& transactionID) CXX11_OVERRIDE
{ {
auto m = make_unique<DHTFindNodeReplyMessage> auto m = make_unique<DHTFindNodeReplyMessage>
(AF_INET, localNode_, remoteNode, transactionID); (AF_INET, localNode_, remoteNode, transactionID);

View File

@ -44,7 +44,7 @@ public:
std::vector<std::shared_ptr<DHTNode>> closestKNodes, std::vector<std::shared_ptr<DHTNode>> closestKNodes,
std::vector<std::shared_ptr<Peer>> peers, std::vector<std::shared_ptr<Peer>> peers,
const std::string& token, const std::string& token,
const std::string& transactionID) override const std::string& transactionID) CXX11_OVERRIDE
{ {
auto m = make_unique<DHTGetPeersReplyMessage>(AF_INET, localNode_, auto m = make_unique<DHTGetPeersReplyMessage>(AF_INET, localNode_,
remoteNode, token, remoteNode, token,

View File

@ -38,7 +38,7 @@ public:
virtual std::unique_ptr<DHTPingReplyMessage> virtual std::unique_ptr<DHTPingReplyMessage>
createPingReplyMessage(const std::shared_ptr<DHTNode>& remoteNode, createPingReplyMessage(const std::shared_ptr<DHTNode>& remoteNode,
const unsigned char* remoteNodeID, const unsigned char* remoteNodeID,
const std::string& transactionID) override const std::string& transactionID) CXX11_OVERRIDE
{ {
unsigned char id[DHT_ID_LENGTH]; unsigned char id[DHT_ID_LENGTH];
std::fill(std::begin(id), std::end(id), '0'); std::fill(std::begin(id), std::end(id), '0');

View File

@ -83,14 +83,14 @@ public:
: evcheck{evcheck} : evcheck{evcheck}
{} {}
virtual void onQueued() override virtual void onQueued() CXX11_OVERRIDE
{ {
if(evcheck){ if(evcheck){
evcheck->onQueuedCalled = true; evcheck->onQueuedCalled = true;
} }
} }
virtual void send() override virtual void send() CXX11_OVERRIDE
{ {
if(evcheck) { if(evcheck) {
evcheck->sendCalled = true; evcheck->sendCalled = true;
@ -98,7 +98,7 @@ public:
} }
virtual void onCancelSendingPieceEvent virtual void onCancelSendingPieceEvent
(const BtCancelSendingPieceEvent& event) override (const BtCancelSendingPieceEvent& event) CXX11_OVERRIDE
{ {
if(evcheck) { if(evcheck) {
evcheck->doCancelActionCalled = true; evcheck->doCancelActionCalled = true;
@ -110,7 +110,7 @@ public:
private: private:
std::shared_ptr<Piece> piece; std::shared_ptr<Piece> piece;
public: public:
virtual std::shared_ptr<Piece> getPiece(size_t index) override virtual std::shared_ptr<Piece> getPiece(size_t index) CXX11_OVERRIDE
{ {
return piece; return piece;
} }
@ -124,7 +124,8 @@ public:
class MockBtMessageFactory2 : public MockBtMessageFactory { class MockBtMessageFactory2 : public MockBtMessageFactory {
public: public:
virtual std::unique_ptr<BtCancelMessage> virtual std::unique_ptr<BtCancelMessage>
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<BtCancelMessage>(index, begin, length); return make_unique<BtCancelMessage>(index, begin, length);
} }

View File

@ -53,7 +53,7 @@ public:
public: public:
virtual std::unique_ptr<BtRequestMessage> virtual std::unique_ptr<BtRequestMessage>
createRequestMessage(const std::shared_ptr<Piece>& piece, createRequestMessage(const std::shared_ptr<Piece>& piece,
size_t blockIndex) override size_t blockIndex) CXX11_OVERRIDE
{ {
return make_unique<BtRequestMessage>(piece->getIndex(), 0, 0, return make_unique<BtRequestMessage>(piece->getIndex(), 0, 0,
blockIndex); blockIndex);
@ -62,7 +62,8 @@ public:
class MockBtMessageDispatcher2 : public MockBtMessageDispatcher { class MockBtMessageDispatcher2 : public MockBtMessageDispatcher {
public: 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; return index == 0 && blockIndex == 0;
} }

View File

@ -30,12 +30,12 @@ class GZipDecodingStreamFilterTest:public CppUnit::TestFixture {
public: public:
MockSegment2():positionToWrite_(0) {} MockSegment2():positionToWrite_(0) {}
virtual void updateWrittenLength(int32_t bytes) override virtual void updateWrittenLength(int32_t bytes) CXX11_OVERRIDE
{ {
positionToWrite_ += bytes; positionToWrite_ += bytes;
} }
virtual int64_t getPositionToWrite() const override virtual int64_t getPositionToWrite() const CXX11_OVERRIDE
{ {
return positionToWrite_; return positionToWrite_;
} }

View File

@ -9,7 +9,7 @@ class WrapExtBtMessageFactory:public MockBtMessageFactory {
public: public:
virtual std::unique_ptr<BtExtendedMessage> virtual std::unique_ptr<BtExtendedMessage>
createBtExtendedMessage(std::unique_ptr<ExtensionMessage> extmsg) createBtExtendedMessage(std::unique_ptr<ExtensionMessage> extmsg)
override CXX11_OVERRIDE
{ {
return make_unique<BtExtendedMessage>(std::move(extmsg)); return make_unique<BtExtendedMessage>(std::move(extmsg));
} }