7.25.17. grn_inspect

7.25.17.1. Summary

There are two kind of functions to inspect grn_obj. One is grn_inspect function, The other is grn_p function.

Here is the list of grn_inspect function series. It sets inspected text into specified object.

Here is the list of grn_p function series. It prints inspected text into console.

7.25.17.2. Example

Here is an example which inspects specified target object.

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.25.17.3. Reference

grn_obj *grn_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj)

New in version 4.0.8.

Inspect specified target obj object.

Note

A table is specified and it’s table type is TABLE_PAT_KEY, all keys are shown. If you do not want to this behavior, use grn_inspect_limited() instead.

Parameters
  • ctx – The context object

  • buffer – The buffer object which is inspected text will be stored.

  • obj – The inspect target object.

Returns

buffer object which is inspected text is set.

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

If obj is TABLE_PAT_KEY table, it prints like the following:

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

New in version 4.0.8.

Inspect specified target obj object.

Note

indent is only added if inspected text contains newline (inspected text must be multiple lines).

Parameters
  • ctx – The context object

  • buffer – The buffer object which is inspected text will be stored.

  • obj – The inspect target object.

  • indent – The pre-pended indentation text.

Returns

buffer object which is inspected text is set with indent.

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

If obj is TABLE_PAT_KEY table, it prints like the following:

***#<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)

New in version 7.0.0.

Inspect specified target obj object.

Note

If inspected text is too long, it will be truncated.

Parameters
  • ctx – The context object

  • buffer – The buffer object which is inspected(truncated) text will be stored.

  • obj – The inspect target object.

Returns

buffer object which is object detail is set. If inspected text is longer than 64 characters, inspected text is truncated to it. Otherwise, inspected text will not be truncated.

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

Even though if obj is TABLE_PAT_KEY table, it prints truncated result like the following:

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

New in version 4.0.8.

Inspect specified target obj object.

Parameters
  • ctx – The context object

  • buffer – The buffer object which is object name will be stored.

  • obj – The inspect target object.

Returns

buffer object which is name of object is set. If target object is nil, (nil) is set to buffer, if target object is internally used object, (anonymouse: ID) is set to buffer.

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

Specified object name is printed like this:

Users
grn_obj *grn_inspect_encoding(grn_ctx *ctx, grn_obj *buffer, grn_encoding encoding)

New in version 4.0.8.

Inspect specified target obj object.

Parameters
  • ctx – The context object

  • buffer – The buffer object which is encoding name will be stored.

  • encoding – The inspect target encoding. encoding must be GRN_ENC_DEFAULT, GRN_ENC_NONE, GRN_ENC_EUC_JP, GRN_ENC_UTF8, GRN_ENC_SJIS, GRN_ENC_LATIN1 or GRN_ENC_KOI8R

Returns

buffer object which is encoding name is set. If invalid encoding is given, (unknown: ENCODING) is set to 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));

Specified encoding name is printed like the following:

UTF-8
grn_obj *grn_inspect_type(grn_ctx *ctx, grn_obj *buffer, unsigned char type)

New in version 4.0.8.

Inspect specified target obj object.

Parameters
  • ctx – The context object

  • buffer – The buffer object which is type name will be stored.

  • type – The inspect target type.

Returns

buffer object which is type name is set. If invalid type is given, (unknown: TYPE_IN_HEX) is set to 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));

If obj is builtin type, type name is printed like the following:

GRN_TYPE
grn_obj *grn_inspect_query_log_flags(grn_ctx *ctx, grn_obj *buffer, unsigned int flags)

New in version 7.0.4.

Inspect specified target flag.

Parameters
  • ctx – The context object

  • buffer – The buffer object which is flag name will be stored.

  • flags – The inspect target type.

Returns

buffer object which is flag name is set. If invalid flags is given, empty string is set to 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));

The query logger flags are printed like the following:

COMMAND|RESULT_CODE|DESTINATION|CACHE|SIZE|SCORE
void grn_p(grn_ctx *ctx, grn_obj *obj)

New in version 4.0.8.

Inspect specified target obj object. It prints inspected text.

Parameters
  • ctx – The context object

  • obj – The inspect target object.

grn_p(&context, &buffer, obj);

If obj is ShortText, it prints like the following:

#<type ShortText size:4096 type:var_size>
void grn_p_geo_point(grn_ctx *ctx, grn_geo_point *point)

New in version 4.0.8.

Inspect specified target obj object. It prints inspected geo point text.

Parameters
  • ctx – The context object

  • point – The inspect target object.

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

If point indicates New York City, it prints like the following:

[(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)

New in version 4.0.8.

Inspect specified target obj object. It prints inspected index values.

Parameters
  • ctx – The context object

  • obj – The inspect target object.

grn_p_ii_values(&context, obj);

If obj is an index column, it prints like the following:

[
  #<"!"
    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}
    ]
  >,
  ...