| 121 | } |
| 122 | |
| 123 | size_type StringPiece::rfind(const StringPiece& s, size_type pos) const { |
| 124 | if (m_length < s.m_length) |
| 125 | return npos; |
| 126 | |
| 127 | if (s.empty()) |
| 128 | return std::min(m_length, pos); |
| 129 | |
| 130 | const char* last = m_ptr + std::min(m_length - s.m_length, pos) + s.m_length; |
| 131 | const char* result = std::find_end(m_ptr, last, s.m_ptr, s.m_ptr + s.m_length); |
| 132 | return result != last ? static_cast<size_t>(result - m_ptr) : npos; |
| 133 | } |
| 134 | |
| 135 | size_type StringPiece::rfind(char c, size_type pos) const { |
| 136 | if (m_length == 0) |