Kouhei Sutou
null+****@clear*****
Tue Jan 12 14:20:47 JST 2016
Kouhei Sutou 2016-01-12 14:20:47 +0900 (Tue, 12 Jan 2016) New Revision: b273eb8e34b7c456a35d9b3a460a1588a5fa2636 https://github.com/groonga/groonga/commit/b273eb8e34b7c456a35d9b3a460a1588a5fa2636 Message: Export grn_dump_column_create_flags() It's a function that dumps grn_obj_flags for creating a column as Groonga command format. Modified files: include/groonga/dump.h lib/dump.c lib/proc.c Modified: include/groonga/dump.h (+3 -0) =================================================================== --- include/groonga/dump.h 2016-01-12 14:16:56 +0900 (df201b0) +++ include/groonga/dump.h 2016-01-12 14:20:47 +0900 (3427bf1) @@ -25,6 +25,9 @@ extern "C" { GRN_API grn_rc grn_dump_table_create_flags(grn_ctx *ctx, grn_obj_flags flags, grn_obj *buffer); +GRN_API grn_rc grn_dump_column_create_flags(grn_ctx *ctx, + grn_obj_flags flags, + grn_obj *buffer); #ifdef __cplusplus } Modified: lib/dump.c (+47 -0) =================================================================== --- lib/dump.c 2016-01-12 14:16:56 +0900 (b7256e5) +++ lib/dump.c 2016-01-12 14:20:47 +0900 (3d44731) @@ -51,3 +51,50 @@ grn_dump_table_create_flags(grn_ctx *ctx, GRN_API_RETURN(ctx->rc); } + +grn_rc +grn_dump_column_create_flags(grn_ctx *ctx, + grn_obj_flags flags, + grn_obj *buffer) +{ + GRN_API_ENTER; + + switch (flags & GRN_OBJ_COLUMN_TYPE_MASK) { + case GRN_OBJ_COLUMN_SCALAR: + GRN_TEXT_PUTS(ctx, buffer, "COLUMN_SCALAR"); + break; + case GRN_OBJ_COLUMN_VECTOR: + GRN_TEXT_PUTS(ctx, buffer, "COLUMN_VECTOR"); + if (flags & GRN_OBJ_WITH_WEIGHT) { + GRN_TEXT_PUTS(ctx, buffer, "|WITH_WEIGHT"); + } + break; + case GRN_OBJ_COLUMN_INDEX: + GRN_TEXT_PUTS(ctx, buffer, "COLUMN_INDEX"); + if (flags & GRN_OBJ_WITH_SECTION) { + GRN_TEXT_PUTS(ctx, buffer, "|WITH_SECTION"); + } + if (flags & GRN_OBJ_WITH_WEIGHT) { + GRN_TEXT_PUTS(ctx, buffer, "|WITH_WEIGHT"); + } + if (flags & GRN_OBJ_WITH_POSITION) { + GRN_TEXT_PUTS(ctx, buffer, "|WITH_POSITION"); + } + break; + } + switch (flags & GRN_OBJ_COMPRESS_MASK) { + case GRN_OBJ_COMPRESS_NONE: + break; + case GRN_OBJ_COMPRESS_ZLIB: + GRN_TEXT_PUTS(ctx, buffer, "|COMPRESS_ZLIB"); + break; + case GRN_OBJ_COMPRESS_LZ4: + GRN_TEXT_PUTS(ctx, buffer, "|COMPRESS_LZ4"); + break; + } + if (flags & GRN_OBJ_PERSISTENT) { + GRN_TEXT_PUTS(ctx, buffer, "|PERSISTENT"); + } + + GRN_API_RETURN(ctx->rc); +} Modified: lib/proc.c (+5 -49) =================================================================== --- lib/proc.c 2016-01-12 14:16:56 +0900 (fa0ddee) +++ lib/proc.c 2016-01-12 14:20:47 +0900 (b2e0431) @@ -1528,48 +1528,6 @@ grn_parse_column_create_flags(grn_ctx *ctx, const char *nptr, const char *end) return flags; } -static void -grn_column_create_flags_to_text(grn_ctx *ctx, grn_obj *buf, grn_obj_flags flags) -{ - GRN_BULK_REWIND(buf); - switch (flags & GRN_OBJ_COLUMN_TYPE_MASK) { - case GRN_OBJ_COLUMN_SCALAR: - GRN_TEXT_PUTS(ctx, buf, "COLUMN_SCALAR"); - break; - case GRN_OBJ_COLUMN_VECTOR: - GRN_TEXT_PUTS(ctx, buf, "COLUMN_VECTOR"); - if (flags & GRN_OBJ_WITH_WEIGHT) { - GRN_TEXT_PUTS(ctx, buf, "|WITH_WEIGHT"); - } - break; - case GRN_OBJ_COLUMN_INDEX: - GRN_TEXT_PUTS(ctx, buf, "COLUMN_INDEX"); - if (flags & GRN_OBJ_WITH_SECTION) { - GRN_TEXT_PUTS(ctx, buf, "|WITH_SECTION"); - } - if (flags & GRN_OBJ_WITH_WEIGHT) { - GRN_TEXT_PUTS(ctx, buf, "|WITH_WEIGHT"); - } - if (flags & GRN_OBJ_WITH_POSITION) { - GRN_TEXT_PUTS(ctx, buf, "|WITH_POSITION"); - } - break; - } - switch (flags & GRN_OBJ_COMPRESS_MASK) { - case GRN_OBJ_COMPRESS_NONE: - break; - case GRN_OBJ_COMPRESS_ZLIB: - GRN_TEXT_PUTS(ctx, buf, "|COMPRESS_ZLIB"); - break; - case GRN_OBJ_COMPRESS_LZ4: - GRN_TEXT_PUTS(ctx, buf, "|COMPRESS_LZ4"); - break; - } - if (flags & GRN_OBJ_PERSISTENT) { - GRN_TEXT_PUTS(ctx, buf, "|PERSISTENT"); - } -} - static grn_bool proc_table_create_set_token_filters_put(grn_ctx *ctx, grn_obj *token_filters, @@ -2142,7 +2100,7 @@ output_column_info(grn_ctx *ctx, grn_obj *column) output_column_name(ctx, column); GRN_OUTPUT_CSTR(path); GRN_OUTPUT_CSTR(type); - grn_column_create_flags_to_text(ctx, &o, column->header.flags); + grn_dump_column_create_flags(ctx, column->header.flags, &o); GRN_OUTPUT_OBJ(&o, NULL); output_object_id_name(ctx, column->header.domain); output_object_id_name(ctx, grn_obj_get_range(ctx, column)); @@ -2238,7 +2196,7 @@ proc_column_list(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_da GRN_OUTPUT_CSTR(GRN_COLUMN_NAME_KEY); GRN_OUTPUT_CSTR(""); GRN_OUTPUT_CSTR(""); - grn_column_create_flags_to_text(ctx, &buf, 0); + grn_dump_column_create_flags(ctx, 0, &buf); GRN_OUTPUT_OBJ(&buf, NULL); name_len = grn_obj_name(ctx, table, name_buf, GRN_TABLE_MAX_KEY_SIZE); GRN_OUTPUT_STR(name_buf, name_len); @@ -2965,7 +2923,6 @@ dump_column(grn_ctx *ctx, grn_obj *outbuf , grn_obj *table, grn_obj *column) { grn_obj *type; grn_obj_flags default_flags = GRN_OBJ_PERSISTENT; - grn_obj buf; type = grn_ctx_at(ctx, ((grn_db_obj *)column)->range); if (!type) { @@ -2981,10 +2938,9 @@ dump_column(grn_ctx *ctx, grn_obj *outbuf , grn_obj *table, grn_obj *column) if (type->header.type == GRN_TYPE) { default_flags |= type->header.flags; } - GRN_TEXT_INIT(&buf, 0); - grn_column_create_flags_to_text(ctx, &buf, column->header.flags & ~default_flags); - GRN_TEXT_PUT(ctx, outbuf, GRN_TEXT_VALUE(&buf), GRN_TEXT_LEN(&buf)); - GRN_OBJ_FIN(ctx, &buf); + grn_dump_column_create_flags(ctx, + column->header.flags & ~default_flags, + outbuf); GRN_TEXT_PUTC(ctx, outbuf, ' '); dump_obj_name(ctx, outbuf, type); if (column->header.flags & GRN_OBJ_COLUMN_INDEX) { -------------- next part -------------- HTML����������������������������...Download