| 85 | } |
| 86 | |
| 87 | int StringPiece::rfind(StringPiece s, size_type pos) const { |
| 88 | if (length_ < s.length_) return npos; |
| 89 | const size_t ulen = length_; |
| 90 | if (s.length_ == 0) return min(ulen, pos); |
| 91 | |
| 92 | const char* last = ptr_ + min(ulen - s.length_, pos) + s.length_; |
| 93 | const char* result = std::find_end(ptr_, last, s.ptr_, s.ptr_ + s.length_); |
| 94 | return result != last ? result - ptr_ : npos; |
| 95 | } |
| 96 | |
| 97 | // Search range is [0..pos] inclusive. If pos == npos, search everything. |
| 98 | int StringPiece::rfind(char c, size_type pos) const { |