Kouhei Sutou
null+****@clear*****
Sat Nov 7 22:14:40 JST 2015
Kouhei Sutou 2015-11-07 22:14:40 +0900 (Sat, 07 Nov 2015) New Revision: 5d99bb47e15dfd23279d8b378c99ee5409203163 https://github.com/groonga/groonga/commit/5d99bb47e15dfd23279d8b378c99ee5409203163 Message: Share common NEXT_ADDR macro Modified files: lib/db.c lib/grn.h lib/ii.c Modified: lib/db.c (+19 -26) =================================================================== --- lib/db.c 2015-11-07 21:11:14 +0900 (7ef15a0) +++ lib/db.c 2015-11-07 22:14:40 +0900 (43f66c4) @@ -42,8 +42,6 @@ typedef struct { #define IS_WEIGHT_UVECTOR(obj) ((obj)->header.flags & GRN_OBJ_WITH_WEIGHT) -#define NEXT_ADDR(p) (((byte *)(p)) + sizeof(*(p))) - #define GRN_TABLE_GROUPED (0x01<<0) #define GRN_TABLE_IS_GROUPED(table)\ ((table)->header.impl_flags & GRN_TABLE_GROUPED) @@ -1235,11 +1233,6 @@ grn_table_lcp_search(grn_ctx *ctx, grn_obj *table, const void *key, unsigned int GRN_API_RETURN(id); } -typedef struct { - grn_id target; - unsigned int section; -} default_set_value_hook_data; - grn_obj * grn_obj_default_set_value_hook(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data) { @@ -1252,7 +1245,7 @@ grn_obj_default_set_value_hook(grn_ctx *ctx, int nargs, grn_obj **args, grn_user grn_obj *oldvalue = grn_ctx_pop(ctx); grn_obj *id = grn_ctx_pop(ctx); grn_hook *h = pctx->currh; - default_set_value_hook_data *data = (void *)NEXT_ADDR(h); + grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(h); grn_obj *target = grn_ctx_at(ctx, data->target); int section = data->section; if (flags) { /* todo */ } @@ -2010,7 +2003,7 @@ grn_column_truncate(grn_ctx *ctx, grn_obj *column) break; case GRN_COLUMN_VAR_SIZE : for (hooks = DB_OBJ(column)->hooks[GRN_HOOK_SET]; hooks; hooks = hooks->next) { - default_set_value_hook_data *data = (void *)NEXT_ADDR(hooks); + grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(hooks); grn_obj *target = grn_ctx_at(ctx, data->target); if (target->header.type != GRN_COLUMN_INDEX) { continue; } if ((rc = grn_ii_truncate(ctx, (grn_ii *)target))) { goto exit; } @@ -2019,7 +2012,7 @@ grn_column_truncate(grn_ctx *ctx, grn_obj *column) break; case GRN_COLUMN_FIX_SIZE : for (hooks = DB_OBJ(column)->hooks[GRN_HOOK_SET]; hooks; hooks = hooks->next) { - default_set_value_hook_data *data = (void *)NEXT_ADDR(hooks); + grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(hooks); grn_obj *target = grn_ctx_at(ctx, data->target); if (target->header.type != GRN_COLUMN_INDEX) { continue; } if ((rc = grn_ii_truncate(ctx, (grn_ii *)target))) { goto exit; } @@ -2065,7 +2058,7 @@ grn_table_truncate(grn_ctx *ctx, grn_obj *table) switch (table->header.type) { case GRN_TABLE_PAT_KEY : for (hooks = DB_OBJ(table)->hooks[GRN_HOOK_INSERT]; hooks; hooks = hooks->next) { - default_set_value_hook_data *data = (void *)NEXT_ADDR(hooks); + grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(hooks); grn_obj *target = grn_ctx_at(ctx, data->target); if (target->header.type != GRN_COLUMN_INDEX) { continue; } if ((rc = grn_ii_truncate(ctx, (grn_ii *)target))) { goto exit; } @@ -2074,7 +2067,7 @@ grn_table_truncate(grn_ctx *ctx, grn_obj *table) break; case GRN_TABLE_DAT_KEY : for (hooks = DB_OBJ(table)->hooks[GRN_HOOK_INSERT]; hooks; hooks = hooks->next) { - default_set_value_hook_data *data = (void *)NEXT_ADDR(hooks); + grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(hooks); grn_obj *target = grn_ctx_at(ctx, data->target); if (target->header.type != GRN_COLUMN_INDEX) { continue; } if ((rc = grn_ii_truncate(ctx, (grn_ii *)target))) { goto exit; } @@ -2083,7 +2076,7 @@ grn_table_truncate(grn_ctx *ctx, grn_obj *table) break; case GRN_TABLE_HASH_KEY : for (hooks = DB_OBJ(table)->hooks[GRN_HOOK_INSERT]; hooks; hooks = hooks->next) { - default_set_value_hook_data *data = (void *)NEXT_ADDR(hooks); + grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(hooks); grn_obj *target = grn_ctx_at(ctx, data->target); if (target->header.type != GRN_COLUMN_INDEX) { continue; } if ((rc = grn_ii_truncate(ctx, (grn_ii *)target))) { goto exit; } @@ -7580,7 +7573,7 @@ update_source_hook(grn_ctx *ctx, grn_obj *obj) { grn_id *s = DB_OBJ(obj)->source; int i, n = DB_OBJ(obj)->source_size / sizeof(grn_id); - default_set_value_hook_data hook_data = { DB_OBJ(obj)->id, 0 }; + grn_obj_default_set_value_hook_data hook_data = { DB_OBJ(obj)->id, 0 }; grn_obj *source, data; GRN_TEXT_INIT(&data, GRN_OBJ_DO_SHALLOW_COPY); GRN_TEXT_SET_REF(&data, &hook_data, sizeof(hook_data)); @@ -7619,7 +7612,7 @@ del_hook(grn_ctx *ctx, grn_obj *obj, grn_hook_entry entry, grn_obj *hld) hld_size = GRN_BULK_VSIZE(hld); if (!hld_size) { return; } for (i = 0, last = &DB_OBJ(obj)->hooks[entry]; *last; i++, last = &(*last)->next) { - if (!memcmp(NEXT_ADDR(*last), hld_value, hld_size)) { + if (!memcmp(GRN_NEXT_ADDR(*last), hld_value, hld_size)) { grn_obj_delete_hook(ctx, obj, entry, i); return; } @@ -7631,7 +7624,7 @@ delete_source_hook(grn_ctx *ctx, grn_obj *obj) { grn_id *s = DB_OBJ(obj)->source; int i, n = DB_OBJ(obj)->source_size / sizeof(grn_id); - default_set_value_hook_data hook_data = { DB_OBJ(obj)->id, 0 }; + grn_obj_default_set_value_hook_data hook_data = { DB_OBJ(obj)->id, 0 }; grn_obj *source, data; GRN_TEXT_INIT(&data, GRN_OBJ_DO_SHALLOW_COPY); GRN_TEXT_SET_REF(&data, &hook_data, sizeof(hook_data)); @@ -7671,7 +7664,7 @@ grn_hook_pack(grn_ctx *ctx, grn_db_obj *obj, grn_obj *buf) grn_id id = hooks->proc ? hooks->proc->obj.id : 0; if ((rc = grn_text_benc(ctx, buf, id + 1))) { goto exit; } if ((rc = grn_text_benc(ctx, buf, hooks->hld_size))) { goto exit; } - if ((rc = grn_bulk_write(ctx, buf, (char *)NEXT_ADDR(hooks), hooks->hld_size))) { goto exit; } + if ((rc = grn_bulk_write(ctx, buf, (char *)GRN_NEXT_ADDR(hooks), hooks->hld_size))) { goto exit; } } if ((rc = grn_text_benc(ctx, buf, 0))) { goto exit; } } @@ -7707,7 +7700,7 @@ grn_hook_unpack(grn_ctx *ctx, grn_db_obj *obj, const char *buf, uint32_t buf_siz new->proc = NULL; } if ((new->hld_size = hld_size)) { - grn_memcpy(NEXT_ADDR(new), p, hld_size); + grn_memcpy(GRN_NEXT_ADDR(new), p, hld_size); p += hld_size; } *last = new; @@ -8166,7 +8159,7 @@ grn_obj_add_hook(grn_ctx *ctx, grn_obj *obj, grn_hook_entry entry, new->proc = (grn_proc *)proc; new->hld_size = hld_size; if (hld_size) { - grn_memcpy(NEXT_ADDR(new), hld_value, hld_size); + grn_memcpy(GRN_NEXT_ADDR(new), hld_value, hld_size); } for (i = 0; i != offset && *last; i++) { last = &(*last)->next; } new->next = *last; @@ -8206,7 +8199,7 @@ grn_obj_get_hook(grn_ctx *ctx, grn_obj *obj, grn_hook_entry entry, if (!hook) { return NULL; } } res = (grn_obj *)hook->proc; - grn_bulk_write(ctx, hldbuf, (char *)NEXT_ADDR(hook), hook->hld_size); + grn_bulk_write(ctx, hldbuf, (char *)GRN_NEXT_ADDR(hook), hook->hld_size); } GRN_API_RETURN(res); } @@ -8238,7 +8231,7 @@ remove_index(grn_ctx *ctx, grn_obj *obj, grn_hook_entry entry) DB_OBJ(obj)->hooks[entry] = NULL; /* avoid mutual recursive call */ while (hooks) { grn_rc sub_rc; - default_set_value_hook_data *data = (void *)NEXT_ADDR(hooks); + grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(hooks); grn_obj *target = grn_ctx_at(ctx, data->target); if (!target) { char name[GRN_TABLE_MAX_KEY_SIZE]; @@ -11285,7 +11278,7 @@ grn_column_find_index_data_column_equal(grn_ctx *ctx, grn_obj *obj, grn_hook *hooks; for (hooks = DB_OBJ(obj)->hooks[GRN_HOOK_SET]; hooks; hooks = hooks->next) { - default_set_value_hook_data *data = (void *)NEXT_ADDR(hooks); + grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(hooks); grn_obj *target = grn_ctx_at(ctx, data->target); int section; if (target->header.type != GRN_COLUMN_INDEX) { continue; } @@ -11349,7 +11342,7 @@ grn_column_find_index_data_column_match(grn_ctx *ctx, grn_obj *obj, if (prefer_full_text_search_index) { for (hooks = DB_OBJ(obj)->hooks[hook_entry]; hooks; hooks = hooks->next) { - default_set_value_hook_data *data = (void *)NEXT_ADDR(hooks); + grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(hooks); grn_obj *target = grn_ctx_at(ctx, data->target); int section; if (target->header.type != GRN_COLUMN_INDEX) { continue; } @@ -11368,7 +11361,7 @@ grn_column_find_index_data_column_match(grn_ctx *ctx, grn_obj *obj, } for (hooks = DB_OBJ(obj)->hooks[hook_entry]; hooks; hooks = hooks->next) { - default_set_value_hook_data *data = (void *)NEXT_ADDR(hooks); + grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(hooks); grn_obj *target = grn_ctx_at(ctx, data->target); int section; @@ -11422,7 +11415,7 @@ grn_column_find_index_data_column_range(grn_ctx *ctx, grn_obj *obj, } for (hooks = DB_OBJ(obj)->hooks[hook_entry]; hooks; hooks = hooks->next) { - default_set_value_hook_data *data = (void *)NEXT_ADDR(hooks); + grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(hooks); grn_obj *target = grn_ctx_at(ctx, data->target); int section; if (target->header.type != GRN_COLUMN_INDEX) { continue; } @@ -11611,7 +11604,7 @@ grn_column_find_index_data_accessor_match(grn_ctx *ctx, grn_obj *obj, } for (hooks = DB_OBJ(a->obj)->hooks[entry]; hooks; hooks = hooks->next) { - default_set_value_hook_data *data = (void *)NEXT_ADDR(hooks); + grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(hooks); grn_obj *target = grn_ctx_at(ctx, data->target); if (target->header.type != GRN_COLUMN_INDEX) { continue; } Modified: lib/grn.h (+2 -0) =================================================================== --- lib/grn.h 2015-11-07 21:11:14 +0900 (e999831) +++ lib/grn.h 2015-11-07 22:14:40 +0900 (2e9edf9) @@ -759,6 +759,8 @@ grn_str_greater(const uint8_t *ap, uint32_t as, const uint8_t *bp, uint32_t bs) # endif /* POSIX_HOST_NAME_MAX */ #endif /* HOST_NAME_MAX */ +#define GRN_NEXT_ADDR(p) (((byte *)(p)) + sizeof(*(p))) + GRN_API void grn_sleep(uint32_t seconds); GRN_API void grn_nanosleep(uint64_t nanoseconds); Modified: lib/ii.c (+12 -14) =================================================================== --- lib/ii.c 2015-11-07 21:11:14 +0900 (92e7891) +++ lib/ii.c 2015-11-07 22:14:40 +0900 (46973cb) @@ -65,8 +65,6 @@ #define LPOS(pos) (((pos) & 0xffff) << 2) #define SEG2POS(seg,pos) ((((uint32_t)(seg)) << 16) + (((uint32_t)(pos)) >> 2)) -#define NEXT_ADDR(p) (((byte *)(p)) + sizeof(*(p))) - #ifndef S_IRUSR # define S_IRUSR 0400 #endif /* S_IRUSR */ @@ -1950,7 +1948,7 @@ buffer_term_dump(grn_ctx *ctx, grn_ii *ii, buffer *b, buffer_term *bt) "bt=(%u %u %u %u %u)", bt->tid, bt->size_in_chunk, bt->pos_in_chunk, bt->size_in_buffer, bt->pos_in_buffer); for (pos = bt->pos_in_buffer; pos; pos = r->step) { r = BUFFER_REC_AT(b, pos); - p = NEXT_ADDR(r); + p = GRN_NEXT_ADDR(r); GRN_B_DEC(rid, p); if ((ii->header->flags & GRN_OBJ_WITH_SECTION)) { GRN_B_DEC(sid, p); @@ -1969,7 +1967,7 @@ check_jump(grn_ctx *ctx, grn_ii *ii, buffer *b, buffer_rec *r, int j) buffer_rec *r2; docid id, id2; if (!j) { return GRN_SUCCESS; } - p = NEXT_ADDR(r); + p = GRN_NEXT_ADDR(r); GRN_B_DEC(id.rid, p); if ((ii->header->flags & GRN_OBJ_WITH_SECTION)) { GRN_B_DEC(id.sid, p); @@ -1981,7 +1979,7 @@ check_jump(grn_ctx *ctx, grn_ii *ii, buffer *b, buffer_rec *r, int j) return GRN_SUCCESS; } r2 = BUFFER_REC_AT(b, j); - p = NEXT_ADDR(r2); + p = GRN_NEXT_ADDR(r2); GRN_B_DEC(id2.rid, p); if ((ii->header->flags & GRN_OBJ_WITH_SECTION)) { GRN_B_DEC(id2.sid, p); @@ -2040,7 +2038,7 @@ buffer_put(grn_ctx *ctx, grn_ii *ii, buffer *b, buffer_term *bt, buffer_rec *r_curr, *r_start = NULL; uint16_t last = 0, *lastp = &bt->pos_in_buffer, pos = BUFFER_REC_POS(b, rnew); int vdelta = 0, delta, delta0 = 0, vhops = 0, nhops = 0, reset = 1; - grn_memcpy(NEXT_ADDR(rnew), bs, size - sizeof(buffer_rec)); + grn_memcpy(GRN_NEXT_ADDR(rnew), bs, size - sizeof(buffer_rec)); for (;;) { if (!*lastp) { rnew->step = 0; @@ -2065,7 +2063,7 @@ buffer_put(grn_ctx *ctx, grn_ii *ii, buffer *b, buffer_term *bt, break; } r_curr = BUFFER_REC_AT(b, *lastp); - p = NEXT_ADDR(r_curr); + p = GRN_NEXT_ADDR(r_curr); GRN_B_DEC(id_curr.rid, p); if ((ii->header->flags & GRN_OBJ_WITH_SECTION)) { GRN_B_DEC(id_curr.sid, p); @@ -2093,7 +2091,7 @@ buffer_put(grn_ctx *ctx, grn_ii *ii, buffer *b, buffer_term *bt, BUFFER_REC_DEL(r_curr); if (!(step = r_curr->step)) { break; } r_curr = BUFFER_REC_AT(b, step); - p = NEXT_ADDR(r_curr); + p = GRN_NEXT_ADDR(r_curr); GRN_B_DEC(id_curr.rid, p); if ((ii->header->flags & GRN_OBJ_WITH_SECTION)) { GRN_B_DEC(id_curr.sid, p); @@ -2143,7 +2141,7 @@ buffer_put(grn_ctx *ctx, grn_ii *ii, buffer *b, buffer_term *bt, buffer_rec *rj = BUFFER_REC_AT(b, posj); if (!BUFFER_REC_DELETED(rj)) { docid idj; - p = NEXT_ADDR(rj); + p = GRN_NEXT_ADDR(rj); GRN_B_DEC(idj.rid, p); if ((ii->header->flags & GRN_OBJ_WITH_SECTION)) { GRN_B_DEC(idj.sid, p); @@ -2418,7 +2416,7 @@ typedef struct { if (nextb) {\ uint32_t lrid = bid.rid, lsid = bid.sid;\ buffer_rec *br = BUFFER_REC_AT(sb, nextb);\ - sbp = NEXT_ADDR(br);\ + sbp = GRN_NEXT_ADDR(br);\ GRN_B_DEC(bid.rid, sbp);\ if ((ii->header->flags & GRN_OBJ_WITH_SECTION)) {\ GRN_B_DEC(bid.sid, sbp);\ @@ -3137,7 +3135,7 @@ grn_ii_buffer_check(grn_ctx *ctx, grn_ii *ii, uint32_t seg) nviolations++; } r = BUFFER_REC_AT(sb, pos); - p = NEXT_ADDR(r); + p = GRN_NEXT_ADDR(r); GRN_B_DEC(rid, p); if ((ii->header->flags & GRN_OBJ_WITH_SECTION)) { GRN_B_DEC(sid, p); @@ -4314,7 +4312,7 @@ grn_ii_cursor_next(grn_ctx *ctx, grn_ii_cursor *c) GRN_LOG(ctx, GRN_LOG_DEBUG, "buffer reused(%d,%d)", c->buffer_pseg, *c->ppseg); // todo : rewind; } - c->bp = NEXT_ADDR(br); + c->bp = GRN_NEXT_ADDR(br); GRN_B_DEC(c->pb.rid, c->bp); if ((c->ii->header->flags & GRN_OBJ_WITH_SECTION)) { GRN_B_DEC(c->pb.sid, c->bp); @@ -4330,7 +4328,7 @@ grn_ii_cursor_next(grn_ctx *ctx, grn_ii_cursor *c) buffer_rec *jump_br = BUFFER_REC_AT(c->buf, br->jump); uint8_t *jump_bp; uint32_t jump_rid; - jump_bp = NEXT_ADDR(jump_br); + jump_bp = GRN_NEXT_ADDR(jump_br); GRN_B_DEC(jump_rid, jump_bp); if (jump_rid < c->min) { c->nextb = br->jump; @@ -6970,7 +6968,7 @@ grn_ii_cursor_next_all(grn_ctx *ctx, grn_ii_cursor *c) GRN_LOG(ctx, GRN_LOG_DEBUG, "buffer reused(%d,%d)", c->buffer_pseg, *c->ppseg); // todo : rewind; } - c->bp = NEXT_ADDR(br); + c->bp = GRN_NEXT_ADDR(br); GRN_B_DEC(c->pb.rid, c->bp); if ((c->ii->header->flags & GRN_OBJ_WITH_SECTION)) { GRN_B_DEC(c->pb.sid, c->bp); -------------- next part -------------- HTML����������������������������...Download