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));

もし objTABLE_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));

もし objTABLE_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_DEFAULTGRN_ENC_NONEGRN_ENC_EUC_JPGRN_ENC_UTF8GRN_ENC_SJISGRN_ENC_LATIN1GRN_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}
    ]
  >,
  ...