null+****@clear*****
null+****@clear*****
2011年 12月 27日 (火) 13:35:15 JST
Susumu Yata 2011-12-27 13:35:15 +0900 (Tue, 27 Dec 2011)
New Revision: f506b11858fd202e753a19795c673bad3067cda3
Log:
updated grn_dat_lcp_search() to use grn::dat::Trie::lcp_search().
Modified files:
lib/dat.cpp
Modified: lib/dat.cpp (+5 -8)
===================================================================
--- lib/dat.cpp 2011-12-27 13:28:55 +0900 (812e34e)
+++ lib/dat.cpp 2011-12-27 13:35:15 +0900 (aac3586)
@@ -627,14 +627,11 @@ grn_dat_lcp_search(grn_ctx *ctx, grn_dat *dat,
}
try {
- grn::dat::Cursor * const cursor = grn::dat::CursorFactory::open(*trie,
- NULL, 0, key, key_size, 0, 1,
- grn::dat::PREFIX_CURSOR | grn::dat::DESCENDING_CURSOR);
- // grn::dat::PrefixCursor::next() is assumed not to throw an exception.
- const grn::dat::Key &lcp_key = cursor->next();
- delete cursor;
- // The `lcp_key' is still valid even after the cursor deletion.
- return lcp_key.is_valid() ? lcp_key.id() : GRN_ID_NIL;
+ grn::dat::UInt32 key_pos;
+ if (!trie->lcp_search(key, key_size, &key_pos)) {
+ return GRN_ID_NIL;
+ }
+ return trie->get_key(key_pos).id();
} catch (const grn::dat::Exception &ex) {
ERR(grn_dat_translate_error_code(ex.code()),
const_cast<char *>("grn::dat::PrefixCursor::open failed"));