Geant4 Cross Reference |
1 // Copyright (C) 2010, Guy Barrand. All rights 1 // Copyright (C) 2010, Guy Barrand. All rights reserved. 2 // See the file tools.license for terms. 2 // See the file tools.license for terms. 3 3 4 #ifndef tools_sbeg 4 #ifndef tools_sbeg 5 #define tools_sbeg 5 #define tools_sbeg 6 6 7 #include <string> 7 #include <string> 8 8 9 namespace tools { 9 namespace tools { 10 10 11 inline bool is_beg(const std::string& a_s,cons 11 inline bool is_beg(const std::string& a_s,const std::string& a_b,bool a_forward = true){ 12 //look if a_s begin with a_b. 12 //look if a_s begin with a_b. 13 std::string::size_type ls = a_s.size(); 13 std::string::size_type ls = a_s.size(); 14 std::string::size_type lb = a_b.size(); 14 std::string::size_type lb = a_b.size(); 15 if(lb>ls) return false; 15 if(lb>ls) return false; 16 if(!lb) return false; 16 if(!lb) return false; 17 if(a_forward) { 17 if(a_forward) { 18 const char* ps = a_s.c_str(); 18 const char* ps = a_s.c_str(); 19 const char* pb = a_b.c_str(); 19 const char* pb = a_b.c_str(); 20 for(std::string::size_type index=0;index<l 20 for(std::string::size_type index=0;index<lb;index++,ps++,pb++) { 21 if(*ps!=*pb) return false; 21 if(*ps!=*pb) return false; 22 } 22 } 23 } else { 23 } else { 24 const char* ps = a_s.c_str()+lb-1; 24 const char* ps = a_s.c_str()+lb-1; 25 const char* pb = a_b.c_str()+lb-1; 25 const char* pb = a_b.c_str()+lb-1; 26 for(std::string::size_type index=0;index<l 26 for(std::string::size_type index=0;index<lb;index++,ps--,pb--) { 27 if(*ps!=*pb) return false; 27 if(*ps!=*pb) return false; 28 } 28 } 29 } 29 } 30 return true; 30 return true; 31 } 31 } 32 32 33 inline bool is_beg(const std::string& a_s,cons 33 inline bool is_beg(const std::string& a_s,const std::string& a_b,std::string& a_cmd,bool a_forward = true){ 34 if(!tools::is_beg(a_s,a_b,a_forward)) {a_cmd 34 if(!tools::is_beg(a_s,a_b,a_forward)) {a_cmd.clear();return false;} 35 if(a_s.size()<(a_b.size()+1)) {a_cmd.clear() 35 if(a_s.size()<(a_b.size()+1)) {a_cmd.clear();return true;} 36 // a_s.size() >= a_b.size()+1 : 36 // a_s.size() >= a_b.size()+1 : 37 a_cmd = a_s.substr(a_b.size()+1,a_s.size()-( 37 a_cmd = a_s.substr(a_b.size()+1,a_s.size()-(a_b.size()+1)); 38 return true; 38 return true; 39 } 39 } 40 40 41 } 41 } 42 42 43 #endif 43 #endif