From 50988f6d763d99dc7d016000157528fa0ab20086 Mon Sep 17 00:00:00 2001 From: KWSys Upstream Date: Wed, 31 May 2017 08:56:55 -0400 Subject: KWSys 2017-05-31 (bd0bbad7) Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit bd0bbad7f47776565d87aeb3657250974a426190 (master). Upstream Shortlog ----------------- Daniel Pfeifer (1): 0f7ec930 Pass std::string as const& Matteo Settenvini (1): 6173f4b3 SystemTools: Add function to remove empty path components --- SystemInformation.cxx | 3 ++- SystemTools.cxx | 11 +++++++++++ SystemTools.hxx.in | 4 ++++ testSystemTools.cxx | 8 +++++--- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/SystemInformation.cxx b/SystemInformation.cxx index bfc895e..b7bd102 100644 --- a/SystemInformation.cxx +++ b/SystemInformation.cxx @@ -918,7 +918,8 @@ int LoadLines(const char* fileName, std::vector& lines) // **************************************************************************** template -int NameValue(std::vector& lines, std::string name, T& value) +int NameValue(std::vector const& lines, std::string const& name, + T& value) { size_t nLines = lines.size(); for (size_t i = 0; i < nLines; ++i) { diff --git a/SystemTools.cxx b/SystemTools.cxx index 5ca382f..07da8dc 100644 --- a/SystemTools.cxx +++ b/SystemTools.cxx @@ -22,6 +22,7 @@ #include KWSYS_HEADER(FStream.hxx) #include KWSYS_HEADER(Encoding.hxx) +#include #include #include #include @@ -3708,6 +3709,16 @@ std::string SystemTools::JoinPath( return result; } +void SystemTools::RemoveEmptyPathElements(std::vector& path) +{ + if (path.empty()) { + return; + } + + path.erase(std::remove(path.begin() + 1, path.end(), std::string("")), + path.end()); +} + bool SystemTools::ComparePath(const std::string& c1, const std::string& c2) { #if defined(_WIN32) || defined(__APPLE__) diff --git a/SystemTools.hxx.in b/SystemTools.hxx.in index 0849e1d..5e091c2 100644 --- a/SystemTools.hxx.in +++ b/SystemTools.hxx.in @@ -474,6 +474,10 @@ public: static std::string JoinPath(std::vector::const_iterator first, std::vector::const_iterator last); + /** Removes empty components from path. + */ + static void RemoveEmptyPathElements(std::vector& path); + /** * Compare a path or components of a path. */ diff --git a/testSystemTools.cxx b/testSystemTools.cxx index 900894c..e6fbf6c 100644 --- a/testSystemTools.cxx +++ b/testSystemTools.cxx @@ -54,7 +54,8 @@ static const char* toUnixPaths[][2] = { { 0, 0 } }; -static bool CheckConvertToUnixSlashes(std::string input, std::string output) +static bool CheckConvertToUnixSlashes(std::string const& input, + std::string const& output) { std::string result = input; kwsys::SystemTools::ConvertToUnixSlashes(result); @@ -71,8 +72,9 @@ static const char* checkEscapeChars[][4] = { { "1 foo 2 bar 2", "12", "\\", { " {} ", "{}", "#", " #{#} " }, { 0, 0, 0, 0 } }; -static bool CheckEscapeChars(std::string input, const char* chars_to_escape, - char escape_char, std::string output) +static bool CheckEscapeChars(std::string const& input, + const char* chars_to_escape, char escape_char, + std::string const& output) { std::string result = kwsys::SystemTools::EscapeChars( input.c_str(), chars_to_escape, escape_char); -- cgit v0.12