[Groonga-commit] groonga/groonga [master] added grn_dat_at().

Back to archive index

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
 }




Groonga-commit メーリングリストの案内
Back to archive index