From 41512584c0374aefa578e0f81bab3b6dae7b02d7 Mon Sep 17 00:00:00 2001
From: Andy Cedilnik <andy.cedilnik@kitware.com>
Date: Wed, 8 Feb 2006 07:17:59 -0500
Subject: [PATCH] COMP: Fix problem with STL on HP, and fix reusing the same
 variable in for loops

---
 SystemTools.cxx    | 38 +++++++++++++++++++-------------------
 SystemTools.hxx.in |  6 +++---
 2 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/SystemTools.cxx b/SystemTools.cxx
index 5d941caf..c50096e1 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -1131,18 +1131,18 @@ kwsys_stl::string SystemTools::CropString(const kwsys_stl::string& s,
 }
 
 //----------------------------------------------------------------------------
-std::vector<kwsys::String> SystemTools::SplitString(const char* p, char sep, bool isPath)
+kwsys_stl::vector<kwsys::String> SystemTools::SplitString(const char* p, char sep, bool isPath)
 {
-  std::string path = p;
-  std::vector<kwsys::String> paths;
+  kwsys_stl::string path = p;
+  kwsys_stl::vector<kwsys::String> paths;
   if(isPath && path[0] == '/')
     {
     path.erase(path.begin());
     paths.push_back("/"); 
     }
-  std::string::size_type pos1 = 0;
-  std::string::size_type pos2 = path.find(sep, pos1+1);
-  while(pos2 != std::string::npos)
+  kwsys_stl::string::size_type pos1 = 0;
+  kwsys_stl::string::size_type pos2 = path.find(sep, pos1+1);
+  while(pos2 != kwsys_stl::string::npos)
     {
     paths.push_back(path.substr(pos1, pos2-pos1));
     pos1 = pos2+1;
@@ -2419,7 +2419,7 @@ kwsys_stl::string SystemTools::CollapseFullPath(const char* in_path,
 }
 
 // compute the relative path from here to there
-std::string SystemTools::RelativePath(const char* local, const char* remote)
+kwsys_stl::string SystemTools::RelativePath(const char* local, const char* remote)
 {
   if(!SystemTools::FileIsFullPath(local))
     {
@@ -2431,10 +2431,10 @@ std::string SystemTools::RelativePath(const char* local, const char* remote)
     }
   
   // split up both paths into arrays of strings using / as a separator
-  std::vector<kwsys::String> localSplit = SystemTools::SplitString(local, '/', true); 
-  std::vector<kwsys::String> remoteSplit = SystemTools::SplitString(remote, '/', true);
-  std::vector<kwsys::String> commonPath; // store shared parts of path in this array
-  std::vector<kwsys::String> finalPath;  // store the final relative path here
+  kwsys_stl::vector<kwsys::String> localSplit = SystemTools::SplitString(local, '/', true); 
+  kwsys_stl::vector<kwsys::String> remoteSplit = SystemTools::SplitString(remote, '/', true);
+  kwsys_stl::vector<kwsys::String> commonPath; // store shared parts of path in this array
+  kwsys_stl::vector<kwsys::String> finalPath;  // store the final relative path here
   // count up how many matching directory names there are from the start
   unsigned int sameCount = 0;
   while(
@@ -2475,25 +2475,25 @@ std::string SystemTools::RelativePath(const char* local, const char* remote)
     }
   // for each entry that is not common in the remote path add it
   // to the final path.
-  for(std::vector<String>::iterator i = remoteSplit.begin();
-      i != remoteSplit.end(); ++i)
+  for(kwsys_stl::vector<String>::iterator vit = remoteSplit.begin();
+      vit != remoteSplit.end(); ++vit)
     {
-    if(i->size())
+    if(vit->size())
       {
-      finalPath.push_back(*i);
+      finalPath.push_back(*vit);
       }
     }
-  std::string relativePath;     // result string
+  kwsys_stl::string relativePath;     // result string
   // now turn the array of directories into a unix path by puttint / 
   // between each entry that does not already have one
-  for(std::vector<String>::iterator i = finalPath.begin();
-      i != finalPath.end(); ++i)
+  for(kwsys_stl::vector<String>::iterator vit1 = finalPath.begin();
+      vit1 != finalPath.end(); ++vit1)
     {
     if(relativePath.size() && relativePath[relativePath.size()-1] != '/')
       {
       relativePath += "/";
       }
-    relativePath += *i;
+    relativePath += *vit1;
     }
   return relativePath;
 }
diff --git a/SystemTools.hxx.in b/SystemTools.hxx.in
index 9303d714..a11d034b 100644
--- a/SystemTools.hxx.in
+++ b/SystemTools.hxx.in
@@ -182,8 +182,8 @@ public:
       s starts with a / then the first element of the returned array will
       be /, so /foo/bar will be [/, foo, bar]
   */  
-  static std::vector<String> SplitString(const char* s, char separator = '/', 
-                                         bool isPath = false);
+  static kwsys_stl::vector<String> SplitString(const char* s, char separator = '/', 
+                                               bool isPath = false);
   /**
    * Perform a case-independent string comparison
    */
@@ -590,7 +590,7 @@ public:
       /a/b/c/d to /a/b/c1/d1 -> ../../c1/d1
       from /usr/src to /usr/src/test/blah/foo.cpp -> test/blah/foo.cpp
   */
-  static std::string RelativePath(const char* local, const char* remote);
+  static kwsys_stl::string RelativePath(const char* local, const char* remote);
   
   /**
    * Return file's modified time
-- 
GitLab