[Groonga-commit] groonga/groonga [master] Add grn_hash_get_entry() to simplify get_key/value functions.

Back to archive index

null+****@clear***** null+****@clear*****
2012年 4月 4日 (水) 16:20:11 JST


Susumu Yata	2012-04-04 16:20:11 +0900 (Wed, 04 Apr 2012)

  New Revision: 2d7f2ad12feda30be2ebff9406c967152bc3ee65

  Log:
    Add grn_hash_get_entry() to simplify get_key/value functions.

  Modified files:
    lib/hash.c

  Modified: lib/hash.c (+16 -39)
===================================================================
--- lib/hash.c    2012-04-04 15:52:33 +0900 (c86752f)
+++ lib/hash.c    2012-04-04 16:20:11 +0900 (08976dc)
@@ -1858,15 +1858,19 @@ grn_hash_get(grn_ctx *ctx, grn_hash *hash, const void *key,
   return GRN_ID_NIL;
 }
 
-const char *
-_grn_hash_key(grn_ctx *ctx, grn_hash *hash, grn_id id, uint32_t *key_size)
+inline static grn_hash_entry *
+grn_hash_get_entry(grn_ctx *ctx, grn_hash *hash, grn_id id)
 {
-  grn_hash_entry *entry;
   if (!grn_hash_bitmap_at(ctx, hash, id)) {
-    *key_size = 0;
     return NULL;
   }
-  entry = grn_hash_entry_at(ctx, hash, id, 0);
+  return grn_hash_entry_at(ctx, hash, id, 0);
+}
+
+const char *
+_grn_hash_key(grn_ctx *ctx, grn_hash *hash, grn_id id, uint32_t *key_size)
+{
+  grn_hash_entry * const entry = grn_hash_get_entry(ctx, hash, id);
   if (!entry) {
     *key_size = 0;
     return NULL;
@@ -1883,11 +1887,7 @@ int
 grn_hash_get_key(grn_ctx *ctx, grn_hash *hash, grn_id id, void *keybuf, int bufsize)
 {
   int key_size;
-  grn_hash_entry *entry;
-  if (!grn_hash_bitmap_at(ctx, hash, id)) {
-    return 0;
-  }
-  entry = grn_hash_entry_at(ctx, hash, id, 0);
+  grn_hash_entry * const entry = grn_hash_get_entry(ctx, hash, id);
   if (!entry) {
     return 0;
   }
@@ -1907,11 +1907,7 @@ grn_hash_get_key2(grn_ctx *ctx, grn_hash *hash, grn_id id, grn_obj *bulk)
 {
   int key_size;
   char *key;
-  grn_hash_entry *entry;
-  if (!grn_hash_bitmap_at(ctx, hash, id)) {
-    return 0;
-  }
-  entry = grn_hash_entry_at(ctx, hash, id, 0);
+  grn_hash_entry * const entry = grn_hash_get_entry(ctx, hash, id);
   if (!entry) {
     return 0;
   }
@@ -1934,11 +1930,7 @@ int
 grn_hash_get_value(grn_ctx *ctx, grn_hash *hash, grn_id id, void *valuebuf)
 {
   void *value;
-  grn_hash_entry *entry;
-  if (!grn_hash_bitmap_at(ctx, hash, id)) {
-    return 0;
-  }
-  entry = grn_hash_entry_at(ctx, hash, id, 0);
+  grn_hash_entry * const entry = grn_hash_get_entry(ctx, hash, id);
   if (!entry) {
     return 0;
   }
@@ -1956,11 +1948,7 @@ const char *
 grn_hash_get_value_(grn_ctx *ctx, grn_hash *hash, grn_id id, uint32_t *size)
 {
   const void *value;
-  grn_hash_entry *entry;
-  if (!grn_hash_bitmap_at(ctx, hash, id)) {
-    return NULL;
-  }
-  entry = grn_hash_entry_at(ctx, hash, id, 0);
+  grn_hash_entry * const entry = grn_hash_get_entry(ctx, hash, id);
   if (!entry) {
     return NULL;
   }
@@ -1978,11 +1966,7 @@ grn_hash_get_key_value(grn_ctx *ctx, grn_hash *hash, grn_id id,
 {
   void *value;
   int key_size;
-  grn_hash_entry *entry;
-  if (!grn_hash_bitmap_at(ctx, hash, id)) {
-    return 0;
-  }
-  entry = grn_hash_entry_at(ctx, hash, id, 0);
+  grn_hash_entry * const entry = grn_hash_get_entry(ctx, hash, id);
   if (!entry) {
     return 0;
   }
@@ -2009,11 +1993,7 @@ _grn_hash_get_key_value(grn_ctx *ctx, grn_hash *hash, grn_id id,
                         void **key, void **value)
 {
   int key_size;
-  grn_hash_entry *entry;
-  if (!grn_hash_bitmap_at(ctx, hash, id)) {
-    return 0;
-  }
-  entry = grn_hash_entry_at(ctx, hash, id, 0);
+  grn_hash_entry * const entry = grn_hash_get_entry(ctx, hash, id);
   if (!entry) {
     return 0;
   }
@@ -2036,10 +2016,7 @@ grn_hash_set_value(grn_ctx *ctx, grn_hash *hash, grn_id id,
   if (!value) {
     return GRN_INVALID_ARGUMENT;
   }
-  if (!grn_hash_bitmap_at(ctx, hash, id)) {
-    return GRN_INVALID_ARGUMENT;
-  }
-  entry = grn_hash_entry_at(ctx, hash, id, 0);
+  entry = grn_hash_get_entry(ctx, hash, id);
   if (!entry) {
     return GRN_NO_MEMORY_AVAILABLE;
   }




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