[Groonga-commit] groonga/groonga [master] Support GRN_STRING inspection

アーカイブの一覧に戻る

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����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る