[Groonga-commit] groonga/groonga [master] Added outbuf and output_type to grn_output_* functions.

Back to archive index

null+****@clear***** null+****@clear*****
2010年 6月 21日 (月) 14:25:48 JST


Daijiro MORI	2010-06-21 05:25:48 +0000 (Mon, 21 Jun 2010)

  New Revision: cd2a17c3d3615be057c438bab91f44641326cc96

  Log:
    Added outbuf and output_type to grn_output_* functions.

  Modified files:
    lib/output.c
    lib/output.h
    lib/proc.c
    lib/str.h

  Modified: lib/output.c (+36 -37)
===================================================================
--- lib/output.c    2010-06-20 07:42:47 +0000 (85449c6)
+++ lib/output.c    2010-06-21 05:25:48 +0000 (ca5dfe3)
@@ -15,9 +15,15 @@
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
+#ifndef GROONGA_IN_H
+#include "groonga_in.h"
+#endif /* GROONGA_IN_H */
+
 #include <string.h>
-#include "output.h"
+#include "str.h"
 #include "ql.h"
+#include "db.h"
+#include "output.h"
 
 #define LEVELS (&ctx->impl->levels)
 #define DEPTH (GRN_BULK_VSIZE(LEVELS)>>2)
@@ -27,11 +33,9 @@
 #define INCR_LENGTH (DEPTH ? (GRN_UINT32_VALUE_AT(LEVELS, (DEPTH - 1)) += 2) : 0)
 
 static void
-put_delimiter(grn_ctx *ctx)
+put_delimiter(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type)
 {
   uint32_t level = CURR_LEVEL;
-  grn_obj *outbuf = ctx->impl->outbuf;
-  grn_content_type output_type = ctx->impl->output_type;
   if (level < 2) { return; }
   switch (output_type) {
   case GRN_CONTENT_JSON:
@@ -51,11 +55,10 @@ put_delimiter(grn_ctx *ctx)
 }
 
 void
-grn_output_array_open(grn_ctx *ctx, const char *name, int nelements)
+grn_output_array_open(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
+                      const char *name, int nelements)
 {
-  grn_obj *outbuf = ctx->impl->outbuf;
-  grn_content_type output_type = ctx->impl->output_type;
-  put_delimiter(ctx);
+  put_delimiter(ctx, outbuf, output_type);
   switch (output_type) {
   case GRN_CONTENT_JSON:
     GRN_TEXT_PUTC(ctx, outbuf, '[');
@@ -74,10 +77,8 @@ grn_output_array_open(grn_ctx *ctx, const char *name, int nelements)
 }
 
 void
-grn_output_array_close(grn_ctx *ctx)
+grn_output_array_close(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type)
 {
-  grn_obj *outbuf = ctx->impl->outbuf;
-  grn_content_type output_type = ctx->impl->output_type;
   switch (output_type) {
   case GRN_CONTENT_JSON:
     GRN_TEXT_PUTC(ctx, outbuf, ']');
@@ -100,11 +101,10 @@ grn_output_array_close(grn_ctx *ctx)
 }
 
 void
-grn_output_map_open(grn_ctx *ctx, const char *name, int nelements)
+grn_output_map_open(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
+                    const char *name, int nelements)
 {
-  grn_obj *outbuf = ctx->impl->outbuf;
-  grn_content_type output_type = ctx->impl->output_type;
-  put_delimiter(ctx);
+  put_delimiter(ctx, outbuf, output_type);
   switch (output_type) {
   case GRN_CONTENT_JSON:
     GRN_TEXT_PUTS(ctx, outbuf, "{");
@@ -123,10 +123,8 @@ grn_output_map_open(grn_ctx *ctx, const char *name, int nelements)
 }
 
 void
-grn_output_map_close(grn_ctx *ctx)
+grn_output_map_close(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type)
 {
-  grn_obj *outbuf = ctx->impl->outbuf;
-  grn_content_type output_type = ctx->impl->output_type;
   switch (output_type) {
   case GRN_CONTENT_JSON:
     GRN_TEXT_PUTS(ctx, outbuf, "}");
@@ -149,11 +147,9 @@ grn_output_map_close(grn_ctx *ctx)
 }
 
 void
-grn_output_int32(grn_ctx *ctx, int value)
+grn_output_int32(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type, int value)
 {
-  grn_obj *outbuf = ctx->impl->outbuf;
-  grn_content_type output_type = ctx->impl->output_type;
-  put_delimiter(ctx);
+  put_delimiter(ctx, outbuf, output_type);
   switch (output_type) {
   case GRN_CONTENT_JSON:
     grn_text_itoa(ctx, outbuf, value);
@@ -171,11 +167,9 @@ grn_output_int32(grn_ctx *ctx, int value)
 }
 
 void
-grn_output_int64(grn_ctx *ctx, long long value)
+grn_output_int64(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type, int64_t value)
 {
-  grn_obj *outbuf = ctx->impl->outbuf;
-  grn_content_type output_type = ctx->impl->output_type;
-  put_delimiter(ctx);
+  put_delimiter(ctx, outbuf, output_type);
   switch (output_type) {
   case GRN_CONTENT_JSON:
     grn_text_lltoa(ctx, outbuf, value);
@@ -193,20 +187,19 @@ grn_output_int64(grn_ctx *ctx, long long value)
 }
 
 void
-grn_output_str(grn_ctx *ctx, const char *value)
+grn_output_str(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
+               const char *value, size_t value_len)
 {
-  grn_obj *outbuf = ctx->impl->outbuf;
-  grn_content_type output_type = ctx->impl->output_type;
-  put_delimiter(ctx);
+  put_delimiter(ctx, outbuf, output_type);
   switch (output_type) {
   case GRN_CONTENT_JSON:
-    grn_text_esc(ctx, outbuf, value, strlen(value));
+    grn_text_esc(ctx, outbuf, value, value_len);
     break;
   case GRN_CONTENT_TSV:
-    grn_text_esc(ctx, outbuf, value, strlen(value));
+    grn_text_esc(ctx, outbuf, value, value_len);
     break;
   case GRN_CONTENT_XML:
-    GRN_TEXT_PUTS(ctx, outbuf, value);
+    grn_text_escape_xml(ctx, outbuf, value, value_len);
     break;
   case GRN_CONTENT_NONE:
     break;
@@ -215,11 +208,16 @@ grn_output_str(grn_ctx *ctx, const char *value)
 }
 
 void
-grn_output_obj(grn_ctx *ctx, grn_obj *obj, grn_obj_format *format)
+grn_output_cstr(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
+                const char *value)
+{
+  grn_output_str(ctx, outbuf, output_type, value, strlen(value));
+}
+
+void
+grn_output_obj(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type, grn_obj *obj, grn_obj_format *format)
 {
-  grn_obj *outbuf = ctx->impl->outbuf;
-  grn_content_type output_type = ctx->impl->output_type;
-  put_delimiter(ctx);
+  put_delimiter(ctx, outbuf, output_type);
   switch (output_type) {
   case GRN_CONTENT_JSON:
     grn_text_otoj(ctx, outbuf, obj, format);
@@ -235,3 +233,4 @@ grn_output_obj(grn_ctx *ctx, grn_obj *obj, grn_obj_format *format)
   }
   INCR_LENGTH;
 }
+

  Modified: lib/output.h (+35 -8)
===================================================================
--- lib/output.h    2010-06-20 07:42:47 +0000 (83672ec)
+++ lib/output.h    2010-06-21 05:25:48 +0000 (17ad24a)
@@ -33,14 +33,41 @@
 extern "C" {
 #endif
 
-void grn_output_array_open(grn_ctx *ctx, const char *name, int nelements);
-void grn_output_array_close(grn_ctx *ctx);
-void grn_output_map_open(grn_ctx *ctx, const char *name, int nelements);
-void grn_output_map_close(grn_ctx *ctx);
-void grn_output_int32(grn_ctx *ctx, int value);
-void grn_output_int64(grn_ctx *ctx, long long value);
-void grn_output_str(grn_ctx *ctx, const char *value);
-void grn_output_obj(grn_ctx *ctx, grn_obj *obj, grn_obj_format *format);
+void grn_output_array_open(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
+                           const char *name, int nelements);
+void grn_output_array_close(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type);
+void grn_output_map_open(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
+                         const char *name, int nelements);
+void grn_output_map_close(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type);
+void grn_output_int32(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
+                      int32_t value);
+void grn_output_int64(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
+                      int64_t value);
+void grn_output_cstr(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
+                     const char *value);
+void grn_output_str(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
+                    const char *value, size_t value_len);
+void grn_output_obj(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
+                    grn_obj *obj, grn_obj_format *format);
+
+#define GRN_OUTPUT_ARRAY_OPEN(name,nelements) \
+  (grn_output_array_open(ctx, ctx->impl->outbuf, ctx->impl->output_type, name, nelements))
+#define GRN_OUTPUT_ARRAY_CLOSE() \
+  (grn_output_array_close(ctx, ctx->impl->outbuf, ctx->impl->output_type))
+#define GRN_OUTPUT_MAP_OPEN(name,nelements) \
+  (grn_output_map_open(ctx, ctx->impl->outbuf, ctx->impl->output_type, name, nelements))
+#define GRN_OUTPUT_MAP_CLOSE() \
+  (grn_output_map_close(ctx, ctx->impl->outbuf, ctx->impl->output_type))
+#define GRN_OUTPUT_INT32(value) \
+  (grn_output_int32(ctx, ctx->impl->outbuf, ctx->impl->output_type, value))
+#define GRN_OUTPUT_INT64(value) \
+  (grn_output_int64(ctx, ctx->impl->outbuf, ctx->impl->output_type, value))
+#define GRN_OUTPUT_CSTR(value)\
+  (grn_output_cstr(ctx, ctx->impl->outbuf, ctx->impl->output_type, value))
+#define GRN_OUTPUT_STR(value,value_len)\
+  (grn_output_str(ctx, ctx->impl->outbuf, ctx->impl->output_type, value, value_len))
+#define GRN_OUTPUT_OBJ(obj,format)\
+  (grn_output_obj(ctx, ctx->impl->outbuf, ctx->impl->output_type, obj, format))
 
 #ifdef __cplusplus
 }

  Modified: lib/proc.c (+104 -104)
===================================================================
--- lib/proc.c    2010-06-20 07:42:47 +0000 (ea57f1b)
+++ lib/proc.c    2010-06-21 05:25:48 +0000 (00c3a31)
@@ -165,7 +165,7 @@ grn_select(grn_ctx *ctx, const char *table, unsigned table_len,
       res = table_;
     }
     LAP("select");
-    grn_output_array_open(ctx, "RESULTPAGE", -1);
+    GRN_OUTPUT_ARRAY_OPEN("RESULTPAGE", -1);
     if (res) {
       if (scorer && scorer_len) {
         grn_obj *v;
@@ -202,7 +202,7 @@ grn_select(grn_ctx *ctx, const char *table, unsigned table_len,
               GRN_OBJ_FORMAT_WITH_COLUMN_NAMES|
               GRN_OBJ_FORMAT_XML_ELEMENT_RESULTSET;
             grn_obj_columns(ctx, sorted, output_columns, output_columns_len, &format.columns);
-            grn_output_obj(ctx, sorted, &format);
+            GRN_OUTPUT_OBJ(sorted, &format);
             GRN_OBJ_FORMAT_FIN(ctx, &format);
             grn_table_sort_key_close(ctx, keys, nkeys);
           }
@@ -214,7 +214,7 @@ grn_select(grn_ctx *ctx, const char *table, unsigned table_len,
           GRN_OBJ_FORMAT_WITH_COLUMN_NAMES|
           GRN_OBJ_FORMAT_XML_ELEMENT_RESULTSET;
         grn_obj_columns(ctx, res, output_columns, output_columns_len, &format.columns);
-        grn_output_obj(ctx, res, &format);
+        GRN_OUTPUT_OBJ(res, &format);
         GRN_OBJ_FORMAT_FIN(ctx, &format);
       }
       LAP("output");
@@ -254,7 +254,7 @@ grn_select(grn_ctx *ctx, const char *table, unsigned table_len,
                     grn_obj_columns(ctx, sorted,
                                     drilldown_output_columns, drilldown_output_columns_len,
                                     &format.columns);
-                    grn_output_obj(ctx, sorted, &format);
+                    GRN_OUTPUT_OBJ(sorted, &format);
                     GRN_OBJ_FORMAT_FIN(ctx, &format);
                     grn_obj_unlink(ctx, sorted);
                   }
@@ -268,7 +268,7 @@ grn_select(grn_ctx *ctx, const char *table, unsigned table_len,
                   GRN_OBJ_FORMAT_XML_ELEMENT_NAVIGATIONENTRY;
                 grn_obj_columns(ctx, g.table, drilldown_output_columns,
                                 drilldown_output_columns_len, &format.columns);
-                grn_output_obj(ctx, g.table, &format);
+                GRN_OUTPUT_OBJ(g.table, &format);
                 GRN_OBJ_FORMAT_FIN(ctx, &format);
               }
               grn_obj_unlink(ctx, g.table);
@@ -280,7 +280,7 @@ grn_select(grn_ctx *ctx, const char *table, unsigned table_len,
       }
       if (res != table_) { grn_obj_unlink(ctx, res); }
     }
-    grn_output_array_close(ctx);
+    GRN_OUTPUT_ARRAY_CLOSE();
     if (!ctx->rc && cacheable && cache_key_size <= GRN_TABLE_MAX_KEY_SIZE
         && (!cache || cache_len != 2 || *cache != 'n' || *(cache + 1) != 'o')) {
       grn_cache_update(ctx, cache_key, cache_key_size, outbuf);
@@ -359,7 +359,7 @@ proc_load(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
   if (ctx->impl->loader.stat != GRN_LOADER_END) {
     grn_ctx_set_next_expr(ctx, grn_proc_get_info(ctx, user_data, NULL, NULL, NULL));
   } else {
-    grn_output_int64(ctx, ctx->impl->loader.nrecords);
+    GRN_OUTPUT_INT64(ctx->impl->loader.nrecords);
     if (ctx->impl->loader.table) {
       grn_db_touch(ctx, DB_OBJ(ctx->impl->loader.table)->db);
     }
@@ -373,16 +373,16 @@ proc_status(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
 {
   grn_timeval now;
   grn_timeval_now(ctx, &now);
-  grn_output_map_open(ctx, "STATUS", -1);
-  grn_output_str(ctx, "alloc_count");
-  grn_output_int32(ctx, grn_alloc_count());
-  grn_output_str(ctx, "starttime");
-  grn_output_int32(ctx, grn_starttime.tv_sec);
-  grn_output_str(ctx, "uptime");
-  grn_output_int32(ctx, now.tv_sec - grn_starttime.tv_sec);
-  grn_output_str(ctx, "version");
-  grn_output_str(ctx, grn_get_version());
-  grn_output_map_close(ctx);
+  GRN_OUTPUT_MAP_OPEN("STATUS", -1);
+  GRN_OUTPUT_CSTR("alloc_count");
+  GRN_OUTPUT_INT32(grn_alloc_count());
+  GRN_OUTPUT_CSTR("starttime");
+  GRN_OUTPUT_INT32(grn_starttime.tv_sec);
+  GRN_OUTPUT_CSTR("uptime");
+  GRN_OUTPUT_INT32(now.tv_sec - grn_starttime.tv_sec);
+  GRN_OUTPUT_CSTR("version");
+  GRN_OUTPUT_CSTR(grn_get_version());
+  GRN_OUTPUT_MAP_CLOSE();
   return NULL;
 }
 
@@ -717,32 +717,32 @@ print_columninfo(grn_ctx *ctx, grn_obj *column)
   id = grn_obj_id(ctx, column);
   path = grn_obj_path(ctx, column);
   GRN_TEXT_INIT(&o, 0);
-  grn_output_array_open(ctx, "", -1);
-  grn_output_int64(ctx, id);
+  GRN_OUTPUT_ARRAY_OPEN("", -1);
+  GRN_OUTPUT_INT64(id);
   column2name(ctx, column, &o);
-  grn_output_obj(ctx, &o, NULL);
-  grn_output_str(ctx, path);
-  grn_output_str(ctx, type);
+  GRN_OUTPUT_OBJ(&o, NULL);
+  GRN_OUTPUT_CSTR(path);
+  GRN_OUTPUT_CSTR(type);
   grn_column_create_flags_to_text(ctx, &o, column->header.flags);
-  grn_output_obj(ctx, &o, NULL);
+  GRN_OUTPUT_OBJ(&o, NULL);
   objid2name(ctx, column->header.domain, &o);
-  grn_output_obj(ctx, &o, NULL);
+  GRN_OUTPUT_OBJ(&o, NULL);
   objid2name(ctx, grn_obj_get_range(ctx, column), &o);
-  grn_output_obj(ctx, &o, NULL);
+  GRN_OUTPUT_OBJ(&o, NULL);
   {
     grn_db_obj *obj = (grn_db_obj *)column;
     grn_id *s = obj->source;
     int i = 0, n = obj->source_size / sizeof(grn_id);
-    grn_output_array_open(ctx, "", -1);
+    GRN_OUTPUT_ARRAY_OPEN("", -1);
     for (i = 0; i < n; i++, s++) {
       objid2name(ctx, *s, &o);
-      grn_output_obj(ctx, &o, NULL);
+      GRN_OUTPUT_OBJ(&o, NULL);
     }
-    grn_output_array_close(ctx);
+    GRN_OUTPUT_ARRAY_CLOSE();
 
   }
   //  print_obj_source(ctx, (grn_db_obj *)column);
-  grn_output_array_close(ctx);
+  GRN_OUTPUT_ARRAY_CLOSE();
   GRN_OBJ_FIN(ctx, &o);
   return 1;
 }
@@ -756,41 +756,41 @@ proc_column_list(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_da
     grn_hash *cols;
     if ((cols = grn_hash_create(ctx, NULL, sizeof(grn_id), 0,
                                 GRN_OBJ_TABLE_HASH_KEY|GRN_HASH_TINY))) {
-      grn_output_array_open(ctx, "", -1);
-      grn_output_array_open(ctx, "", -1);
-      grn_output_array_open(ctx, "", -1);
-      grn_output_str(ctx, "id");
-      grn_output_str(ctx, "UInt32");
-      grn_output_array_close(ctx);
-      grn_output_array_open(ctx, "", -1);
-      grn_output_str(ctx, "name");
-      grn_output_str(ctx, "ShortText");
-      grn_output_array_close(ctx);
-      grn_output_array_open(ctx, "", -1);
-      grn_output_str(ctx, "path");
-      grn_output_str(ctx, "ShortText");
-      grn_output_array_close(ctx);
-      grn_output_array_open(ctx, "", -1);
-      grn_output_str(ctx, "type");
-      grn_output_str(ctx, "ShortText");
-      grn_output_array_close(ctx);
-      grn_output_array_open(ctx, "", -1);
-      grn_output_str(ctx, "flags");
-      grn_output_str(ctx, "ShortText");
-      grn_output_array_close(ctx);
-      grn_output_array_open(ctx, "", -1);
-      grn_output_str(ctx, "domain");
-      grn_output_str(ctx, "ShortText");
-      grn_output_array_close(ctx);
-      grn_output_array_open(ctx, "", -1);
-      grn_output_str(ctx, "range");
-      grn_output_str(ctx, "ShortText");
-      grn_output_array_close(ctx);
-      grn_output_array_open(ctx, "", -1);
-      grn_output_str(ctx, "source");
-      grn_output_str(ctx, "ShortText");
-      grn_output_array_close(ctx);
-      grn_output_array_close(ctx);
+      GRN_OUTPUT_ARRAY_OPEN("", -1);
+      GRN_OUTPUT_ARRAY_OPEN("", -1);
+      GRN_OUTPUT_ARRAY_OPEN("", -1);
+      GRN_OUTPUT_CSTR("id");
+      GRN_OUTPUT_CSTR("UInt32");
+      GRN_OUTPUT_ARRAY_CLOSE();
+      GRN_OUTPUT_ARRAY_OPEN("", -1);
+      GRN_OUTPUT_CSTR("name");
+      GRN_OUTPUT_CSTR("ShortText");
+      GRN_OUTPUT_ARRAY_CLOSE();
+      GRN_OUTPUT_ARRAY_OPEN("", -1);
+      GRN_OUTPUT_CSTR("path");
+      GRN_OUTPUT_CSTR("ShortText");
+      GRN_OUTPUT_ARRAY_CLOSE();
+      GRN_OUTPUT_ARRAY_OPEN("", -1);
+      GRN_OUTPUT_CSTR("type");
+      GRN_OUTPUT_CSTR("ShortText");
+      GRN_OUTPUT_ARRAY_CLOSE();
+      GRN_OUTPUT_ARRAY_OPEN("", -1);
+      GRN_OUTPUT_CSTR("flags");
+      GRN_OUTPUT_CSTR("ShortText");
+      GRN_OUTPUT_ARRAY_CLOSE();
+      GRN_OUTPUT_ARRAY_OPEN("", -1);
+      GRN_OUTPUT_CSTR("domain");
+      GRN_OUTPUT_CSTR("ShortText");
+      GRN_OUTPUT_ARRAY_CLOSE();
+      GRN_OUTPUT_ARRAY_OPEN("", -1);
+      GRN_OUTPUT_CSTR("range");
+      GRN_OUTPUT_CSTR("ShortText");
+      GRN_OUTPUT_ARRAY_CLOSE();
+      GRN_OUTPUT_ARRAY_OPEN("", -1);
+      GRN_OUTPUT_CSTR("source");
+      GRN_OUTPUT_CSTR("ShortText");
+      GRN_OUTPUT_ARRAY_CLOSE();
+      GRN_OUTPUT_ARRAY_CLOSE();
       if (grn_table_columns(ctx, table, NULL, 0, (grn_obj *)cols) >= 0) {
         grn_id *key;
         GRN_HASH_EACH(ctx, cols, id, &key, NULL, NULL, {
@@ -801,7 +801,7 @@ proc_column_list(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_da
           }
         });
       }
-      grn_output_array_close(ctx);
+      GRN_OUTPUT_ARRAY_CLOSE();
       grn_hash_close(ctx, cols);
     }
     grn_obj_unlink(ctx, table);
@@ -831,18 +831,18 @@ print_tableinfo(grn_ctx *ctx, grn_obj *table)
   id = grn_obj_id(ctx, table);
   path = grn_obj_path(ctx, table);
   GRN_TEXT_INIT(&o, 0);
-  grn_output_array_open(ctx, "", -1);
-  grn_output_int64(ctx, id);
+  GRN_OUTPUT_ARRAY_OPEN("", -1);
+  GRN_OUTPUT_INT64(id);
   objid2name(ctx, id, &o);
-  grn_output_obj(ctx, &o, NULL);
-  grn_output_str(ctx, path);
+  GRN_OUTPUT_OBJ(&o, NULL);
+  GRN_OUTPUT_CSTR(path);
   grn_table_create_flags_to_text(ctx, &o, table->header.flags);
-  grn_output_obj(ctx, &o, NULL);
+  GRN_OUTPUT_OBJ(&o, NULL);
   objid2name(ctx, table->header.domain, &o);
-  grn_output_obj(ctx, &o, NULL);
+  GRN_OUTPUT_OBJ(&o, NULL);
   objid2name(ctx, grn_obj_get_range(ctx, table), &o);
-  grn_output_obj(ctx, &o, NULL);
-  grn_output_array_close(ctx);
+  GRN_OUTPUT_OBJ(&o, NULL);
+  GRN_OUTPUT_ARRAY_CLOSE();
   GRN_OBJ_FIN(ctx, &o);
   return 1;
 }
@@ -853,33 +853,33 @@ proc_table_list(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_dat
   grn_table_cursor *cur;
   if ((cur = grn_table_cursor_open(ctx, ctx->impl->db, NULL, 0, NULL, 0, 0, -1, 0))) {
     grn_id id;
-    grn_output_array_open(ctx, "", -1);
-    grn_output_array_open(ctx, "", -1);
-    grn_output_array_open(ctx, "", -1);
-    grn_output_str(ctx, "id");
-    grn_output_str(ctx, "UInt32");
-    grn_output_array_close(ctx);
-    grn_output_array_open(ctx, "", -1);
-    grn_output_str(ctx, "name");
-    grn_output_str(ctx, "ShortText");
-    grn_output_array_close(ctx);
-    grn_output_array_open(ctx, "", -1);
-    grn_output_str(ctx, "path");
-    grn_output_str(ctx, "ShortText");
-    grn_output_array_close(ctx);
-    grn_output_array_open(ctx, "", -1);
-    grn_output_str(ctx, "flags");
-    grn_output_str(ctx, "ShortText");
-    grn_output_array_close(ctx);
-    grn_output_array_open(ctx, "", -1);
-    grn_output_str(ctx, "domain");
-    grn_output_str(ctx, "ShortText");
-    grn_output_array_close(ctx);
-    grn_output_array_open(ctx, "", -1);
-    grn_output_str(ctx, "range");
-    grn_output_str(ctx, "ShortText");
-    grn_output_array_close(ctx);
-    grn_output_array_close(ctx);
+    GRN_OUTPUT_ARRAY_OPEN("", -1);
+    GRN_OUTPUT_ARRAY_OPEN("", -1);
+    GRN_OUTPUT_ARRAY_OPEN("", -1);
+    GRN_OUTPUT_CSTR("id");
+    GRN_OUTPUT_CSTR("UInt32");
+    GRN_OUTPUT_ARRAY_CLOSE();
+    GRN_OUTPUT_ARRAY_OPEN("", -1);
+    GRN_OUTPUT_CSTR("name");
+    GRN_OUTPUT_CSTR("ShortText");
+    GRN_OUTPUT_ARRAY_CLOSE();
+    GRN_OUTPUT_ARRAY_OPEN("", -1);
+    GRN_OUTPUT_CSTR("path");
+    GRN_OUTPUT_CSTR("ShortText");
+    GRN_OUTPUT_ARRAY_CLOSE();
+    GRN_OUTPUT_ARRAY_OPEN("", -1);
+    GRN_OUTPUT_CSTR("flags");
+    GRN_OUTPUT_CSTR("ShortText");
+    GRN_OUTPUT_ARRAY_CLOSE();
+    GRN_OUTPUT_ARRAY_OPEN("", -1);
+    GRN_OUTPUT_CSTR("domain");
+    GRN_OUTPUT_CSTR("ShortText");
+    GRN_OUTPUT_ARRAY_CLOSE();
+    GRN_OUTPUT_ARRAY_OPEN("", -1);
+    GRN_OUTPUT_CSTR("range");
+    GRN_OUTPUT_CSTR("ShortText");
+    GRN_OUTPUT_ARRAY_CLOSE();
+    GRN_OUTPUT_ARRAY_CLOSE();
     while ((id = grn_table_cursor_next(ctx, cur)) != GRN_ID_NIL) {
       grn_obj *o;
       if ((o = grn_ctx_at(ctx, id))) {
@@ -887,7 +887,7 @@ proc_table_list(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_dat
         grn_obj_unlink(ctx, o);
       }
     }
-    grn_output_array_close(ctx);
+    GRN_OUTPUT_ARRAY_CLOSE();
     grn_table_cursor_close(ctx, cur);
   }
   return NULL;
@@ -1084,7 +1084,7 @@ proc_set(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
                         GRN_TEXT_VALUE(VAR(4)),
                         GRN_TEXT_LEN(VAR(4)), &format.columns);
         format.flags = 0 /* GRN_OBJ_FORMAT_WITH_COLUMN_NAMES */;
-        grn_output_obj(ctx, &obj, &format);
+        GRN_OUTPUT_OBJ(&obj, &format);
         GRN_OBJ_FORMAT_FIN(ctx, &format);
       } else {
         /* todo : error handling */
@@ -1204,7 +1204,7 @@ proc_get(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
     GRN_RECORD_SET(ctx, &obj, id);
     grn_obj_columns(ctx, table, GRN_TEXT_VALUE(VAR(2)), GRN_TEXT_LEN(VAR(2)), &format.columns);
     format.flags = 0 /* GRN_OBJ_FORMAT_WITH_COLUMN_NAMES */;
-    grn_output_obj(ctx, &obj, &format);
+    GRN_OUTPUT_OBJ(&obj, &format);
     GRN_OBJ_FORMAT_FIN(ctx, &format);
   }
   return NULL;
@@ -1778,7 +1778,7 @@ static grn_obj *
 proc_cache_limit(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
 {
   uint32_t *mp = grn_cach_max_nentries();
-  grn_output_int64(ctx, *mp);
+  GRN_OUTPUT_INT64(*mp);
   if (GRN_TEXT_LEN(VAR(0))) {
     const char *rest;
     uint32_t max = grn_atoui(GRN_TEXT_VALUE(VAR(0)),

  Modified: lib/str.h (+2 -0)
===================================================================
--- lib/str.h    2010-06-20 07:42:47 +0000 (2030e46)
+++ lib/str.h    2010-06-21 05:25:48 +0000 (8614b81)
@@ -97,6 +97,8 @@ grn_str *grn_str_open_(grn_ctx *ctx, const char *str, unsigned int str_len, int
   }\
 }
 
+grn_rc grn_text_ulltoa(grn_ctx *ctx, grn_obj *buf, unsigned long long int i);
+
 GRN_API const char *grn_text_cgidec(grn_ctx *ctx, grn_obj *buf,
                                     const char *p, const char *e, char d);
 




Groonga-commit メーリングリストの案内
Back to archive index