[Groonga-commit] groonga/groonga at a362cca [master] Add grn_inspect_indented() utility function for debug

Back to archive index

Kouhei Sutou null+****@clear*****
Sun Nov 2 15:42:00 JST 2014


Kouhei Sutou	2014-11-02 15:42:00 +0900 (Sun, 02 Nov 2014)

  New Revision: a362ccaccaea4cd38431341d9c2419261da7e305
  https://github.com/groonga/groonga/commit/a362ccaccaea4cd38431341d9c2419261da7e305

  Message:
    Add grn_inspect_indented() utility function for debug

  Modified files:
    lib/grn_util.h
    lib/util.c

  Modified: lib/grn_util.h (+2 -0)
===================================================================
--- lib/grn_util.h    2014-11-02 14:21:52 +0900 (8daea9a)
+++ lib/grn_util.h    2014-11-02 15:42:00 +0900 (9289c20)
@@ -27,6 +27,8 @@ extern "C" {
 GRN_API grn_rc grn_normalize_offset_and_limit(grn_ctx *ctx, int size, int *offset, int *limit);
 
 GRN_API grn_obj *grn_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj);
+GRN_API grn_obj *grn_inspect_indented(grn_ctx *ctx, grn_obj *buffer,
+                                      grn_obj *obj, const char *indent);
 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);

  Modified: lib/util.c (+39 -0)
===================================================================
--- lib/util.c    2014-11-02 14:21:52 +0900 (e1e28a1)
+++ lib/util.c    2014-11-02 15:42:00 +0900 (1430a58)
@@ -1073,6 +1073,45 @@ grn_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj)
   return buffer;
 }
 
+grn_obj *
+grn_inspect_indented(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj,
+                     const char *indent)
+{
+  grn_obj sub_buffer;
+
+  GRN_TEXT_INIT(&sub_buffer, 0);
+  grn_inspect(ctx, &sub_buffer, obj);
+  {
+    const char *inspected = GRN_TEXT_VALUE(&sub_buffer);
+    size_t inspected_size = GRN_TEXT_LEN(&sub_buffer);
+    size_t i, line_start;
+
+    if (!buffer) {
+      buffer = grn_obj_open(ctx, GRN_BULK, 0, GRN_DB_TEXT);
+    }
+
+    line_start = 0;
+    for (i = 0; i < inspected_size; i++) {
+      if (inspected[i] == '\n') {
+        if (line_start != 0) {
+          GRN_TEXT_PUTS(ctx, buffer, indent);
+        }
+        GRN_TEXT_PUT(ctx, buffer, inspected + line_start, i + 1 - line_start);
+        line_start = i + 1;
+      }
+    }
+    if (line_start != 0) {
+      GRN_TEXT_PUTS(ctx, buffer, indent);
+    }
+    GRN_TEXT_PUT(ctx, buffer,
+                 inspected + line_start,
+                 inspected_size - line_start);
+  }
+  GRN_OBJ_FIN(ctx, &sub_buffer);
+
+  return buffer;
+}
+
 void
 grn_p(grn_ctx *ctx, grn_obj *obj)
 {
-------------- next part --------------
HTML����������������������������...
Descargar 



More information about the Groonga-commit mailing list
Back to archive index