diff options
author | Daniel Pfeifer <daniel@pfeifer-mail.de> | 2017-08-16 22:41:18 (GMT) |
---|---|---|
committer | Daniel Pfeifer <daniel@pfeifer-mail.de> | 2017-08-26 05:46:57 (GMT) |
commit | 4614a3b287456fad12bcb91ad2936214da3237bf (patch) | |
tree | 73b988b53642367f65a43795b9cba783f04a0fe0 | |
parent | ebe436eb97bf81704a1d0b074b3da4ac817f37d3 (diff) | |
download | CMake-4614a3b287456fad12bcb91ad2936214da3237bf.zip CMake-4614a3b287456fad12bcb91ad2936214da3237bf.tar.gz CMake-4614a3b287456fad12bcb91ad2936214da3237bf.tar.bz2 |
server: backport to C++11
-rw-r--r-- | CMakeLists.txt | 5 | ||||
-rw-r--r-- | Source/cmAlgorithms.h | 19 | ||||
-rw-r--r-- | Source/cmServer.cxx | 3 | ||||
-rw-r--r-- | Source/cmServerProtocol.cxx | 2 |
4 files changed, 23 insertions, 6 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 67c4cdc..7b0a1d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -723,10 +723,7 @@ if(NOT CMake_TEST_EXTERNAL_CMAKE) if(NOT DEFINED CMake_ENABLE_SERVER_MODE) list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_auto_type CMake_HAVE_CXX_AUTO_TYPE) list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_range_for CMake_HAVE_CXX_RANGE_FOR) - if(CMake_HAVE_CXX_AUTO_TYPE - AND CMake_HAVE_CXX_MAKE_UNIQUE - AND CMake_HAVE_CXX_RANGE_FOR - ) + if(CMake_HAVE_CXX_AUTO_TYPE AND CMake_HAVE_CXX_RANGE_FOR) set(CMake_ENABLE_SERVER_MODE 1) else() set(CMake_ENABLE_SERVER_MODE 0) diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h index 4adfe23..a4f66a9 100644 --- a/Source/cmAlgorithms.h +++ b/Source/cmAlgorithms.h @@ -9,6 +9,7 @@ #include <algorithm> #include <functional> #include <iterator> +#include <memory> #include <sstream> #include <string.h> #include <string> @@ -402,4 +403,22 @@ inline void cmStripSuffixIfExists(std::string& str, const std::string& suffix) } } +namespace cm { + +#if defined(CMake_HAVE_CXX_MAKE_UNIQUE) + +using std::make_unique; + +#else + +template <typename T, typename... Args> +std::unique_ptr<T> make_unique(Args&&... args) +{ + return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); +} + +#endif + +} // namespace cm + #endif diff --git a/Source/cmServer.cxx b/Source/cmServer.cxx index 04810c6..d3aeb0b 100644 --- a/Source/cmServer.cxx +++ b/Source/cmServer.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmServer.h" +#include "cmAlgorithms.h" #include "cmConnection.h" #include "cmFileMonitor.h" #include "cmServerDictionary.h" @@ -78,7 +79,7 @@ void cmServer::ProcessRequest(cmConnection* connection, std::unique_ptr<DebugInfo> debug; Json::Value debugValue = value["debug"]; if (!debugValue.isNull()) { - debug = std::make_unique<DebugInfo>(); + debug = cm::make_unique<DebugInfo>(); debug->OutputFile = debugValue["dumpToFile"].asString(); debug->PrintStatistics = debugValue["showStats"].asBool(); } diff --git a/Source/cmServerProtocol.cxx b/Source/cmServerProtocol.cxx index cb5e6ae..0b50deb 100644 --- a/Source/cmServerProtocol.cxx +++ b/Source/cmServerProtocol.cxx @@ -220,7 +220,7 @@ bool cmServerProtocol::Activate(cmServer* server, { assert(server); this->m_Server = server; - this->m_CMakeInstance = std::make_unique<cmake>(cmake::RoleProject); + this->m_CMakeInstance = cm::make_unique<cmake>(cmake::RoleProject); const bool result = this->DoActivate(request, errorMessage); if (!result) { this->m_CMakeInstance = nullptr; |