LevenshteinDFA::State ---------------------------------------------------------------------------
| 162 | |
| 163 | // LevenshteinDFA::State --------------------------------------------------------------------------- |
| 164 | void LevenshteinDFA::State::Normalize() |
| 165 | { |
| 166 | size_t i = 0; |
| 167 | size_t j = m_positions.size(); |
| 168 | |
| 169 | while (i < j) |
| 170 | { |
| 171 | auto const & cur = m_positions[i]; |
| 172 | |
| 173 | auto it = find_if(m_positions.begin(), m_positions.begin() + j, |
| 174 | [&](Position const & rhs) { return cur.SubsumedBy(rhs); }); |
| 175 | if (it != m_positions.begin() + j) |
| 176 | { |
| 177 | ASSERT_GREATER(j, 0, ()); |
| 178 | --j; |
| 179 | std::swap(m_positions[i], m_positions[j]); |
| 180 | } |
| 181 | else |
| 182 | { |
| 183 | ++i; |
| 184 | } |
| 185 | } |
| 186 | |
| 187 | m_positions.erase(m_positions.begin() + j, m_positions.end()); |
| 188 | base::SortUnique(m_positions); |
| 189 | } |
| 190 | |
| 191 | // LevenshteinDFA ---------------------------------------------------------------------------------- |
| 192 | // static |
no test coverage detected