Browse Source

ENH: Added JoinPath overload that accepts an iterator range.

pull/1/head
Brad King 19 years ago
parent
commit
3a44f2a47e
  1. 28
      Source/kwsys/SystemTools.cxx
  2. 3
      Source/kwsys/SystemTools.hxx.in

28
Source/kwsys/SystemTools.cxx

@ -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;
}

3
Source/kwsys/SystemTools.hxx.in

@ -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.

Loading…
Cancel
Save