LocARNA-2.0.0
string1.hh
1 #ifndef LOCARNA_STRING1_HH
2 #define LOCARNA_STRING1_HH
3 
4 #ifdef HAVE_CONFIG_H
5 #include <config.h>
6 #endif
7 
8 #include <string>
9 #include <algorithm>
10 
11 namespace LocARNA {
21  class string1 {
22  std::string s_;
23 
24  public:
30  explicit string1(const std::string &s) : s_(s) {}
31 
37  string1(const string1 &s) : s_(s.s_) {}
38 
44  const std::string &
45  str() const {
46  return s_;
47  }
48 
54  std::string &
55  str() {
56  return s_;
57  }
58 
67  const char &operator[](size_t i) const {
68  assert(i >= 1);
69  assert(i <= s_.length());
70  return s_[i - 1];
71  }
72 
81  char &operator[](size_t i) {
82  assert(i >= 1);
83  assert(i <= s_.length());
84  return s_[i - 1];
85  }
86 
92  size_t
93  length() const {
94  return s_.length();
95  }
96 
105  string1 &
106  operator=(const string1 &s) {
107  s_ = s.s_;
108  return *this;
109  }
110 
115  void
117  std::reverse(s_.begin(), s_.end());
118  }
119 
125  void
126  push_back(char c) {
127  s_.push_back(c);
128  }
129 
138  string1
139  substr(size_t pos, size_t len) const {
140  assert(pos >= 1);
141  assert(pos <= s_.length());
142  return string1(s_.substr(pos - 1, len));
143  }
144 
145  auto begin() const {
146  return s_.begin()+1;
147  };
148  auto end() const {
149  return s_.end();
150  };
151  auto begin() {
152  return s_.begin()+1;
153  };
154  auto end() {
155  return s_.end();
156  };
157 
158  };
159 
160 } // end namespace LocARNA
161 
162 #endif // LOCARNA_STRING1_HH
A simple 1-based string.
Definition: string1.hh:21
const std::string & str() const
Definition: string1.hh:45
string1 & operator=(const string1 &s)
Assignment operator.
Definition: string1.hh:106
void push_back(char c)
push back character
Definition: string1.hh:126
string1 substr(size_t pos, size_t len) const
Substring.
Definition: string1.hh:139
string1(const string1 &s)
Copy constructor.
Definition: string1.hh:37
std::string & str()
Definition: string1.hh:55
void reverse()
reverse string
Definition: string1.hh:116
size_t length() const
Provide length.
Definition: string1.hh:93
const char & operator[](size_t i) const
Read access.
Definition: string1.hh:67
string1(const std::string &s)
Construct from std::string.
Definition: string1.hh:30
char & operator[](size_t i)
Read/write access.
Definition: string1.hh:81
Definition: aligner.cc:15