diff --git a/src/AbstractOptionHandler.h b/src/AbstractOptionHandler.h index b13c2b2f7..c7faf4b99 100644 --- a/src/AbstractOptionHandler.h +++ b/src/AbstractOptionHandler.h @@ -44,7 +44,7 @@ namespace aria2 { class Option; -class Pref; +struct Pref; class AbstractOptionHandler : public OptionHandler { protected: diff --git a/src/BitfieldMan.cc b/src/BitfieldMan.cc index 7fde929b3..bfbc69375 100644 --- a/src/BitfieldMan.cc +++ b/src/BitfieldMan.cc @@ -871,7 +871,7 @@ off_t BitfieldMan::getOffsetCompletedLength off_t BitfieldMan::getMissingUnusedLength(size_t startingIndex) const { - if(startingIndex < 0 || blocks_ <= startingIndex) { + if(blocks_ <= startingIndex) { return 0; } off_t length = 0; diff --git a/src/DefaultBtProgressInfoFile.cc b/src/DefaultBtProgressInfoFile.cc index 0698f85a4..a3efb72e5 100644 --- a/src/DefaultBtProgressInfoFile.cc +++ b/src/DefaultBtProgressInfoFile.cc @@ -241,8 +241,7 @@ void DefaultBtProgressInfoFile::load() if(version >= 1) { infoHashLength = ntohl(infoHashLength); } - if((infoHashLength < 0) || - ((infoHashLength == 0) && infoHashCheckEnabled)) { + if(infoHashLength == 0 && infoHashCheckEnabled) { throw DL_ABORT_EX(fmt("Invalid info hash length: %d", infoHashLength)); } if(infoHashLength > 0) { diff --git a/src/DefaultPieceStorage.cc b/src/DefaultPieceStorage.cc index 867bb3365..a338b6bda 100644 --- a/src/DefaultPieceStorage.cc +++ b/src/DefaultPieceStorage.cc @@ -124,7 +124,7 @@ SharedHandle DefaultPieceStorage::checkOutPiece SharedHandle DefaultPieceStorage::getPiece(size_t index) { SharedHandle piece; - if(0 <= index && index <= bitfieldMan_->getMaxIndex()) { + if(index <= bitfieldMan_->getMaxIndex()) { piece = findUsedPiece(index); if(!piece) { piece.reset(new Piece(index, bitfieldMan_->getBlockLength(index))); diff --git a/src/DownloadContext.h b/src/DownloadContext.h index 4f05431b4..5bee68a3e 100644 --- a/src/DownloadContext.h +++ b/src/DownloadContext.h @@ -52,7 +52,7 @@ namespace aria2 { class RequestGroup; class Signature; class FileEntry; -class ContextAttribute; +struct ContextAttribute; class DownloadContext { diff --git a/src/HttpResponse.h b/src/HttpResponse.h index 7e43cb8c1..8695b6a28 100644 --- a/src/HttpResponse.h +++ b/src/HttpResponse.h @@ -49,7 +49,7 @@ namespace aria2 { class HttpRequest; class HttpHeader; class StreamFilter; -class MetalinkHttpEntry; +struct MetalinkHttpEntry; class Option; class Checksum; diff --git a/src/LpdMessageReceiver.h b/src/LpdMessageReceiver.h index 757d98000..c3061fd85 100644 --- a/src/LpdMessageReceiver.h +++ b/src/LpdMessageReceiver.h @@ -42,7 +42,7 @@ namespace aria2 { class SocketCore; -class LpdMessage; +struct LpdMessage; class LpdMessageReceiver { private: diff --git a/src/MetalinkParserState.h b/src/MetalinkParserState.h index 54fce4a07..f75c11370 100644 --- a/src/MetalinkParserState.h +++ b/src/MetalinkParserState.h @@ -43,7 +43,7 @@ namespace aria2 { class MetalinkParserStateMachine; -class XmlAttr; +struct XmlAttr; class MetalinkParserState { diff --git a/src/Option.h b/src/Option.h index 4d5de4202..a1f71e905 100644 --- a/src/Option.h +++ b/src/Option.h @@ -42,7 +42,7 @@ namespace aria2 { -class Pref; +struct Pref; class Option { private: diff --git a/src/OptionHandler.h b/src/OptionHandler.h index 7740b9ce1..3e17ada79 100644 --- a/src/OptionHandler.h +++ b/src/OptionHandler.h @@ -57,7 +57,7 @@ extern const std::string PATH_TO_DIR; extern const std::string PATH_TO_COMMAND; class Option; -class Pref; +struct Pref; class OptionHandler { public: diff --git a/src/OptionHandlerException.h b/src/OptionHandlerException.h index 946475f7c..49c456c92 100644 --- a/src/OptionHandlerException.h +++ b/src/OptionHandlerException.h @@ -38,7 +38,7 @@ namespace aria2 { -class Pref; +struct Pref; class OptionHandlerException:public RecoverableException { private: diff --git a/src/OptionHandlerImpl.h b/src/OptionHandlerImpl.h index 22e598b69..b046cd8a6 100644 --- a/src/OptionHandlerImpl.h +++ b/src/OptionHandlerImpl.h @@ -44,7 +44,7 @@ namespace aria2 { class Option; -class Pref; +struct Pref; class BooleanOptionHandler : public AbstractOptionHandler { public: diff --git a/src/OptionParser.h b/src/OptionParser.h index 0d05d5687..8d28bbeb9 100644 --- a/src/OptionParser.h +++ b/src/OptionParser.h @@ -47,7 +47,7 @@ namespace aria2 { class Option; class OptionHandler; -class Pref; +struct Pref; class OptionParser { private: diff --git a/src/ParserStateMachine.h b/src/ParserStateMachine.h index abd07b32c..5d0c08d2d 100644 --- a/src/ParserStateMachine.h +++ b/src/ParserStateMachine.h @@ -42,7 +42,7 @@ namespace aria2 { -class XmlAttr; +struct XmlAttr; class ParserStateMachine { public: diff --git a/src/XmlRpcRequestParserState.h b/src/XmlRpcRequestParserState.h index 691382340..79b421ee9 100644 --- a/src/XmlRpcRequestParserState.h +++ b/src/XmlRpcRequestParserState.h @@ -42,7 +42,7 @@ namespace aria2 { -class XmlAttr; +struct XmlAttr; namespace rpc { diff --git a/src/rpc_helper.h b/src/rpc_helper.h index a4abae5c1..f4c2ba69d 100644 --- a/src/rpc_helper.h +++ b/src/rpc_helper.h @@ -43,7 +43,7 @@ namespace aria2 { namespace rpc { -class RpcRequest; +struct RpcRequest; #ifdef ENABLE_XML_RPC RpcRequest xmlParseMemory(const char* xml, size_t size); diff --git a/src/util.h b/src/util.h index 80de4d299..243a2eebf 100644 --- a/src/util.h +++ b/src/util.h @@ -71,7 +71,7 @@ class BinaryStream; class FileEntry; class RequestGroup; class Option; -class Pref; +struct Pref; #define STRTOLL(X) strtoll(X, reinterpret_cast(0), 10) #define STRTOULL(X) strtoull(X, reinterpret_cast(0), 10) @@ -111,6 +111,52 @@ std::string nativeToUtf8(const std::string& src); namespace util { +extern const std::string DEFAULT_STRIP_CHARSET; + +template +std::pair stripIter +(InputIterator first, InputIterator last, + const std::string& chars = DEFAULT_STRIP_CHARSET) +{ + for(; first != last && + std::find(chars.begin(), chars.end(), *first) != chars.end(); ++first); + if(first == last) { + return std::make_pair(first, last); + } + InputIterator left = last-1; + for(; left != first && + std::find(chars.begin(), chars.end(), *left) != chars.end(); --left); + return std::make_pair(first, left+1); +} + +template +InputIterator lstripIter +(InputIterator first, InputIterator last, char ch) +{ + for(; first != last && *first == ch; ++first); + return first; +} + +template +InputIterator lstripIter +(InputIterator first, InputIterator last, + InputIterator2 cfirst, InputIterator2 clast) +{ + for(; first != last && std::find(cfirst, clast, *first) != clast; ++first); + return first; +} + +template +InputIterator lstripIter +(InputIterator first, InputIterator last) +{ + return lstripIter(first, last, + DEFAULT_STRIP_CHARSET.begin(), DEFAULT_STRIP_CHARSET.end()); +} + +std::string strip +(const std::string& str, const std::string& chars = DEFAULT_STRIP_CHARSET); + template void divide (std::pair, @@ -161,52 +207,6 @@ std::string itos(int64_t value, bool comma = false); int64_t difftv(struct timeval tv1, struct timeval tv2); int32_t difftvsec(struct timeval tv1, struct timeval tv2); -extern const std::string DEFAULT_STRIP_CHARSET; - -template -std::pair stripIter -(InputIterator first, InputIterator last, - const std::string& chars = DEFAULT_STRIP_CHARSET) -{ - for(; first != last && - std::find(chars.begin(), chars.end(), *first) != chars.end(); ++first); - if(first == last) { - return std::make_pair(first, last); - } - InputIterator left = last-1; - for(; left != first && - std::find(chars.begin(), chars.end(), *left) != chars.end(); --left); - return std::make_pair(first, left+1); -} - -template -InputIterator lstripIter -(InputIterator first, InputIterator last, char ch) -{ - for(; first != last && *first == ch; ++first); - return first; -} - -template -InputIterator lstripIter -(InputIterator first, InputIterator last, - InputIterator2 cfirst, InputIterator2 clast) -{ - for(; first != last && std::find(cfirst, clast, *first) != clast; ++first); - return first; -} - -template -InputIterator lstripIter -(InputIterator first, InputIterator last) -{ - return lstripIter(first, last, - DEFAULT_STRIP_CHARSET.begin(), DEFAULT_STRIP_CHARSET.end()); -} - -std::string strip -(const std::string& str, const std::string& chars = DEFAULT_STRIP_CHARSET); - std::string replace(const std::string& target, const std::string& oldstr, const std::string& newstr); std::string percentEncode(const unsigned char* target, size_t len); diff --git a/test/array_funTest.cc b/test/array_funTest.cc index c361bf29c..f922f33d8 100644 --- a/test/array_funTest.cc +++ b/test/array_funTest.cc @@ -65,11 +65,11 @@ void array_funTest::testArray_and() void array_funTest::testArrayLength() { int64_t ia[] = { 1, 2, 3, 4, 5 }; - int64_t zeroLengthArray[] = {}; - CPPUNIT_ASSERT_EQUAL((size_t)5, A2_ARRAY_LEN(ia)); - // This causes compile error under gcc v3.4.3 opensolaris 5.11 - CPPUNIT_ASSERT_EQUAL((size_t)0, A2_ARRAY_LEN(zeroLengthArray)); + // This causes compile error under clang and gcc v3.4.3 opensolaris + // 5.11 + // int64_t zeroLengthArray[] = {}; + // CPPUNIT_ASSERT_EQUAL((size_t)0, A2_ARRAY_LEN(zeroLengthArray)); } namespace {