Navigation Menu

Skip to content

Commit

Permalink
Unify common code
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Oct 19, 2015
1 parent 8b73383 commit 1a6d14f
Showing 1 changed file with 12 additions and 39 deletions.
51 changes: 12 additions & 39 deletions lib/db.c
Expand Up @@ -13387,8 +13387,9 @@ grn_db_unmap(grn_ctx *ctx, grn_obj *db)
GRN_API_RETURN(ctx->rc);
}

grn_rc
grn_ctx_get_all_tables(grn_ctx *ctx, grn_obj *tables_buffer)
static grn_rc
grn_ctx_get_all_objects(grn_ctx *ctx, grn_obj *objects_buffer,
grn_bool (*predicate)(grn_ctx *ctx, grn_obj *object))
{
grn_obj *db;
grn_table_cursor *cursor;
Expand All @@ -13411,8 +13412,8 @@ grn_ctx_get_all_tables(grn_ctx *ctx, grn_obj *tables_buffer)
grn_obj *object;

if ((object = grn_ctx_at(ctx, id))) {
if (grn_obj_is_table(ctx, object)) {
GRN_PTR_PUT(ctx, tables_buffer, object);
if (predicate(ctx, object)) {
GRN_PTR_PUT(ctx, objects_buffer, object);
} else {
grn_obj_unlink(ctx, object);
}
Expand All @@ -13428,41 +13429,13 @@ grn_ctx_get_all_tables(grn_ctx *ctx, grn_obj *tables_buffer)
}

grn_rc
grn_ctx_get_all_types(grn_ctx *ctx, grn_obj *types_buffer)
grn_ctx_get_all_tables(grn_ctx *ctx, grn_obj *tables_buffer)
{
grn_obj *db;
grn_table_cursor *cursor;
grn_id id;

GRN_API_ENTER;

db = ctx->impl->db;
if (!db) {
ERR(GRN_INVALID_ARGUMENT, "DB isn't associated");
GRN_API_RETURN(ctx->rc);
}

cursor = grn_table_cursor_open(ctx, db, NULL, 0, NULL, 0, 0, -1, 0);
if (!cursor) {
GRN_API_RETURN(ctx->rc);
}

while ((id = grn_table_cursor_next(ctx, cursor)) != GRN_ID_NIL) {
grn_obj *object;

if ((object = grn_ctx_at(ctx, id))) {
if (grn_obj_is_type(ctx, object)) {
GRN_PTR_PUT(ctx, types_buffer, object);
} else {
grn_obj_unlink(ctx, object);
}
} else {
if (ctx->rc != GRN_SUCCESS) {
ERRCLR(ctx);
}
}
}
grn_table_cursor_close(ctx, cursor);
return grn_ctx_get_all_objects(ctx, tables_buffer, grn_obj_is_table);
}

GRN_API_RETURN(ctx->rc);
grn_rc
grn_ctx_get_all_types(grn_ctx *ctx, grn_obj *types_buffer)
{
return grn_ctx_get_all_objects(ctx, types_buffer, grn_obj_is_type);
}

0 comments on commit 1a6d14f

Please sign in to comment.