diff options
27 files changed, 72 insertions, 87 deletions
diff --git a/Jamroot.jam b/Jamroot.jam index 6c48dae..7111626 100644 --- a/Jamroot.jam +++ b/Jamroot.jam @@ -21,6 +21,10 @@ project <toolset>tidy:<checkxx>bugprone-* <toolset>tidy:<checkxx>clang-* <toolset>tidy:<checkxx>misc-* + <toolset>tidy:<checkxx>modernize-* +#<toolset>tidy:<checkxx>cppcoreguidelines-* +#<toolset>tidy:<checkxx>hicpp-* +#<toolset>tidy:<checkxx>performance-* ; build-project libadhocutil ; diff --git a/libadhocutil/Jamfile.jam b/libadhocutil/Jamfile.jam index 3bbd3df..a8898c0 100644 --- a/libadhocutil/Jamfile.jam +++ b/libadhocutil/Jamfile.jam @@ -8,8 +8,7 @@ lib curl ; lib dl ; lib adhocutil : - [ glob *.cpp *.ice : bin ] - [ obj nvpParse : nvpParse.ll : <include>. <toolset>tidy:<checker>none ] + [ glob *.cpp *.ice *.ll : bin ] : <include>. <library>Ice++11 diff --git a/libadhocutil/buffer.cpp b/libadhocutil/buffer.cpp index f0deedc..2741c4a 100644 --- a/libadhocutil/buffer.cpp +++ b/libadhocutil/buffer.cpp @@ -1,6 +1,6 @@ #include "buffer.h" -#include <string.h> -#include <stdio.h> +#include <cstring> +#include <cstdio> namespace AdHoc { @@ -73,8 +73,8 @@ Buffer::CStringFragment::str() const // Std::String Fragment // -Buffer::StringFragment::StringFragment(const std::string & str) : - buf(str) +Buffer::StringFragment::StringFragment(const std::string str) : + buf(std::move(str)) { } @@ -106,9 +106,7 @@ Buffer::StringFragment::operator[](size_t x) const // Buffer :) // -Buffer::Buffer() -{ -} +Buffer::Buffer() = default; Buffer::Buffer(const char * src, CStringHandling h) { @@ -125,9 +123,7 @@ Buffer::Buffer(const std::string & str) append(str); } -Buffer::~Buffer() -{ -} +Buffer::~Buffer() = default; Buffer & Buffer::append(const char * str, CStringHandling h) @@ -213,7 +209,7 @@ Buffer::getFormat(const std::string & msgfmt) void Buffer::writeto(char * buf, size_t bufSize, size_t off) const { - Content::const_iterator f = content.begin(); + auto f = content.begin(); while (f != content.end() && (*f)->length() < off) { off -= (*f)->length(); ++f; @@ -291,11 +287,7 @@ Buffer::operator=(const std::string & str) } Buffer & -Buffer::operator=(const Buffer & buf) -{ - content = buf.content; - return *this; -} +Buffer::operator=(const Buffer & buf) = default; Buffer::operator bool() const { diff --git a/libadhocutil/buffer.h b/libadhocutil/buffer.h index d553c57..afbb100 100644 --- a/libadhocutil/buffer.h +++ b/libadhocutil/buffer.h @@ -145,7 +145,7 @@ class DLL_PUBLIC Buffer { class DLL_PRIVATE StringFragment : public FragmentBase { public: - StringFragment(const std::string &); + StringFragment(const std::string); size_t length() const; char operator[](size_t) const; diff --git a/libadhocutil/compileTimeFormatter.h b/libadhocutil/compileTimeFormatter.h index 9dae0ef..785f255 100644 --- a/libadhocutil/compileTimeFormatter.h +++ b/libadhocutil/compileTimeFormatter.h @@ -2,7 +2,7 @@ #define ADHOCUTIL_COMPILE_TIME_FORMATTER_H #include <sstream> -#include <string.h> +#include <cstring> #include <boost/preprocessor/variadic/size.hpp> #include "unique.h" @@ -120,12 +120,12 @@ namespace AdHoc { template <const auto & S, decltype(strlen<S>()) L = strlen<S>()> class Formatter { private: - typedef decltype(strlen<S>()) strlen_t; + using strlen_t = decltype(strlen<S>()); template<const auto &, auto, auto, typename> friend struct StreamWriterBase; public: /// The derived charater type of the format string. - typedef typename std::decay<decltype(*S)>::type char_type; + using char_type = typename std::decay<decltype(*S)>::type; /** * Get a string containing the result of formatting. * @param pn the format arguments. diff --git a/libadhocutil/curlHandle.cpp b/libadhocutil/curlHandle.cpp index 3f0263b..5be0d38 100644 --- a/libadhocutil/curlHandle.cpp +++ b/libadhocutil/curlHandle.cpp @@ -15,7 +15,7 @@ static void cleanup() CurlHandle::CurlHandle(const std::string & url) : curl_handle(curl_easy_init()), curl_headers(nullptr), - postS(NULL), postE(NULL) + postS(nullptr), postE(nullptr) { curl_easy_setopt(curl_handle, CURLOPT_URL, url.c_str()); curl_easy_setopt(curl_handle, CURLOPT_FAILONERROR, 1); diff --git a/libadhocutil/curlMultiHandle.cpp b/libadhocutil/curlMultiHandle.cpp index cf75032..381979f 100644 --- a/libadhocutil/curlMultiHandle.cpp +++ b/libadhocutil/curlMultiHandle.cpp @@ -9,15 +9,15 @@ namespace Net { class RunningCurl : public CurlStreamSource { public: - RunningCurl(const std::string & url, const std::function<void(std::istream &)> & c) : + RunningCurl(const std::string & url, const std::function<void(std::istream &)> c) : CurlStreamSource(url), - consumer(c) + consumer(std::move(c)) { } void callback() override { - typedef boost::reference_wrapper<RunningCurl> rc_ref; + using rc_ref = boost::reference_wrapper<RunningCurl>; boost::iostreams::stream<rc_ref> curlstrm(std::ref(*this)); consumer(curlstrm); } @@ -26,13 +26,9 @@ class RunningCurl : public CurlStreamSource { const std::function<void(std::istream &)> consumer; }; -CurlMultiHandle::CurlMultiHandle() -{ -} +CurlMultiHandle::CurlMultiHandle() = default; -CurlMultiHandle::~CurlMultiHandle() -{ -} +CurlMultiHandle::~CurlMultiHandle() = default; CurlHandlePtr CurlMultiHandle::addCurl(const std::string & url, const std::function<void(std::istream &)> & c) diff --git a/libadhocutil/curlStream.cpp b/libadhocutil/curlStream.cpp index d16ff00..69f04f0 100644 --- a/libadhocutil/curlStream.cpp +++ b/libadhocutil/curlStream.cpp @@ -13,9 +13,7 @@ CurlStreamSource::CurlStreamSource(const std::string & url) : curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, this); } -AdHoc::Net::CurlStreamSource::~CurlStreamSource() -{ -} +AdHoc::Net::CurlStreamSource::~CurlStreamSource() = default; std::streamsize CurlStreamSource::read(char * target, std::streamsize targetSize) diff --git a/libadhocutil/exception.h b/libadhocutil/exception.h index bad9771..92ed65f 100644 --- a/libadhocutil/exception.h +++ b/libadhocutil/exception.h @@ -16,7 +16,7 @@ namespace AdHoc { Exception(const T & ... t) : BaseException(t...) { } /// Override of std::exception::what() to create text as required. - inline const char * what() const throw() override + inline const char * what() const noexcept override { if (!msg) { msg = message(); @@ -26,10 +26,10 @@ namespace AdHoc { private: /// Message text provider. - virtual std::string message() const throw() = 0; + virtual std::string message() const noexcept = 0; mutable std::optional<std::string> msg; }; - typedef Exception<std::exception> StdException; + using StdException = Exception<std::exception>; } #endif diff --git a/libadhocutil/fileUtils.cpp b/libadhocutil/fileUtils.cpp index 76d57a8..540990a 100644 --- a/libadhocutil/fileUtils.cpp +++ b/libadhocutil/fileUtils.cpp @@ -126,7 +126,7 @@ namespace AdHoc { void * MemMap::setupMapInt(int flags) const { - return mmap(0, st.st_size, flags & (O_WRONLY | O_RDWR) ? PROT_WRITE : PROT_READ, MAP_SHARED, fh, 0); + return mmap(nullptr, st.st_size, flags & (O_WRONLY | O_RDWR) ? PROT_WRITE : PROT_READ, MAP_SHARED, fh, 0); } void * diff --git a/libadhocutil/fprintbf.cpp b/libadhocutil/fprintbf.cpp index b62ebf0..d46b211 100644 --- a/libadhocutil/fprintbf.cpp +++ b/libadhocutil/fprintbf.cpp @@ -1,5 +1,5 @@ #include "fprintbf.h" -#include <stdio.h> +#include <cstdio> #include <system_error> size_t diff --git a/libadhocutil/lexer-regex.cpp b/libadhocutil/lexer-regex.cpp index 493c823..3765285 100644 --- a/libadhocutil/lexer-regex.cpp +++ b/libadhocutil/lexer-regex.cpp @@ -16,7 +16,7 @@ namespace AdHoc { } } - ~Regex() + ~Regex() override { if (err) { g_error_free(err); diff --git a/libadhocutil/lexer.cpp b/libadhocutil/lexer.cpp index 7c25688..6c6505f 100644 --- a/libadhocutil/lexer.cpp +++ b/libadhocutil/lexer.cpp @@ -4,11 +4,9 @@ namespace AdHoc { const Lexer::State Lexer::InitialState = ""; - Lexer::Lexer() - { - } + Lexer::Lexer() = default; - Lexer::Lexer(const Rules & r) : rules(r) + Lexer::Lexer(const Rules r) : rules(std::move(r)) { } diff --git a/libadhocutil/lexer.h b/libadhocutil/lexer.h index be39525..21c8782 100644 --- a/libadhocutil/lexer.h +++ b/libadhocutil/lexer.h @@ -78,7 +78,7 @@ namespace AdHoc { /// Default constructor (empty rule set) Lexer(); /// Construct with an initial set of rules. - Lexer(const Rules &); + Lexer(const Rules); /// The lexer's current rule set. Rules rules; diff --git a/libadhocutil/plugins.cpp b/libadhocutil/plugins.cpp index 4251ba1..34ccae2 100644 --- a/libadhocutil/plugins.cpp +++ b/libadhocutil/plugins.cpp @@ -1,5 +1,5 @@ #include "plugins.h" -#include <string.h> +#include <cstring> #include <dlfcn.h> #include <boost/multi_index_container.hpp> #include <boost/multi_index/ordered_index.hpp> @@ -20,7 +20,7 @@ namespace std { std::ostream & operator<<(std::ostream & s, const std::type_info & t) { - char * buf = __cxxabiv1::__cxa_demangle(t.name(), NULL, NULL, NULL); + char * buf = __cxxabiv1::__cxa_demangle(t.name(), nullptr, nullptr, nullptr); s << buf; free(buf); return s; diff --git a/libadhocutil/processPipes.cpp b/libadhocutil/processPipes.cpp index 5e243d5..4973f9b 100644 --- a/libadhocutil/processPipes.cpp +++ b/libadhocutil/processPipes.cpp @@ -1,7 +1,7 @@ #include "processPipes.h" #include <unistd.h> #include <poll.h> -#include <string.h> +#include <cstring> #include <sys/resource.h> #include <stdexcept> #include <sys.h> @@ -17,7 +17,7 @@ pipe(int pipes[2], ScopeExit & tidyUp) if (::pipe(pipes)) { throw SystemException("pipe(2) failed", strerror(errno), errno); } - tidyUp.onFailure.push_back([pipes] { + tidyUp.onFailure.emplace_back([pipes] { close(pipes[0]); close(pipes[1]); }); @@ -78,7 +78,7 @@ ProcessPipes::ProcessPipes(const std::vector<std::string> & args, bool i, bool o for (const auto & p : args) { *w++ = strdup(p.c_str()); } - *w = NULL; + *w = nullptr; if (*buf) { execv(buf[0], buf); } diff --git a/libadhocutil/resourcePool.cpp b/libadhocutil/resourcePool.cpp index 948e419..0724a81 100644 --- a/libadhocutil/resourcePool.cpp +++ b/libadhocutil/resourcePool.cpp @@ -9,7 +9,7 @@ namespace AdHoc { AdHocFormatter(TimeOutOnResourcePoolMsg, "Timeout getting a resource from pool of %?"); std::string - TimeOutOnResourcePool::message() const throw() + TimeOutOnResourcePool::message() const noexcept { return TimeOutOnResourcePoolMsg::get(name); } @@ -22,7 +22,7 @@ namespace AdHoc { AdHocFormatter(NoCurrentResourceMsg, "Thread %? has no current resource handle of type %?"); std::string - NoCurrentResource::message() const throw() + NoCurrentResource::message() const noexcept { return NoCurrentResourceMsg::get(threadId, name); } diff --git a/libadhocutil/runtimeContext.cpp b/libadhocutil/runtimeContext.cpp index 46a67f3..7c911a5 100644 --- a/libadhocutil/runtimeContext.cpp +++ b/libadhocutil/runtimeContext.cpp @@ -1,6 +1,6 @@ #include "runtimeContext.h" -#include <errno.h> -#include <string.h> +#include <cerrno> +#include <cstring> #include <sys.h> namespace AdHoc { diff --git a/libadhocutil/scopeExit.cpp b/libadhocutil/scopeExit.cpp index a108fae..fc48219 100644 --- a/libadhocutil/scopeExit.cpp +++ b/libadhocutil/scopeExit.cpp @@ -2,9 +2,7 @@ namespace AdHoc { -ScopeExit::ScopeExit() -{ -} +ScopeExit::ScopeExit() = default; ScopeExit::ScopeExit(const Event & onexitpre, const Event & onsuccess, const Event & onfailure, const Event & onexitpost) { diff --git a/libadhocutil/unittests/testCache.cpp b/libadhocutil/unittests/testCache.cpp index 5757b71..dc7bd6b 100644 --- a/libadhocutil/unittests/testCache.cpp +++ b/libadhocutil/unittests/testCache.cpp @@ -29,7 +29,7 @@ namespace std { } namespace AdHoc { - typedef Cache<Obj, std::string> TestCache; + using TestCache = Cache<Obj, std::string>; template class Cache<Obj, std::string>; template class Cacheable<Obj, std::string>; template class ObjectCacheable<Obj, std::string>; @@ -43,7 +43,7 @@ BOOST_AUTO_TEST_CASE( miss ) { TestCache tc; BOOST_REQUIRE_EQUAL(0, tc.size()); - tc.add("key", 3, time(NULL) + 5); + tc.add("key", 3, time(nullptr) + 5); BOOST_REQUIRE_EQUAL(1, tc.size()); BOOST_REQUIRE_EQUAL(nullptr, tc.get("anything")); BOOST_REQUIRE_EQUAL(nullptr, tc.getItem("anything")); @@ -53,7 +53,7 @@ BOOST_AUTO_TEST_CASE( miss ) BOOST_AUTO_TEST_CASE( hit ) { TestCache tc; - auto vu = time(NULL) + 5; + auto vu = time(nullptr) + 5; tc.add("key", 3, vu); BOOST_REQUIRE_EQUAL(1, tc.size()); BOOST_REQUIRE_EQUAL(3, *tc.get("key")); @@ -68,7 +68,7 @@ BOOST_AUTO_TEST_CASE( hit ) BOOST_AUTO_TEST_CASE( multivalues ) { TestCache tc; - auto vu = time(NULL) + 5; + auto vu = time(nullptr) + 5; tc.add("key1", 1, vu); tc.add("key2", 2, vu); tc.add("key3", 3, vu); @@ -88,8 +88,8 @@ BOOST_AUTO_TEST_CASE( multivalues ) BOOST_AUTO_TEST_CASE( expired ) { TestCache tc; - tc.add("miss", 3, time(NULL) - 5); - tc.add("hit", 3, time(NULL) + 5); + tc.add("miss", 3, time(nullptr) - 5); + tc.add("hit", 3, time(nullptr) + 5); // We only prune once a second... so size() should stay at 1 BOOST_REQUIRE_EQUAL(2, tc.size()); BOOST_REQUIRE_EQUAL(nullptr, tc.get("miss")); @@ -110,7 +110,7 @@ BOOST_AUTO_TEST_CASE( callcache ) { TestCache tc; int callCount = 0; - auto vu = time(NULL) + 5; + auto vu = time(nullptr) + 5; BOOST_REQUIRE_EQUAL(nullptr, tc.get("key")); tc.addFactory("key", [&callCount]{ callCount++; return 3; }, vu); BOOST_REQUIRE_EQUAL(0, callCount); @@ -124,7 +124,7 @@ BOOST_AUTO_TEST_CASE( pointercallcache ) { TestCache tc; int callCount = 0; - auto vu = time(NULL) + 5; + auto vu = time(nullptr) + 5; BOOST_REQUIRE_EQUAL(nullptr, tc.get("key")); tc.addPointerFactory("key", [&callCount]{ callCount++; return TestCache::Value(new Obj(3)); }, vu); BOOST_REQUIRE_EQUAL(0, callCount); @@ -137,7 +137,7 @@ BOOST_AUTO_TEST_CASE( pointercallcache ) BOOST_AUTO_TEST_CASE( hitThenRenove ) { TestCache tc; - tc.add("key", 3, time(NULL) + 5); + tc.add("key", 3, time(nullptr) + 5); auto h = tc.get("key"); BOOST_REQUIRE(h); BOOST_REQUIRE_EQUAL(3, *h); @@ -150,7 +150,7 @@ BOOST_AUTO_TEST_CASE( addPointer ) { TestCache tc; auto v = TestCache::Value(new Obj(3)); - tc.addPointer("key", v, time(NULL) + 1); + tc.addPointer("key", v, time(nullptr) + 1); auto h = tc.get("key"); BOOST_REQUIRE(h); BOOST_REQUIRE_EQUAL(3, *h); diff --git a/libadhocutil/unittests/testCompileTimeFormatter.cpp b/libadhocutil/unittests/testCompileTimeFormatter.cpp index 001349f..12b72b8 100644 --- a/libadhocutil/unittests/testCompileTimeFormatter.cpp +++ b/libadhocutil/unittests/testCompileTimeFormatter.cpp @@ -229,7 +229,7 @@ BOOST_AUTO_TEST_CASE ( customParam2 ) BOOST_CHECK_EQUAL(this->str(), "custom ---------( some text here )---------"); } -typedef Formatter<formatStringCustom> TestFormat; +using TestFormat = Formatter<formatStringCustom>; BOOST_AUTO_TEST_CASE ( typedefFormat ) { TestFormat::write(*this, "expr"); @@ -273,7 +273,7 @@ constexpr #include <lorem-ipsum.h> BOOST_AUTO_TEST_CASE( lorem_ipsum ) { - typedef Formatter<lorem_ipsum_txt, sizeof(lorem_ipsum_txt)> LIF; + using LIF = Formatter<lorem_ipsum_txt, sizeof(lorem_ipsum_txt)>; auto s = LIF::get(); BOOST_CHECK_EQUAL(s.length(), lorem_ipsum_txt_len); AdHoc::FileUtils::MemMap li(rootDir / "lorem-ipsum.txt"); @@ -298,7 +298,7 @@ operator<<(FILE & strm, const char * const p) BOOST_AUTO_TEST_CASE( filestar ) { - char * buf = NULL; + char * buf = nullptr; size_t len = 0; FILE * strm = open_memstream(&buf, &len); BOOST_REQUIRE(strm); diff --git a/libadhocutil/unittests/testException.cpp b/libadhocutil/unittests/testException.cpp index 5794468..63fc2a3 100644 --- a/libadhocutil/unittests/testException.cpp +++ b/libadhocutil/unittests/testException.cpp @@ -11,7 +11,7 @@ class Ex1 : public AdHoc::StdException { Ex1(const char * f, int l) : file(f), line(l) { } private: - std::string message() const throw() override + std::string message() const noexcept override { return stringf("Something something at %s:%d", file, line); } @@ -27,7 +27,7 @@ class Ex2 : public AdHoc::Exception<OtherBaseException> { Ex2(const char * f, int l) : file(f), line(l) { } private: - std::string message() const throw() override + std::string message() const noexcept override { return stringf("Something other something at %s:%d", file, line); } @@ -39,7 +39,7 @@ class Ex2 : public AdHoc::Exception<OtherBaseException> { class Ex3 : public AdHoc::StdException { private: // LCOV_EXCL_START - std::string message() const throw() override + std::string message() const noexcept override { // Never called std::abort(); diff --git a/libadhocutil/unittests/testFactory.cpp b/libadhocutil/unittests/testFactory.cpp index 0eb959c..b8b910d 100644 --- a/libadhocutil/unittests/testFactory.cpp +++ b/libadhocutil/unittests/testFactory.cpp @@ -26,7 +26,7 @@ class BaseThing { class ImplOfThing : public BaseThing { public: ImplOfThing(int i, std::string * s) : BaseThing(i, s) {} - void execute() const + void execute() const override { *name = typeid(this).name(); } @@ -34,13 +34,13 @@ class ImplOfThing : public BaseThing { class OtherImplOfThing : public BaseThing { public: OtherImplOfThing(int i, std::string * s) : BaseThing(i, s) {} - void execute() const + void execute() const override { *name = typeid(this).name(); } }; -typedef AdHoc::Factory<BaseThing, int, std::string *> BaseThingFactory; +using BaseThingFactory = AdHoc::Factory<BaseThing, int, std::string *>; NAMEDFACTORY("a", ImplOfThing, BaseThingFactory); FACTORY(OtherImplOfThing, BaseThingFactory); diff --git a/libadhocutil/unittests/testLazyPointer.cpp b/libadhocutil/unittests/testLazyPointer.cpp index a747f17..a659548 100644 --- a/libadhocutil/unittests/testLazyPointer.cpp +++ b/libadhocutil/unittests/testLazyPointer.cpp @@ -14,8 +14,8 @@ class Test { const int val; }; -typedef LazyPointer<Test> TestLazyPointer; -typedef LazyPointer<int, int *> RawLazyPointer; +using TestLazyPointer = LazyPointer<Test>; +using RawLazyPointer = LazyPointer<int, int *>; static TestLazyPointer::pointer_type diff --git a/libadhocutil/unittests/testResourcePool.cpp b/libadhocutil/unittests/testResourcePool.cpp index a7837b8..e37cc85 100644 --- a/libadhocutil/unittests/testResourcePool.cpp +++ b/libadhocutil/unittests/testResourcePool.cpp @@ -295,7 +295,6 @@ BOOST_AUTO_TEST_CASE( threading2 ) class TTRP : public TRP { public: - TTRP() : n(0) { } void testResource(MockResource const *) const override { n += 1; @@ -304,7 +303,7 @@ class TTRP : public TRP { } } private: - mutable int n; + mutable int n{0}; }; BOOST_AUTO_TEST_CASE( test ) diff --git a/libadhocutil/uriParse.cpp b/libadhocutil/uriParse.cpp index 2419bb6..2d8a557 100644 --- a/libadhocutil/uriParse.cpp +++ b/libadhocutil/uriParse.cpp @@ -1,6 +1,7 @@ #include "uriParse.h" #include <boost/algorithm/string/case_conv.hpp> #include <boost/lexical_cast.hpp> +#include <utility> #include "compileTimeFormatter.h" namespace AdHoc { @@ -171,17 +172,17 @@ namespace AdHoc { } } - InvalidUri::InvalidUri(const std::string & e, const std::string & u) : + InvalidUri::InvalidUri(std::string e, std::string u) : Exception<std::invalid_argument>(std::string()), - err(e), - uri(u) + err(std::move(e)), + uri(std::move(u)) { } AdHocFormatter(InvalidUriMsg, "InvalidUri (%?) parsing [%?]"); std::string - InvalidUri::message() const throw() + InvalidUri::message() const noexcept { return InvalidUriMsg::get(err, uri); } diff --git a/libadhocutil/uriParse.h b/libadhocutil/uriParse.h index 72c1a4c..309737f 100644 --- a/libadhocutil/uriParse.h +++ b/libadhocutil/uriParse.h @@ -42,9 +42,9 @@ namespace AdHoc { class DLL_PUBLIC InvalidUri : public Exception<std::invalid_argument> { public: /// Constructor accepting what went wrong and the URI being parsed. - InvalidUri(const std::string & err, const std::string & uri); + InvalidUri(std::string err, std::string uri); - std::string message() const throw() override; + std::string message() const noexcept override; /// The parse error. const std::string err; |