g4tools  5.4.0
sbeg
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_sbeg
5 #define tools_sbeg
6 
7 #include <string>
8 
9 namespace tools {
10 
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.
13  std::string::size_type ls = a_s.size();
14  std::string::size_type lb = a_b.size();
15  if(lb>ls) return false;
16  if(!lb) return false;
17  if(a_forward) {
18  const char* ps = a_s.c_str();
19  const char* pb = a_b.c_str();
20  for(std::string::size_type index=0;index<lb;index++,ps++,pb++) {
21  if(*ps!=*pb) return false;
22  }
23  } else {
24  const char* ps = a_s.c_str()+lb-1;
25  const char* pb = a_b.c_str()+lb-1;
26  for(std::string::size_type index=0;index<lb;index++,ps--,pb--) {
27  if(*ps!=*pb) return false;
28  }
29  }
30  return true;
31 }
32 
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.clear();return false;}
35  if(a_s.size()<(a_b.size()+1)) {a_cmd.clear();return true;}
36  // a_s.size() >= a_b.size()+1 :
37  a_cmd = a_s.substr(a_b.size()+1,a_s.size()-(a_b.size()+1));
38  return true;
39 }
40 
41 }
42 
43 #endif
tools::is_beg
bool is_beg(const std::string &a_s, const std::string &a_b, bool a_forward=true)
Definition: sbeg:11
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26