Kouhei Sutou
null+****@clear*****
Fri Dec 14 12:19:42 JST 2012
Kouhei Sutou 2012-12-14 12:19:42 +0900 (Fri, 14 Dec 2012) New Revision: 1e407fef40a1d7287c0d00ef922bd1907077e876 https://github.com/groonga/groonga/commit/1e407fef40a1d7287c0d00ef922bd1907077e876 Log: Support GRN_STRING inspection Modified files: lib/string.c lib/string_in.h lib/util.c lib/util.h Modified: lib/string.c (+53 -0) =================================================================== --- lib/string.c 2012-12-12 18:32:28 +0900 (0105eb8) +++ lib/string.c 2012-12-14 12:19:42 +0900 (5253a35) @@ -1405,6 +1405,59 @@ grn_string_get_encoding(grn_ctx *ctx, grn_obj *string) } grn_rc +grn_string_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *string) +{ + grn_string *string_ = (grn_string *)string; + + GRN_TEXT_PUTS(ctx, buffer, "#<string:"); + + GRN_TEXT_PUTS(ctx, buffer, " original:<"); + GRN_TEXT_PUT(ctx, buffer, + string_->original, + string_->original_length_in_bytes); + GRN_TEXT_PUTS(ctx, buffer, ">"); + GRN_TEXT_PUTS(ctx, buffer, "("); + grn_text_itoa(ctx, buffer, string_->original_length_in_bytes); + GRN_TEXT_PUTS(ctx, buffer, ")"); + + GRN_TEXT_PUTS(ctx, buffer, " normalized:<"); + GRN_TEXT_PUT(ctx, buffer, + string_->normalized, + string_->normalized_length_in_bytes); + GRN_TEXT_PUTS(ctx, buffer, ">"); + GRN_TEXT_PUTS(ctx, buffer, "("); + grn_text_itoa(ctx, buffer, string_->normalized_length_in_bytes); + GRN_TEXT_PUTS(ctx, buffer, ")"); + + GRN_TEXT_PUTS(ctx, buffer, " n_characters:"); + grn_text_itoa(ctx, buffer, string_->n_characters); + + GRN_TEXT_PUTS(ctx, buffer, " encoding:"); + grn_inspect_encoding(ctx, buffer, string_->encoding); + + GRN_TEXT_PUTS(ctx, buffer, " flags:"); + if (string_->flags & GRN_STRING_REMOVE_BLANK) { + GRN_TEXT_PUTS(ctx, buffer, "REMOVE_BLANK|"); + } + if (string_->flags & GRN_STRING_WITH_TYPES) { + GRN_TEXT_PUTS(ctx, buffer, "WITH_TYPES|"); + } + if (string_->flags & GRN_STRING_WITH_CHECKS) { + GRN_TEXT_PUTS(ctx, buffer, "WITH_CHECKS|"); + } + if (string_->flags & GRN_STRING_REMOVE_TOKENIZED_DELIMITER) { + GRN_TEXT_PUTS(ctx, buffer, "REMOVE_TOKENIZED_DELIMITER|"); + } + if (GRN_TEXT_VALUE(buffer)[GRN_TEXT_LEN(buffer) - 1] == '|') { + grn_bulk_truncate(ctx, buffer, GRN_TEXT_LEN(buffer) - 1); + } + + GRN_TEXT_PUTS(ctx, buffer, ">"); + + return GRN_SUCCESS; +} + +grn_rc grn_string_close(grn_ctx *ctx, grn_obj *string) { grn_rc rc; Modified: lib/string_in.h (+1 -0) =================================================================== --- lib/string_in.h 2012-12-12 18:32:28 +0900 (a6cc1c9) +++ lib/string_in.h 2012-12-14 12:19:42 +0900 (55e2cb2) @@ -56,6 +56,7 @@ typedef struct { grn_obj *grn_string_open_(grn_ctx *ctx, const char *str, unsigned int str_len, grn_obj *normalizer, int flags, grn_encoding encoding); grn_rc grn_string_close(grn_ctx *ctx, grn_obj *string); +grn_rc grn_string_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *string); #ifdef __cplusplus } Modified: lib/util.c (+44 -0) =================================================================== --- lib/util.c 2012-12-12 18:32:28 +0900 (8c17f5c) +++ lib/util.c 2012-12-14 12:19:42 +0900 (46a5511) @@ -19,6 +19,7 @@ #include "pat.h" #include "ii.h" #include "util.h" +#include "string_in.h" #include <string.h> #include <stdio.h> @@ -81,6 +82,43 @@ grn_inspect_name(grn_ctx *ctx, grn_obj *buf, grn_obj *obj) } grn_obj * +grn_inspect_encoding(grn_ctx *ctx, grn_obj *buf, grn_encoding encoding) +{ + switch (encoding) { + case GRN_ENC_DEFAULT : + GRN_TEXT_PUTS(ctx, buf, "default("); + grn_inspect_encoding(ctx, buf, grn_get_default_encoding()); + GRN_TEXT_PUTS(ctx, buf, ")"); + break; + case GRN_ENC_NONE : + GRN_TEXT_PUTS(ctx, buf, "none"); + break; + case GRN_ENC_EUC_JP : + GRN_TEXT_PUTS(ctx, buf, "EUC-JP"); + break; + case GRN_ENC_UTF8 : + GRN_TEXT_PUTS(ctx, buf, "UTF-8"); + break; + case GRN_ENC_SJIS : + GRN_TEXT_PUTS(ctx, buf, "Shift_JIS"); + break; + case GRN_ENC_LATIN1 : + GRN_TEXT_PUTS(ctx, buf, "Latin-1"); + break; + case GRN_ENC_KOI8R : + GRN_TEXT_PUTS(ctx, buf, "KOI8-R"); + break; + default : + GRN_TEXT_PUTS(ctx, buf, "unknown("); + grn_text_itoa(ctx, buf, encoding); + GRN_TEXT_PUTS(ctx, buf, ")"); + break; + } + + return buf; +} + +grn_obj * grn_inspect_type(grn_ctx *ctx, grn_obj *buf, unsigned char type) { switch (type) { @@ -120,6 +158,9 @@ grn_inspect_type(grn_ctx *ctx, grn_obj *buf, unsigned char type) case GRN_PATSNIP : GRN_TEXT_PUTS(ctx, buf, "GRN_PATSNIP"); break; + case GRN_STRING : + GRN_TEXT_PUTS(ctx, buf, "GRN_STRING"); + break; case GRN_CURSOR_TABLE_HASH_KEY : GRN_TEXT_PUTS(ctx, buf, "GRN_CURSOR_TABLE_HASH_KEY"); break; @@ -767,6 +808,9 @@ grn_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj) case GRN_PATSNIP : /* TODO */ break; + case GRN_STRING : + grn_string_inspect(ctx, buffer, obj); + break; case GRN_CURSOR_TABLE_HASH_KEY : /* TODO */ break; Modified: lib/util.h (+1 -0) =================================================================== --- lib/util.h 2012-12-12 18:32:28 +0900 (1b6c4c3) +++ lib/util.h 2012-12-14 12:19:42 +0900 (b4dbb00) @@ -33,6 +33,7 @@ GRN_API grn_rc grn_normalize_offset_and_limit(grn_ctx *ctx, int size, int *offse GRN_API grn_obj *grn_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj); 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); void grn_p(grn_ctx *ctx, grn_obj *obj); void grn_p_geo_point(grn_ctx *ctx, grn_geo_point *point); -------------- next part -------------- HTML����������������������������... ダウンロード