null+****@clear*****
null+****@clear*****
2012年 4月 4日 (水) 16:24:10 JST
Susumu Yata 2012-04-04 16:24:10 +0900 (Wed, 04 Apr 2012) New Revision: c9cfc354872a18e847e10458082d6a9739e241b1 Log: Add grn_hash_entry_get_key_size() to simplify get_key/value functions. Modified files: lib/hash.c Modified: lib/hash.c (+15 -25) =================================================================== --- lib/hash.c 2012-04-04 16:20:11 +0900 (08976dc) +++ lib/hash.c 2012-04-04 16:24:10 +0900 (80d974d) @@ -1081,6 +1081,16 @@ grn_io_hash_key_at(grn_ctx *ctx, grn_hash *hash, uint32_t pos) #define MAX_INDEX_SIZE ((GRN_HASH_MAX_SEGMENT * (IDX_MASK_IN_A_SEGMENT + 1)) >> 1) +inline static uint16_t +grn_hash_entry_get_key_size(grn_hash *hash, grn_hash_entry *entry) +{ + if (hash->obj.header.flags & GRN_OBJ_KEY_VAR_SIZE) { + return entry->header.key_size; + } else { + return hash->key_size; + } +} + inline static char * grn_hash_entry_get_key(grn_ctx *ctx, grn_hash *hash, grn_hash_entry *entry) { @@ -1875,11 +1885,7 @@ _grn_hash_key(grn_ctx *ctx, grn_hash *hash, grn_id id, uint32_t *key_size) *key_size = 0; return NULL; } - if (hash->obj.header.flags & GRN_OBJ_KEY_VAR_SIZE) { - *key_size = entry->header.key_size; - } else { - *key_size = hash->key_size; - } + *key_size = grn_hash_entry_get_key_size(hash, entry); return grn_hash_entry_get_key(ctx, hash, entry); } @@ -1891,11 +1897,7 @@ grn_hash_get_key(grn_ctx *ctx, grn_hash *hash, grn_id id, void *keybuf, int bufs if (!entry) { return 0; } - if (hash->obj.header.flags & GRN_OBJ_KEY_VAR_SIZE) { - key_size = entry->header.key_size; - } else { - key_size = hash->key_size; - } + key_size = grn_hash_entry_get_key_size(hash, entry); if (bufsize >= key_size) { memcpy(keybuf, grn_hash_entry_get_key(ctx, hash, entry), key_size); } @@ -1911,11 +1913,7 @@ grn_hash_get_key2(grn_ctx *ctx, grn_hash *hash, grn_id id, grn_obj *bulk) if (!entry) { return 0; } - if (hash->obj.header.flags & GRN_OBJ_KEY_VAR_SIZE) { - key_size = entry->header.key_size; - } else { - key_size = hash->key_size; - } + key_size = grn_hash_entry_get_key_size(hash, entry); key = grn_hash_entry_get_key(ctx, hash, entry); if (bulk->header.impl_flags & GRN_OBJ_REFER) { bulk->u.b.head = key; @@ -1970,11 +1968,7 @@ grn_hash_get_key_value(grn_ctx *ctx, grn_hash *hash, grn_id id, if (!entry) { return 0; } - if (hash->obj.header.flags & GRN_OBJ_KEY_VAR_SIZE) { - key_size = entry->header.key_size; - } else { - key_size = hash->key_size; - } + key_size = grn_hash_entry_get_key_size(hash, entry); if (bufsize >= key_size) { memcpy(keybuf, grn_hash_entry_get_key(ctx, hash, entry), key_size); } @@ -1997,11 +1991,7 @@ _grn_hash_get_key_value(grn_ctx *ctx, grn_hash *hash, grn_id id, if (!entry) { return 0; } - if (hash->obj.header.flags & GRN_OBJ_KEY_VAR_SIZE) { - key_size = entry->header.key_size; - } else { - key_size = hash->key_size; - } + key_size = grn_hash_entry_get_key_size(hash, entry); *key = grn_hash_entry_get_key(ctx, hash, entry); *value = grn_hash_entry_get_value(hash, entry); return *value ? key_size : 0;