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
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

View File

@ -75,7 +75,8 @@ public:
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;
}

View File

@ -75,7 +75,8 @@ public:
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;
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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() &&

View File

@ -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<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);
}
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);
}

View File

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

View File

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

View File

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

View File

@ -38,7 +38,7 @@ public:
virtual std::unique_ptr<DHTPingReplyMessage>
createPingReplyMessage(const std::shared_ptr<DHTNode>& 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');

View File

@ -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> piece;
public:
virtual std::shared_ptr<Piece> getPiece(size_t index) override
virtual std::shared_ptr<Piece> getPiece(size_t index) CXX11_OVERRIDE
{
return piece;
}
@ -124,7 +124,8 @@ public:
class MockBtMessageFactory2 : public MockBtMessageFactory {
public:
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);
}

View File

@ -53,7 +53,7 @@ public:
public:
virtual std::unique_ptr<BtRequestMessage>
createRequestMessage(const std::shared_ptr<Piece>& piece,
size_t blockIndex) override
size_t blockIndex) CXX11_OVERRIDE
{
return make_unique<BtRequestMessage>(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;
}

View File

@ -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_;
}

View File

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