| 15 | namespace |
| 16 | { |
| 17 | void AddAllNonemptySubstrings(base::MemTrie<std::string, base::VectorValues<uint32_t>> & trie, std::string const & s, |
| 18 | uint32_t value) |
| 19 | { |
| 20 | ASSERT(!s.empty(), ()); |
| 21 | for (size_t i = 0; i < s.length(); ++i) |
| 22 | { |
| 23 | std::string t; |
| 24 | for (size_t j = i; j < s.length(); ++j) |
| 25 | { |
| 26 | t.push_back(s[j]); |
| 27 | trie.Add(t, value); |
| 28 | } |
| 29 | } |
| 30 | } |
| 31 | |
| 32 | template <typename TF> |
| 33 | void ForEachToken(std::string const & s, TF && fn) |