Browse Source

ENH: add last two small funcs from vtkString. Done removing deps

Sebastien Barre 20 years ago
parent
commit
a1de574851
2 changed files with 60 additions and 0 deletions
  1. 49 0
      Source/kwsys/SystemTools.cxx
  2. 11 0
      Source/kwsys/SystemTools.hxx.in

+ 49 - 0
Source/kwsys/SystemTools.cxx

@@ -841,6 +841,55 @@ kwsys_stl::string SystemTools::AddSpaceBetweenCapitalizedWords(
   return n;
 }
 
+char* SystemTools::AppendStrings(const char* str1, const char* str2)
+{
+  if (!str1)
+    {
+    return SystemTools::DuplicateString(str2);
+    }
+  if (!str2)
+    {
+    return SystemTools::DuplicateString(str1);
+    }
+  size_t len1 = strlen(str1);
+  char *newstr = new char[len1 + strlen(str2) + 1];
+  if (!newstr)
+    {
+    return 0;
+    }
+  strcpy(newstr, str1);
+  strcat(newstr + len1, str2);
+  return newstr;
+}
+
+char* SystemTools::AppendStrings(
+  const char* str1, const char* str2, const char* str3)
+{
+  if (!str1)
+    {
+    return SystemTools::AppendStrings(str2, str3);
+    }
+  if (!str2)
+    {
+    return SystemTools::AppendStrings(str1, str3);
+    }
+  if (!str3)
+    {
+    return SystemTools::AppendStrings(str1, str2);
+    }
+
+  size_t len1 = strlen(str1), len2 = strlen(str2);
+  char *newstr = new char[len1 + len2 + strlen(str3) + 1];
+  if (!newstr)
+    {
+    return 0;
+    }
+  strcpy(newstr, str1);
+  strcat(newstr + len1, str2);
+  strcat(newstr + len1 + len2, str3);
+  return newstr;
+}
+
 // Return a lower case string 
 kwsys_stl::string SystemTools::LowerCase(const kwsys_stl::string& s)
 {

+ 11 - 0
Source/kwsys/SystemTools.hxx.in

@@ -177,6 +177,17 @@ public:
   static kwsys_stl::string AddSpaceBetweenCapitalizedWords(
     const kwsys_stl::string&);
 
+  /** 
+   * Append two or more strings and produce new one.
+   * Programmer must 'delete []' the resulting string, which was allocated 
+   * with 'new'. 
+   * Return 0 if inputs are empty or there was an error
+   */
+  static char* AppendStrings(
+    const char* str1, const char* str2);
+  static char* AppendStrings(
+    const char* str1, const char* str2, const char* str3);
+
   /** -----------------------------------------------------------------
    *               Filename Manipulation Routines
    *  -----------------------------------------------------------------