Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/tokenize

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /externals/g4tools/include/tools/tokenize (Version 11.3.0) and /externals/g4tools/include/tools/tokenize (Version 5.2)


  1 // Copyright (C) 2010, Guy Barrand. All rights    
  2 // See the file tools.license for terms.          
  3                                                   
  4 #ifndef tools_tokenize                            
  5 #define tools_tokenize                            
  6                                                   
  7 #include <string>                                 
  8 #include <vector>                                 
  9                                                   
 10 namespace tools {                                 
 11                                                   
 12 inline bool double_quotes_get_token(const std:    
 13                                     std::strin    
 14   while ( a_cmd[a_begIdx] == ' ') ++a_begIdx;     
 15   if ( a_cmd[a_begIdx] == '"' ) {                 
 16     a_endIdx = a_cmd.find('"', a_begIdx+1);       
 17     if ( a_endIdx == std::string::npos ) a_end    
 18     a_token = a_cmd.substr(a_begIdx+1, (a_endI    
 19     ++a_endIdx;                                   
 20   }                                               
 21   else {                                          
 22     a_endIdx = a_cmd.find(' ', a_begIdx);         
 23     if ( a_endIdx == std::string::npos ) a_end    
 24     a_token = a_cmd.substr(a_begIdx, a_endIdx-    
 25   }                                               
 26   return ( a_token.length() > 0 );                
 27 }                                                 
 28                                                   
 29 //  From a string, double_quotes_tokenize perm    
 30 // by taking into account strings enclosed by     
 31 // containing spaces (for example to specify a    
 32 //  Example:                                      
 33 //    if a_cmd is the string: aa bbb "ccc ddd"    
 34 //  Returned a_args string list will be:          
 35 //    "aa", "bb", "ccc ddd", "ee", "fff gg"       
 36 //  Algorithm from Geant4/G4AnalysisUtilities.    
 37                                                   
 38 inline void double_quotes_tokenize(const std::    
 39   std::string::size_type begIdx = 0;              
 40   std::string::size_type endIdx = 0;              
 41   std::string token;                              
 42   do {                                            
 43     if ( double_quotes_get_token(a_cmd, begIdx    
 44       a_args.push_back(token);                    
 45     }                                             
 46     begIdx = endIdx + 1;                          
 47   }                                               
 48   while ( endIdx < a_cmd.length() ); // Loop c    
 49 }                                                 
 50                                                   
 51 }                                                 
 52                                                   
 53 #endif