null+****@clear*****
null+****@clear*****
2011年 12月 26日 (月) 12:30:07 JST
Susumu Yata 2011-12-26 12:30:07 +0900 (Mon, 26 Dec 2011)
New Revision: 7cd80009dc016a58595a4456d7d4129a6ae6de04
Log:
added grn_dat_at().
Modified files:
lib/dat.cpp
lib/dat.h
Modified: lib/dat.cpp (+17 -0)
===================================================================
--- lib/dat.cpp 2011-12-26 12:06:04 +0900 (a5bfea7)
+++ lib/dat.cpp 2011-12-26 12:30:07 +0900 (4aa8ac1)
@@ -827,4 +827,21 @@ _grn_dat_key(grn_ctx *ctx, grn_dat *dat, grn_id id, uint32_t *key_size)
return static_cast<const char *>(key.ptr());
}
+grn_id
+grn_dat_at(grn_ctx *ctx, grn_dat *dat, grn_id id)
+{
+ if (!grn_dat_open_trie_if_needed(ctx, dat)) {
+ return GRN_ID_NIL;
+ }
+ const grn::dat::Trie * const trie = static_cast<grn::dat::Trie *>(dat->trie);
+ if (!trie) {
+ return GRN_ID_NIL;
+ }
+ const grn::dat::Key &key = trie->ith_key(id);
+ if (!key.is_valid()) {
+ return GRN_ID_NIL;
+ }
+ return id;
+}
+
} // extern "C"
Modified: lib/dat.h (+1 -0)
===================================================================
--- lib/dat.h 2011-12-26 12:06:04 +0900 (91c95ae)
+++ lib/dat.h 2011-12-26 12:30:07 +0900 (cf4fd77)
@@ -59,6 +59,7 @@ grn_id grn_dat_curr_id(grn_ctx *ctx, grn_dat *dat);
grn_rc grn_dat_truncate(grn_ctx *ctx, grn_dat *dat);
const char *_grn_dat_key(grn_ctx *ctx, grn_dat *dat, grn_id id, uint32_t *key_size);
+grn_id grn_dat_at(grn_ctx *ctx, grn_dat *dat, grn_id id);
#ifdef __cplusplus
}