12 return siz ? string(dat, siz)
44 if (
int r = memcmp(dat, rhs.dat, std::min(siz, rhs.siz))) {
48 return int(siz - rhs.siz);
55 return string_ref(dat + pos, std::min(n, siz - pos));
66 if (s.
empty())
return 0;
67 if (s.
size() <= siz) {
68 auto m = siz - s.
size();
69 for (
size_type pos = 0; pos <= m; ++pos) {
70 if ((dat[pos] == s[0]) &&
71 std::equal(s.
begin() + 1, s.
end(), dat + pos + 1)) {
88 if (s.
empty())
return siz;
89 if (s.
size() <= siz) {
90 auto m = siz - s.
size();
91 for (
auto pos = m; pos !=
size_type(-1); --pos) {
92 if ((dat[pos] == s[0]) &&
93 std::equal(s.
begin() + 1, s.
end(), dat + pos + 1)) {
138 return (siz >= x.
size()) &&
139 (memcmp(dat, x.
data(), x.
size()) == 0);
144 return (siz >= x.
size()) &&
145 (memcmp(dat + siz - x.
size(), x.
data(), x.
size()) == 0);
166 string s = str.
str();
167 const char* begin = s.c_str();
169 int result = strtol(begin, &end, base);
170 if (idx) *idx = end - begin;
175 string s = str.
str();
176 const char* begin = s.c_str();
178 int result = strtoul(begin, &end, base);
179 if (idx) *idx = end - begin;
184 string s = str.
str();
185 const char* begin = s.c_str();
187 int result = strtoll(begin, &end, base);
188 if (idx) *idx = end - begin;
198 result.reserve(x.
size() + y.
size());
206 result.reserve(1 + y.
size());
207 result.append(&x, 1);
214 result.reserve(x.
size() + 1);
216 result.append(&y, 1);