From f3e2dd7780bb90feff6b2f7a36797752a4933ff6 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 15 Apr 2018 13:41:38 +0100 Subject: C++17 and Ice 3.7 Updates all components to be C++17 and Ice 3.7 --- Jamroot.jam | 12 ++++++------ service/Jamfile.jam | 4 ---- service/apiImpl.cpp | 12 ++++++------ service/apiImpl.h | 6 +++--- service/main.cpp | 4 ++-- service/test.cpp | 6 +++--- site/Jamfile.jam | 6 +----- site/custom.cpp | 5 +++-- site/test.cpp | 11 ++++++----- slice.jam | 12 ++++-------- 10 files changed, 34 insertions(+), 44 deletions(-) diff --git a/Jamroot.jam b/Jamroot.jam index d389b87..de18e22 100644 --- a/Jamroot.jam +++ b/Jamroot.jam @@ -8,11 +8,12 @@ variant coverage : debug ; project : requirements - "-std=c++17 -fvisibility=hidden" + ICE_CPP11_MAPPING + "-std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden" "-Wl,-z,defs,--warn-once,--gc-sections" - release:"-fvisibility-inlines-hidden -flto=2" + release:"-flto=2" release:"-flto=2" - debug:"-W -Wall -Wextra -Werror -Wwrite-strings" + debug:"-W -Wall -Werror -Wextra" coverage:"--coverage" coverage:"--coverage" ; @@ -38,10 +39,9 @@ lib slicer : : : : /usr/include/slicer ; lib slicer-db : : : : /usr/include/slicer ; lib icetray : : : : /usr/include/icetray ; lib dbppcore : : : : /usr/include/dbpp ; -lib Ice ; -lib IceUtil ; +lib Ice : : Ice++11 ; lib pthread ; -lib IceBox ; +lib IceBox : : IceBox++11 ; lib boost_filesystem ; lib boost_system ; lib boost_thread ; diff --git a/service/Jamfile.jam b/service/Jamfile.jam index 3c2862d..315457a 100644 --- a/service/Jamfile.jam +++ b/service/Jamfile.jam @@ -11,7 +11,6 @@ lib mirrorsearch-domain : : yes ..//Ice - ..//IceUtil ..//pthread ..//slicer ..//adhocutil @@ -25,7 +24,6 @@ lib mirrorsearch-api : : yes ..//Ice - ..//IceUtil ..//pthread ..//slicer mirrorsearch-domain @@ -52,7 +50,6 @@ lib mirrorsearch-service : ..//boost_date_time ..//Ice ..//IceBox - ..//IceUtil ..//pthread ..//icetray ..//slicer @@ -86,7 +83,6 @@ run test.cpp ..//adhocutil ..//boost_system ..//boost_filesystem - ..//IceUtil ..//Ice ..//IceBox ..//pthread diff --git a/service/apiImpl.cpp b/service/apiImpl.cpp index 42a7918..5a1e7a6 100644 --- a/service/apiImpl.cpp +++ b/service/apiImpl.cpp @@ -15,7 +15,7 @@ BOOST_VERIFY_MSG(CURLE_OK == curl_easy_setopt(curl.get(), opt, expr), "Failed setting option " #opt); namespace MirrorSearch { - SearchImpl::SearchImpl(IceTray::DatabasePoolPtr db) : + SearchImpl::SearchImpl(const DB::ConnectionPoolPtr & db) : IceTray::AbstractDatabaseClient(db), log(LOGMANAGER()->getLogger()) { @@ -65,7 +65,7 @@ namespace MirrorSearch { AdHocFormatter(Read, "Failed to read in %? (%?) [%?]"); UPtr getDoc(const SearchServicePtr & ss, const std::string & fn) { auto fmt = AdHoc::Buffer::getFormat(ss->baseurl); - auto url = (*fmt % fn).str(); + auto url = (fmt % fn).str(); char errbuf[CURL_ERROR_SIZE] = ""; xmlParserCtxtSPtr ctx { nullptr, nullptr }; @@ -137,17 +137,17 @@ namespace MirrorSearch { if (!xpathObj->nodesetval) { throw XmlError("Nodeset is null"); } - log->messagebf(LOG::INFO, "%d nodes matched %s", xpathObj->nodesetval->nodeNr, s->listxpath); + log->messagebf(LOG::LogLevel::INFO, "%d nodes matched %s", xpathObj->nodesetval->nodeNr, s->listxpath); for (int row = 0; row < xpathObj->nodesetval->nodeNr; row += 1) { xpathCtx->node = xpathObj->nodesetval->nodeTab[row]; auto xpathObjI = getXPathObj(s->urlxpath, xpathCtx, xmlXPathObjectType::XPATH_STRING); if (xpathObjI->stringval && *xpathObjI->stringval) { - sh.push_back(new SearchHit(0, s->id, (const char *) xpathObjI->stringval)); + sh.push_back(std::make_shared(0, s->id, (const char *) xpathObjI->stringval)); } } } - SearchHits SearchImpl::getMatches(const ::std::string & fn, const ::Ice::Current & c) + SearchHits SearchImpl::getMatches(const ::std::string fn, const ::Ice::Current & c) { SearchHits sh; for (const auto & s : getServices(c)) { @@ -156,7 +156,7 @@ namespace MirrorSearch { return sh; } - ::IceUtil::Optional<::std::string> SearchImpl::feelingLucky(const ::std::string & fn, const ::Ice::Current & c) + ::IceUtil::Optional<::std::string> SearchImpl::feelingLucky(const ::std::string fn, const ::Ice::Current & c) { const auto ms = getMatches(fn, c); if (ms.empty()) diff --git a/service/apiImpl.h b/service/apiImpl.h index e56368c..0ee7972 100644 --- a/service/apiImpl.h +++ b/service/apiImpl.h @@ -8,11 +8,11 @@ namespace MirrorSearch { class SearchImpl : public Search, public IceTray::AbstractDatabaseClient { public: - SearchImpl(IceTray::DatabasePoolPtr); + SearchImpl(const DB::ConnectionPoolPtr &); virtual SearchServices getServices(const ::Ice::Current& = ::Ice::Current()) override; - virtual SearchHits getMatches(const ::std::string&, const ::Ice::Current& = ::Ice::Current()) override; - virtual ::IceUtil::Optional<::std::string> feelingLucky(const ::std::string&, const ::Ice::Current& = ::Ice::Current()) override; + virtual SearchHits getMatches(const ::std::string, const ::Ice::Current& = ::Ice::Current()) override; + virtual ::IceUtil::Optional<::std::string> feelingLucky(const ::std::string, const ::Ice::Current& = ::Ice::Current()) override; private: void callService(const ::std::string & fn, const SearchServicePtr & s, SearchHits & sh) const; diff --git a/service/main.cpp b/service/main.cpp index 00563f4..c84b11b 100644 --- a/service/main.cpp +++ b/service/main.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include #include "apiImpl.h" @@ -21,7 +21,7 @@ namespace MirrorSearch { void addObjects(const std::string &, const Ice::CommunicatorPtr & ic, const Ice::StringSeq &, const Ice::ObjectAdapterPtr & adp) override { auto dbpool = getConnectionPool(ic, "postgresql", "MirrorSearch"); - adp->add(new SearchImpl(dbpool), ic->stringToIdentity("Search")); + adp->add(std::make_shared(dbpool), Ice::stringToIdentity("Search")); } }; diff --git a/service/test.cpp b/service/test.cpp index 5be34e7..acc03e2 100644 --- a/service/test.cpp +++ b/service/test.cpp @@ -6,9 +6,9 @@ #include #include -class Service : PQ::Mock, public IceTray::DryIce { +class Service : DB::PluginMock, public IceTray::DryIce { public: - Service() : PQ::Mock("user=postgres", "MirrorSearch", { + Service() : DB::PluginMock("user=postgres", "MirrorSearch", { rootDir / "schema.sql", rootDir / "data.sql" }) { } @@ -22,7 +22,7 @@ class TestClient : public IceTray::DryIceClient { { } - MirrorSearch::SearchPrx s; + MirrorSearch::SearchPrxPtr s; }; BOOST_TEST_GLOBAL_FIXTURE(Service); diff --git a/site/Jamfile.jam b/site/Jamfile.jam index 7bdba93..51a2f98 100644 --- a/site/Jamfile.jam +++ b/site/Jamfile.jam @@ -6,8 +6,6 @@ lib icespider-common ; lib icespider-fcgi ; lib icespider-testing ; lib adhocutil ; -lib Ice ; -lib IceUtil ; lib pthread ; lib boost_system ; lib boost_filesystem ; @@ -24,12 +22,10 @@ lib icespider : : /usr/share/icespider/ice icespider-common adhocutil - Ice - IceUtil + ..//Ice pthread slicer boost_system - yes ; alias mirrorsearchsite : diff --git a/site/custom.cpp b/site/custom.cpp index 35d0d40..5d955a2 100644 --- a/site/custom.cpp +++ b/site/custom.cpp @@ -1,6 +1,7 @@ #include "icespider-routes-search.h" namespace MirrorSearch { + using namespace std::literals; // Implementation classes. // Route name: download @@ -19,13 +20,13 @@ namespace MirrorSearch { auto _p_filename(request->getURLParam<::std::string>(_pi_filename)); auto _responseModel = prx0->feelingLucky(_p_filename, request->getContext()); if (_responseModel) { - request->responseRedirect(*_responseModel, "Mirror found"); + request->responseRedirect(*_responseModel, "Mirror found"s); } request->response(404, "No mirror found"); } private: - const MirrorSearch::SearchPrx prx0; + const MirrorSearch::SearchPrxPtr prx0; const unsigned int _pi_filename; }; diff --git a/site/test.cpp b/site/test.cpp index ab71f83..4cd9763 100644 --- a/site/test.cpp +++ b/site/test.cpp @@ -6,6 +6,7 @@ #include #include +#include using namespace IceSpider; using namespace MirrorSearch; @@ -16,18 +17,18 @@ class TestSerice : public Search { { return {}; } - virtual SearchHits getMatches(const ::std::string & fn, const ::Ice::Current& = ::Ice::Current()) override + virtual SearchHits getMatches(const ::std::string fn, const ::Ice::Current& = ::Ice::Current()) override { BOOST_TEST_INFO(fn); if (fn == "good.txt") { return { - new SearchHit(1, 1, "file:///some/file/path"), - new SearchHit(1, 1, "file:///some/other/path") + std::make_shared(1, 1, "file:///some/file/path"), + std::make_shared(1, 1, "file:///some/other/path") }; } return {}; } - virtual ::IceUtil::Optional<::std::string> feelingLucky(const ::std::string & fn, const ::Ice::Current & c = ::Ice::Current()) override + virtual ::Ice::optional<::std::string> feelingLucky(const ::std::string fn, const ::Ice::Current & c = ::Ice::Current()) override { auto ms = getMatches(fn, c); if (ms.empty()) { @@ -47,7 +48,7 @@ class TestApp : public CoreWithDefaultRouter { adp(communicator->createObjectAdapterWithEndpoints("test", "default")) { adp->activate(); - adp->add(new TestSerice(), communicator->stringToIdentity("Search")); + adp->add(std::make_shared(), Ice::stringToIdentity("Search")); } ~TestApp() diff --git a/slice.jam b/slice.jam index 434e562..d261c50 100644 --- a/slice.jam +++ b/slice.jam @@ -8,7 +8,6 @@ import toolset ; type.register SLICE : ice ; feature slicer : no yes pure ; -feature allow-ice : no yes ; feature ice-visibility : public hidden ; class slice-scanner : common-scanner @@ -29,27 +28,24 @@ generators.register-standard slice.slicer.pure : SLICE : CPP(slicer-%) : ; toolset.flags slice.slice2cpp DLLEXPORT public : --dll-export JAM_DLL_PUBLIC ; -toolset.flags slice.slice2cpp ALLOWICE yes : --ice ; toolset.flags slice.slicer INCLUDES ; toolset.flags slice.slicer DLLEXPORT public : --dll-export JAM_DLL_PUBLIC ; -toolset.flags slice.slicer ALLOWICE yes : --ice ; toolset.flags slice.slicer.pure INCLUDES ; -toolset.flags slice.slicer.pure ALLOWICE yes : --ice ; actions slice.slice2cpp { - slice2cpp -I"$(INCLUDES)" --checksum --output-dir $(1[1]:D) $(2) $(DLLEXPORT) $(ALLOWICE[1]) + slice2cpp -I"$(INCLUDES)" --checksum --output-dir $(1[1]:D) $(2) $(DLLEXPORT) } actions slice.slicer { - slice2cpp -I"$(INCLUDES)" --checksum --output-dir $(1[1]:D) $(2) $(DLLEXPORT) $(ALLOWICE[1]) - slicer -I"$(INCLUDES)" $(2) $(1[2]) $(ALLOWICE[1]) + slice2cpp -I"$(INCLUDES)" --checksum --output-dir $(1[1]:D) $(2) $(DLLEXPORT) + slicer -I"$(INCLUDES)" $(2) $(1[2]) } actions slice.slicer.pure { - slicer -I"$(INCLUDES)" $(2) $(1[1]) $(ALLOWICE[1]) + slicer -I"$(INCLUDES)" $(2) $(1[1]) } IMPORT $(__name__) : slice.slice2cpp : : slice.slice2cpp ; -- cgit v1.2.3