7.26.17. grn_inspect
#
7.26.17.1. 概要#
grn_obj
を調べるには2種類の関数があります。1つは grn_inspect
関数で、もう1つは grn_p
関数です。
grn_inspect
系の関数のリストは次の通りです。調査したオブジェクトの内容を指定したオブジェクトに設定します。
grn_p
系の関数のリストは次の通りです。調査したオブジェクトの内容をコンソールに出力します。
7.26.17.2. 例#
以下はオブジェクトを調査する例です。
grn_obj buffer;
GRN_TEXT_INIT(&buffer, 0);
grn_inspect(&context, &buffer, obj);
/* equivalent to grn_p(ctx, obj); */
printf("inspected: <%.*s>\n", (int)GRN_TEXT_LEN(&buffer), GRN_TEXT_VALUE(&buffer));
7.26.17.3. リファレンス#
-
grn_obj *grn_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj)#
Added in version 4.0.8.
指定した
obj
オブジェクトを調査します。注釈
TABLE_PAT_KEY
なテーブルが指定された場合、すべてのキーが表示されます。この挙動が望ましくない場合、grn_inspect_limited()
をかわりに使ってください。- パラメータ:
ctx -- その時点のコンテキスト。
buffer -- 調査した内容が保存されるオブジェクト
obj -- 対象のオブジェクト
- 戻り値:
調査した内容が設定される
buffer
オブジェクト
grn_obj buffer; GRN_TEXT_INIT(&buffer, 0); grn_inspect(&context, &buffer, obj); printf("%.*s\n", (int)GRN_TEXT_LEN(&buffer), GRN_TEXT_VALUE(&buffer));
もし
obj
がTABLE_PAT_KEY
なテーブルであれば、次のように表示されます:#<table:pat Users key:ShortText value:(nil) size:7 columns:[] default_tokenizer:(nil) normalizer:(nil) keys:["a", "b", "c", "d", "e", "f", "g"] subrec:none nodes:{ 4{0,5,0} L:2{0,6,0} L:1{0,7,0} L:0{0,0,0} R:1{0,7,0}("a")[01100001] ...
-
grn_obj *grn_inspect_indented(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj, const char *indent)#
Added in version 4.0.8.
指定した
obj
オブジェクトを調査します。注釈
indent
は調査した内容が改行を含む場合に追加されます。(調査した内容のテキストは複数行で構成されている必要があります)- パラメータ:
ctx -- その時点のコンテキスト。
buffer -- 調査した内容が保存されるオブジェクト
obj -- 対象のオブジェクト
indent -- 先頭に挿入されるインデント
- 戻り値:
調査した内容がインデントとともに設定される
buffer
オブジェクト
grn_obj buffer; GRN_TEXT_INIT(&buffer, 0); grn_inspect_indented(&context, &buffer, obj, "***"); printf("%.*s\n", (int)GRN_TEXT_LEN(&buffer), GRN_TEXT_VALUE(&buffer));
もし
obj
がTABLE_PAT_KEY
なテーブルであれば、次のように表示されます:***#<table:pat Users key:ShortText value:(nil) size:7 columns:[] default_tokenizer:(nil) normalizer:(nil) keys:["a", "b", "c", "d", "e", "f", "g"] subrec:none nodes:{ ***4{0,5,0} *** L:2{0,6,0} *** L:1{0,7,0} *** L:0{0,0,0} *** R:1{0,7,0}("a")[01100001] ...
-
grn_obj *grn_inspect_limited(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj)#
Added in version 7.0.0.
指定した
obj
オブジェクトを調査します。注釈
調査した内容が長い場合、切り詰められます。
- パラメータ:
ctx -- その時点のコンテキスト。
buffer -- 調査した内容が(切り詰められて)設定されるオブジェクト
obj -- 対象のオブジェクト
- 戻り値:
オブジェクトの詳細が設定される
buffer
オブジェクト。調査した内容が64文字よりも長い場合には、その内容は切り詰められます。そうでない場合調査した内容がそのまま設定されます。
grn_obj buffer; GRN_TEXT_INIT(&buffer, 0); grn_inspect(&context, &buffer, obj); printf("#=> %.*s\n", (int)GRN_TEXT_LEN(&buffer), GRN_TEXT_VALUE(&buffer));
TABLE_PAT_KEY
なテーブルであっても、切り詰められた内容は次のように表示されます:#<table:pat Users key:ShortText value:(nil) size:7 columns:[] de...(502)
-
grn_obj *grn_inspect_name(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj)#
Added in version 4.0.8.
指定した
obj
オブジェクトを調査します。- パラメータ:
ctx -- その時点のコンテキスト。
buffer -- オブジェクト名が設定されるオブジェクト
obj -- 対象のオブジェクト
- 戻り値:
オブジェクトの名前が設定される
buffer
オブジェクト。指定したオブジェクトが無効な値であれば(nil)
が設定され、内部で使用しているオブジェクトであれば(anonymouse: ID)
が設定されます。
grn_obj buffer; GRN_TEXT_INIT(&buffer, 0); grn_inspect_name(&context, &buffer, obj); printf("%.*s\n", (int)GRN_TEXT_LEN(&buffer), GRN_TEXT_VALUE(&buffer));
調査対象のオブジェクト名は次のように表示されます:
Users
-
grn_obj *grn_inspect_encoding(grn_ctx *ctx, grn_obj *buffer, grn_encoding encoding)#
Added in version 4.0.8.
指定した
obj
オブジェクトを調査します。- パラメータ:
ctx -- その時点のコンテキスト。
buffer -- エンコーディング名が設定されるオブジェクト
encoding -- 調査対象のエンコーディング。エンコーディングは
GRN_ENC_DEFAULT
、GRN_ENC_NONE
、GRN_ENC_EUC_JP
、GRN_ENC_UTF8
、GRN_ENC_SJIS
、GRN_ENC_LATIN1
、GRN_ENC_KOI8R
のいずれかでなければなりません。
- 戻り値:
エンコーディング名が設定される
buffer
オブジェクト。不正なencoding
が渡された場合、(unknown: ENCODING)
がbuffer
に設定されます。
grn_obj buffer; GRN_TEXT_INIT(&buffer, 0); grn_inspect_encoding(&context, &buffer, GRN_ENC_UTF8); printf("%.*s\n", (int)GRN_TEXT_LEN(&buffer), GRN_TEXT_VALUE(&buffer));
指定したエンコーディング名が次のように表示されます:
UTF-8
-
grn_obj *grn_inspect_type(grn_ctx *ctx, grn_obj *buffer, unsigned char type)#
Added in version 4.0.8.
指定した
obj
オブジェクトを調査します。- パラメータ:
ctx -- その時点のコンテキスト。
buffer -- 型の名前が設定されるオブジェクト
type -- 調査対象の型
- 戻り値:
型の名前が設定される
buffer
オブジェクト。正しくないtype
が渡された場合、(unknown: TYPE_IN_HEX)
がbuffer
に設定されます。
grn_obj buffer; GRN_TEXT_INIT(&buffer, 0); grn_inspect_type(&context, &buffer, obj->header.type); printf("#=> %.*s\n", (int)GRN_TEXT_LEN(&buffer), GRN_TEXT_VALUE(&buffer));
obj
が組込の型の場合、型の名前は次のように表示されます:GRN_TYPE
-
grn_obj *grn_inspect_query_log_flags(grn_ctx *ctx, grn_obj *buffer, unsigned int flags)#
Added in version 7.0.4.
指定した
flag
を調査します。- パラメータ:
ctx -- その時点のコンテキスト。
buffer -- フラグの名前が設定されるオブジェクト
flags -- 調査対象の型
- 戻り値:
フラグの名前が設定される
buffer
オブジェクト。不正なflags
が与えられた場合、空の文字列がbuffer
に設定されます。
grn_obj buffer; GRN_TEXT_INIT(&buffer, 0); int current_flags = grn_query_logger_get_flags(&context); grn_inspect_query_log_flags(&context, &buffer, current_flags); printf("%.*s\n", (int)GRN_TEXT_LEN(&buffer), GRN_TEXT_VALUE(&buffer));
クエリーログのフラグは次のように表示されます:
COMMAND|RESULT_CODE|DESTINATION|CACHE|SIZE|SCORE
-
void grn_p(grn_ctx *ctx, grn_obj *obj)#
Added in version 4.0.8.
指定した
obj
を調査し、その内容を出力します。- パラメータ:
ctx -- その時点のコンテキスト。
obj -- 対象のオブジェクト
grn_p(&context, &buffer, obj);
オブジェクトが
ShortText
なら次のように表示されます:#<type ShortText size:4096 type:var_size>
-
void grn_p_geo_point(grn_ctx *ctx, grn_geo_point *point)#
Added in version 4.0.8.
指定した
obj
を調査し、geo pointの内容を出力します。- パラメータ:
ctx -- その時点のコンテキスト。
point -- 対象のオブジェクト
grn_obj point; int latitude = ((40 * 60 * 60) + (42 * 60) + 46) * 1000; int longitude = ((-74 * 60 * 60) + (0 * 60) + 22) * 1000; GRN_WGS84_GEO_POINT_INIT(&point, 0); GRN_GEO_POINT_SET(&context, &point, latitude, longitude); grn_p_geo_point(&context, (grn_geo_point*)&point);
もし
point
がニューヨークを示す場合、次のように表示されます:[(524290,18) ((0, 8, 44, 290),(0, 0, 0, 18)) [00000000 00000000 00000000 10000000 00000000 00000000 00000001 00001100]]
-
void grn_p_ii_values(grn_ctx *ctx, grn_obj *obj)#
Added in version 4.0.8.
指定した
obj
を調査し、インデックスの値を出力します。- パラメータ:
ctx -- その時点のコンテキスト。
obj -- 対象のオブジェクト
grn_p_ii_values(&context, obj);
もし
obj
がインデックスカラムの場合、次のように表示されます:[ #<"!" elements:[ {status:available, rid:1, sid:1, pos:0, tf:1, weight:0, rest:1}, {status:available, rid:2, sid:1, pos:0, tf:1, weight:0, rest:1} ] >, ...