g4tools  5.4.0
rcmp
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_rcmp
5 #define tools_rcmp
6 
7 // used in safe cast.
8 
9 #include <string>
10 #include <cstring>
11 
12 namespace tools {
13 
14 inline bool rcmp(const char* a_1,const char* a_2) {
15  size_t l1 = ::strlen(a_1);
16  size_t l2 = ::strlen(a_2);
17  if(l1!=l2) return false;
18  if(!l1) return true;
19  const char* p1 = a_1+l1-1;
20  const char* p2 = a_2+l2-1;
21  //ab
22  //012
23  for(size_t index=0;index<l1;index++,p1--,p2--) {
24  if(*p1!=*p2) return false;
25  }
26  return true;
27 }
28 
29 inline bool rcmp(const std::string& a_1,const char* a_2) {
30  std::string::size_type l1 = a_1.size();
31  size_t l2 = ::strlen(a_2);
32  if(size_t(l1)!=l2) return false;
33  if(!l1) return true;
34  const char* p1 = a_1.c_str()+l1-1;
35  const char* p2 = a_2+l2-1;
36  //ab
37  //012
38  for(std::string::size_type index=0;index<l1;index++,p1--,p2--) {
39  if(*p1!=*p2) return false;
40  }
41  return true;
42 }
43 
44 inline bool rcmp(const char* a_1,const std::string& a_2) {
45  size_t l1 = ::strlen(a_1);
46  std::string::size_type l2 = a_2.size();
47  if(l1!=size_t(l2)) return false;
48  if(!l1) return true;
49  const char* p1 = a_1+l1-1;
50  const char* p2 = a_2.c_str()+l2-1;
51  //ab
52  //012
53  for(size_t index=0;index<l1;index++,p1--,p2--) {
54  if(*p1!=*p2) return false;
55  }
56  return true;
57 }
58 
59 inline bool rcmp(const std::string& a_1,const std::string& a_2) {
60  std::string::size_type l1 = a_1.size();
61  std::string::size_type l2 = a_2.size();
62  if(l1!=l2) return false;
63  if(!l1) return true;
64  const char* p1 = a_1.c_str()+l1-1;
65  const char* p2 = a_2.c_str()+l2-1;
66  //ab
67  //012
68  for(std::string::size_type index=0;index<l1;index++,p1--,p2--) {
69  if(*p1!=*p2) return false;
70  }
71  return true;
72 }
73 
74 }
75 
76 #endif
tools::rcmp
bool rcmp(const char *a_1, const char *a_2)
Definition: rcmp:14
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26