Lines Matching refs:keys
11 void Trie::build(const char * const *keys, std::size_t num_keys, in build() argument
14 MARISA_THROW_IF((keys == NULL) && (num_keys != 0), MARISA_PARAM_ERROR); in build()
18 MARISA_THROW_IF(keys[i] == NULL, MARISA_PARAM_ERROR); in build()
21 while (keys[i][length] != '\0') { in build()
28 temp_keys[i].set_str(String(keys[i], length)); in build()
34 void Trie::build(const std::vector<std::string> &keys, in build() argument
37 temp_keys.resize(keys.size()); in build()
39 MARISA_THROW_IF(keys[i].length() > MARISA_MAX_LENGTH, MARISA_SIZE_ERROR); in build()
40 temp_keys[i].set_str(String(keys[i].c_str(), keys[i].length())); in build()
46 void Trie::build(const std::vector<std::pair<std::string, double> > &keys, in build() argument
49 temp_keys.resize(keys.size()); in build()
51 MARISA_THROW_IF(keys[i].first.length() > MARISA_MAX_LENGTH, in build()
54 keys[i].first.c_str(), keys[i].first.length())); in build()
55 temp_keys[i].set_weight(keys[i].second); in build()
60 void Trie::build_trie(Vector<Key<String> > &keys, in build_trie() argument
63 build_trie(keys, static_cast<UInt32 *>(NULL), flags); in build_trie()
66 std::vector<UInt32> temp_key_ids(keys.size()); in build_trie()
67 build_trie(keys, temp_key_ids.empty() ? NULL : &temp_key_ids[0], flags); in build_trie()
71 void Trie::build_trie(Vector<Key<String> > &keys, in build_trie() argument
77 temp.build_trie(keys, &terminals, progress); in build_trie()
120 void Trie::build_trie(Vector<Key<T> > &keys, in build_trie() argument
122 build_cur(keys, terminals, progress); in build_trie()
136 build_next(keys, &next_terminals, progress); in build_trie()
164 void Trie::build_cur(Vector<Key<T> > &keys, in build_cur() argument
166 num_keys_ = sort_keys(keys); in build_cur()
175 queue.push(Range(0, (UInt32)keys.size(), 0)); in build_cur()
182 (keys[range.begin()].str().length() == range.pos())) { in build_cur()
183 keys[range.begin()].set_terminal(node); in build_cur()
192 double weight = keys[range.begin()].weight(); in build_cur()
194 if (keys[i - 1].str()[range.pos()] != keys[i].str()[range.pos()]) { in build_cur()
199 weight += keys[i].weight(); in build_cur()
212 while (pos < keys[wrange.begin()].str().length()) { in build_cur()
215 if (keys[j - 1].str()[pos] != keys[j].str()[pos]) { in build_cur()
226 (pos != keys[wrange.end() - 1].str().length())) { in build_cur()
231 labels_.push_back(keys[wrange.begin()].str()[wrange.pos()]); in build_cur()
237 rest_key.set_str(keys[wrange.begin()].str().substr( in build_cur()
256 build_terminals(keys, terminals); in build_cur()
257 keys.swap(&rest_keys); in build_cur()
260 void Trie::build_next(Vector<Key<String> > &keys, in build_next() argument
264 strs.resize(keys.size()); in build_next()
266 strs[i] = keys[i].str(); in build_next()
272 rkeys.resize(keys.size()); in build_next()
274 rkeys[i].set_str(RString(keys[i].str())); in build_next()
275 rkeys[i].set_weight(keys[i].weight()); in build_next()
277 keys.clear(); in build_next()
300 UInt32 Trie::sort_keys(Vector<Key<T> > &keys) const { in sort_keys()
301 if (keys.empty()) { in sort_keys()
304 for (UInt32 i = 0; i < keys.size(); ++i) { in sort_keys()
305 keys[i].set_id(i); in sort_keys()
307 std::sort(keys.begin(), keys.end()); in sort_keys()
309 for (UInt32 i = 1; i < keys.size(); ++i) { in sort_keys()
310 if (keys[i - 1].str() != keys[i].str()) { in sort_keys()
318 void Trie::build_terminals(const Vector<Key<T> > &keys, in build_terminals() argument
321 temp_terminals.resize(keys.size()); in build_terminals()
322 for (UInt32 i = 0; i < keys.size(); ++i) { in build_terminals()
323 temp_terminals[keys[i].id()] = keys[i].terminal(); in build_terminals()