Skip to content
Snippets Groups Projects
Commit ff0071c0 authored by Brad King's avatar Brad King
Browse files

ENH: Added JoinPath overload that accepts an iterator range.

parent 1a9d7a67
No related branches found
No related tags found
No related merge requests found
......@@ -2813,20 +2813,36 @@ void SystemTools::SplitPath(const char* p,
kwsys_stl::string
SystemTools::JoinPath(const kwsys_stl::vector<kwsys_stl::string>& components)
{
return SystemTools::JoinPath(components.begin(), components.end());
}
//----------------------------------------------------------------------------
kwsys_stl::string
SystemTools
::JoinPath(kwsys_stl::vector<kwsys_stl::string>::const_iterator first,
kwsys_stl::vector<kwsys_stl::string>::const_iterator last)
{
// Construct result in a single string.
kwsys_stl::string result;
if(components.size() > 0)
// The first two components do not add a slash.
if(first != last)
{
result += components[0];
result += *first++;
}
if(components.size() > 1)
if(first != last)
{
result += components[1];
result += *first++;
}
for(unsigned int i=2; i < components.size(); ++i)
// All remaining components are always separated with a slash.
while(first != last)
{
result += "/";
result += components[i];
result += *first++;
}
// Return the concatenated result.
return result;
}
......
......@@ -364,6 +364,9 @@ public:
*/
static kwsys_stl::string JoinPath(
const kwsys_stl::vector<kwsys_stl::string>& components);
static kwsys_stl::string JoinPath(
kwsys_stl::vector<kwsys_stl::string>::const_iterator first,
kwsys_stl::vector<kwsys_stl::string>::const_iterator last);
/**
* Compare a path or components of a path.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment