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