Kouhei Sutou
null+****@clear*****
Sun Nov 2 15:42:00 JST 2014
Kouhei Sutou 2014-11-02 15:42:00 +0900 (Sun, 02 Nov 2014) New Revision: a362ccaccaea4cd38431341d9c2419261da7e305 https://github.com/groonga/groonga/commit/a362ccaccaea4cd38431341d9c2419261da7e305 Message: Add grn_inspect_indented() utility function for debug Modified files: lib/grn_util.h lib/util.c Modified: lib/grn_util.h (+2 -0) =================================================================== --- lib/grn_util.h 2014-11-02 14:21:52 +0900 (8daea9a) +++ lib/grn_util.h 2014-11-02 15:42:00 +0900 (9289c20) @@ -27,6 +27,8 @@ extern "C" { GRN_API grn_rc grn_normalize_offset_and_limit(grn_ctx *ctx, int size, int *offset, int *limit); GRN_API grn_obj *grn_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj); +GRN_API grn_obj *grn_inspect_indented(grn_ctx *ctx, grn_obj *buffer, + grn_obj *obj, const char *indent); GRN_API grn_obj *grn_inspect_name(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj); GRN_API grn_obj *grn_inspect_encoding(grn_ctx *ctx, grn_obj *buffer, grn_encoding encoding); GRN_API grn_obj *grn_inspect_type(grn_ctx *ctx, grn_obj *buffer, unsigned char type); Modified: lib/util.c (+39 -0) =================================================================== --- lib/util.c 2014-11-02 14:21:52 +0900 (e1e28a1) +++ lib/util.c 2014-11-02 15:42:00 +0900 (1430a58) @@ -1073,6 +1073,45 @@ grn_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj) return buffer; } +grn_obj * +grn_inspect_indented(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj, + const char *indent) +{ + grn_obj sub_buffer; + + GRN_TEXT_INIT(&sub_buffer, 0); + grn_inspect(ctx, &sub_buffer, obj); + { + const char *inspected = GRN_TEXT_VALUE(&sub_buffer); + size_t inspected_size = GRN_TEXT_LEN(&sub_buffer); + size_t i, line_start; + + if (!buffer) { + buffer = grn_obj_open(ctx, GRN_BULK, 0, GRN_DB_TEXT); + } + + line_start = 0; + for (i = 0; i < inspected_size; i++) { + if (inspected[i] == '\n') { + if (line_start != 0) { + GRN_TEXT_PUTS(ctx, buffer, indent); + } + GRN_TEXT_PUT(ctx, buffer, inspected + line_start, i + 1 - line_start); + line_start = i + 1; + } + } + if (line_start != 0) { + GRN_TEXT_PUTS(ctx, buffer, indent); + } + GRN_TEXT_PUT(ctx, buffer, + inspected + line_start, + inspected_size - line_start); + } + GRN_OBJ_FIN(ctx, &sub_buffer); + + return buffer; +} + void grn_p(grn_ctx *ctx, grn_obj *obj) { -------------- next part -------------- HTML����������������������������... Descargar