1 /* -*- c-basic-offset: 2 -*- */
2 /*
3   Copyright(C) 2010-2016 Brazil
4 
5   This library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License version 2.1 as published by the Free Software Foundation.
8 
9   This library is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Lesser General Public License for more details.
13 
14   You should have received a copy of the GNU Lesser General Public
15   License along with this library; if not, write to the Free Software
16   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1335  USA
17 */
18 
19 #pragma once
20 
21 #include "grn.h"
22 #include "grn_ctx.h"
23 #include "grn_store.h"
24 #include "grn_ctx_impl.h"
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 GRN_API void grn_output_array_open(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
31                            const char *name, int nelements);
32 GRN_API void grn_output_array_close(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type);
33 GRN_API void grn_output_map_open(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
34                                  const char *name, int nelements);
35 GRN_API void grn_output_map_close(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type);
36 GRN_API void grn_output_null(grn_ctx *ctx, grn_obj *outbuf,
37                              grn_content_type output_type);
38 void grn_output_int32(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
39                       int32_t value);
40 GRN_API void grn_output_int64(grn_ctx *ctx, grn_obj *outbuf,
41                               grn_content_type output_type,
42                               int64_t value);
43 GRN_API void grn_output_uint64(grn_ctx *ctx, grn_obj *outbuf,
44                                grn_content_type output_type,
45                                uint64_t value);
46 void grn_output_float(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
47                       double value);
48 GRN_API void grn_output_cstr(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
49                              const char *value);
50 GRN_API void grn_output_str(grn_ctx *ctx, grn_obj *outbuf,
51                             grn_content_type output_type,
52                             const char *value, size_t value_len);
53 GRN_API void grn_output_bool(grn_ctx *ctx, grn_obj *outbuf,
54                              grn_content_type output_type,
55                              grn_bool value);
56 
57 GRN_API void grn_output_result_set_open(grn_ctx *ctx,
58                                         grn_obj *outbuf,
59                                         grn_content_type output_type,
60                                         grn_obj *result_set,
61                                         grn_obj_format *format,
62                                         uint32_t n_additional_elements);
63 GRN_API void grn_output_result_set_close(grn_ctx *ctx,
64                                          grn_obj *outbuf,
65                                          grn_content_type output_type,
66                                          grn_obj *result_set,
67                                          grn_obj_format *format);
68 GRN_API void grn_output_result_set(grn_ctx *ctx,
69                                    grn_obj *outbuf,
70                                    grn_content_type output_type,
71                                    grn_obj *result_set,
72                                    grn_obj_format *format);
73 GRN_API void grn_output_table_columns(grn_ctx *ctx,
74                                       grn_obj *outbuf,
75                                       grn_content_type output_type,
76                                       grn_obj *table,
77                                       grn_obj_format *format);
78 GRN_API void grn_output_table_records(grn_ctx *ctx,
79                                       grn_obj *outbuf,
80                                       grn_content_type output_type,
81                                       grn_obj *table,
82                                       grn_obj_format *format);
83 
84 grn_rc grn_output_format_set_columns(grn_ctx *ctx, grn_obj_format *format,
85                                      grn_obj *table,
86                                      const char *columns, int columns_len);
87 
88 #define GRN_OUTPUT_ARRAY_OPEN(name,nelements) \
89   (grn_ctx_output_array_open(ctx, name, nelements))
90 #define GRN_OUTPUT_ARRAY_CLOSE() \
91   (grn_ctx_output_array_close(ctx))
92 #define GRN_OUTPUT_MAP_OPEN(name,nelements) \
93   (grn_ctx_output_map_open(ctx, name, nelements))
94 #define GRN_OUTPUT_MAP_CLOSE() \
95   (grn_ctx_output_map_close(ctx))
96 #define GRN_OUTPUT_NULL() \
97   (grn_ctx_output_null(ctx))
98 #define GRN_OUTPUT_INT32(value) \
99   (grn_ctx_output_int32(ctx, value))
100 #define GRN_OUTPUT_INT64(value) \
101   (grn_ctx_output_int64(ctx, value))
102 #define GRN_OUTPUT_UINT64(value) \
103   (grn_ctx_output_uint64(ctx, value))
104 #define GRN_OUTPUT_FLOAT(value) \
105   (grn_ctx_output_float(ctx, value))
106 #define GRN_OUTPUT_CSTR(value)\
107   (grn_ctx_output_cstr(ctx, value))
108 #define GRN_OUTPUT_STR(value,value_len)\
109   (grn_ctx_output_str(ctx, value, value_len))
110 #define GRN_OUTPUT_BOOL(value)\
111   (grn_ctx_output_bool(ctx, value))
112 #define GRN_OUTPUT_OBJ(obj,format)\
113   (grn_ctx_output_obj(ctx, obj, format))
114 #define GRN_OUTPUT_RESULT_SET_OPEN(result_set,format,n_additional_elements)\
115   (grn_ctx_output_result_set_open(ctx, result_set, format, n_additional_elements))
116 #define GRN_OUTPUT_RESULT_SET_CLOSE(result_set,format)\
117   (grn_ctx_output_result_set_close(ctx, result_set, format))
118 #define GRN_OUTPUT_RESULT_SET(result_set,format,n_additional_elements)\
119   (grn_ctx_output_result_set(ctx, result_set, format, n_additional_elements))
120 #define GRN_OUTPUT_TABLE_COLUMNS(table,format)\
121   (grn_ctx_output_table_columns(ctx, table, format))
122 #define GRN_OUTPUT_TABLE_RECORDS(table,format)\
123   (grn_ctx_output_table_records(ctx, table, format))
124 
125 #ifdef __cplusplus
126 }
127 #endif
128