Browse Source

CMake: Move tokenize to cmSystemTools

Johan Björk 14 years ago
parent
commit
d0a403fd99
3 changed files with 36 additions and 32 deletions
  1. 1 32
      Source/cmSourceGroupCommand.cxx
  2. 32 0
      Source/cmSystemTools.cxx
  3. 3 0
      Source/cmSystemTools.h

+ 1 - 32
Source/cmSourceGroupCommand.cxx

@@ -11,37 +11,6 @@
 ============================================================================*/
 #include "cmSourceGroupCommand.h"
 
-inline std::vector<std::string> tokenize(const std::string& str,
-                                         const std::string& sep)
-{
-  std::vector<std::string> tokens;
-  std::string::size_type tokend = 0;
-
-  do
-    {
-    std::string::size_type tokstart=str.find_first_not_of(sep, tokend);
-    if (tokstart==std::string::npos) 
-      {
-      break;    // no more tokens
-      }
-    tokend=str.find_first_of(sep,tokstart);
-    if (tokend==std::string::npos)
-      {
-      tokens.push_back(str.substr(tokstart));
-      }
-    else
-      {
-      tokens.push_back(str.substr(tokstart,tokend-tokstart));
-      }
-    } while (tokend!=std::string::npos);
-
-  if (tokens.empty())
-    {
-    tokens.push_back("");
-    }
-  return tokens;
-}
-
 // cmSourceGroupCommand
 bool cmSourceGroupCommand
 ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
@@ -58,7 +27,7 @@ bool cmSourceGroupCommand
     delimiter = this->Makefile->GetDefinition("SOURCE_GROUP_DELIMITER");
     }
 
-  std::vector<std::string> folders = tokenize(args[0], delimiter);
+  std::vector<std::string> folders = cmSystemTools::tokenize(args[0], delimiter);
  
   cmSourceGroup* sg = 0;
   sg = this->Makefile->GetSourceGroup(folders);

+ 32 - 0
Source/cmSystemTools.cxx

@@ -2833,3 +2833,35 @@ bool cmSystemTools::RepeatedRemoveDirectory(const char* dir)
     }
   return false;
 }
+
+//----------------------------------------------------------------------------
+std::vector<std::string> cmSystemTools::tokenize(const std::string& str,
+                                  const std::string& sep)
+{
+  std::vector<std::string> tokens;
+  std::string::size_type tokend = 0;
+
+  do
+    {
+    std::string::size_type tokstart=str.find_first_not_of(sep, tokend);
+    if (tokstart==std::string::npos)
+      {
+      break;    // no more tokens
+      }
+    tokend=str.find_first_of(sep,tokstart);
+    if (tokend==std::string::npos)
+      {
+      tokens.push_back(str.substr(tokstart));
+      }
+    else
+      {
+      tokens.push_back(str.substr(tokstart,tokend-tokstart));
+      }
+    } while (tokend!=std::string::npos);
+
+  if (tokens.empty())
+    {
+    tokens.push_back("");
+    }
+  return tokens;
+}

+ 3 - 0
Source/cmSystemTools.h

@@ -439,6 +439,9 @@ public:
   /** Remove a directory; repeat a few times in case of locked files.  */
   static bool RepeatedRemoveDirectory(const char* dir);
 
+  /** Tokenize a string */
+  static std::vector<std::string> tokenize(const std::string& str,
+                                           const std::string& sep);
 private:
   static bool s_ForceUnixPaths;
   static bool s_RunCommandHideConsole;