1 /*
2   Copyright(C) 2009-2018 Brazil
3   Copyright(C) 2018 Kouhei Sutou <kou@clear-code.com>
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 as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9 
10   This library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14 
15   You should have received a copy of the GNU Lesser General Public
16   License along with this library; if not, write to the Free Software
17   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18 */
19 module groonga_d.output;
20 
21 
22 private static import groonga_d.groonga;
23 
24 extern(C):
25 nothrow @nogc:
26 
27 alias grn_obj_format = _grn_obj_format;
28 
29 enum GRN_OBJ_FORMAT_WITH_COLUMN_NAMES = 0x01 << 0;
30 enum GRN_OBJ_FORMAT_AS_ARRAY = 0x01 << 3;
31 /* Deprecated since 4.0.1. It will be removed at 5.0.0.
32    Use GRN_OBJ_FORMAT_AS_ARRAY instead.*/
33 enum GRN_OBJ_FORMAT_ASARRAY = GRN_OBJ_FORMAT_AS_ARRAY;
34 enum GRN_OBJ_FORMAT_WITH_WEIGHT = 0x01 << 4;
35 /* Format weight as float32.
36    Since 10.0.3 */
37 enum GRN_OBJ_FORMAT_WEIGHT_FLOAT32 = 0x01 << 5;
38 /* Call grn_ctx_output_flush() internally for each 1024 records in a table.
39    The "1024" value may be changed.
40    Since 10.0.3 */
41 enum GRN_OBJ_FORMAT_AUTO_FLUSH = 0x01 << 6;
42 
43 struct _grn_obj_format
44 {
45 	groonga_d.groonga.grn_obj columns;
46 	const (void)* min;
47 	const (void)* max;
48 	uint min_size;
49 	uint max_size;
50 	int nhits;
51 	int offset;
52 	int limit;
53 	int hits_offset;
54 	uint flags;
55 	groonga_d.groonga.grn_obj* expression;
56 }
57 
58 //GRN_API
59 groonga_d.groonga.grn_rc grn_output_range_normalize(groonga_d.groonga.grn_ctx* ctx, int size, int* offset, int* limit);
60 
61 /+
62 #define GRN_OBJ_FORMAT_INIT(format, format_nhits, format_offset, format_limit, format_hits_offset) GRN_PTR_INIT(&(format)->columns, groonga_d.groonga.GRN_OBJ_VECTOR, groonga_d.groonga.GRN_ID_NIL); (format)->nhits = (format_nhits); (format)->offset = (format_offset); (format)->limit = (format_limit); (format)->hits_offset = (format_hits_offset); (format)->flags = 0; (format)->expression = null;
63 +/
64 /* Deprecated since 10.0.0. Use grn_obj_format_fin() instead. */
65 alias GRN_OBJ_FORMAT_FIN = grn_obj_format_fin;
66 
67 //GRN_API
68 groonga_d.groonga.grn_rc grn_obj_format_fin(groonga_d.groonga.grn_ctx* ctx, grn_obj_format* format);
69 
70 //GRN_API
71 void grn_output_obj(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type, groonga_d.groonga.grn_obj* obj, grn_obj_format* format);
72 
73 //GRN_API
74 void grn_output_envelope(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_rc rc, groonga_d.groonga.grn_obj* head, groonga_d.groonga.grn_obj* body_, groonga_d.groonga.grn_obj* foot, const (char)* file, int line);
75 
76 //GRN_API
77 void grn_output_envelope_open(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* output);
78 
79 //GRN_API
80 void grn_output_envelope_close(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* output, groonga_d.groonga.grn_rc rc, const (char)* file, int line);
81 
82 //GRN_API
83 void grn_output_array_open(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type, const (char)* name, int n_elements);
84 
85 //GRN_API
86 void grn_output_array_close(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type);
87 
88 //GRN_API
89 void grn_output_map_open(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type, const (char)* name, int n_elements);
90 
91 //GRN_API
92 void grn_output_map_close(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type);
93 
94 //GRN_API
95 void grn_output_null(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type);
96 
97 //GRN_API
98 void grn_output_int32(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type, int value);
99 
100 //GRN_API
101 void grn_output_uint32(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type, uint value);
102 
103 //GRN_API
104 void grn_output_int64(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type, long value);
105 
106 //GRN_API
107 void grn_output_uint64(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type, ulong value);
108 
109 //GRN_API
110 void grn_output_float32(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type, float value);
111 
112 //GRN_API
113 void grn_output_float(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type, double value);
114 
115 //GRN_API
116 void grn_output_cstr(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type, const (char)* value);
117 
118 //GRN_API
119 void grn_output_str(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type, const (char)* value, size_t value_len);
120 
121 //GRN_API
122 void grn_output_bool(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* outbuf, groonga_d.groonga.grn_content_type output_type, groonga_d.groonga.grn_bool value);
123 
124 //GRN_API
125 void grn_ctx_output_flush(groonga_d.groonga.grn_ctx* ctx, int flags);
126 
127 //GRN_API
128 void grn_ctx_output_array_open(groonga_d.groonga.grn_ctx* ctx, const (char)* name, int nelements);
129 
130 //GRN_API
131 void grn_ctx_output_array_close(groonga_d.groonga.grn_ctx* ctx);
132 
133 //GRN_API
134 void grn_ctx_output_map_open(groonga_d.groonga.grn_ctx* ctx, const (char)* name, int nelements);
135 
136 //GRN_API
137 void grn_ctx_output_map_close(groonga_d.groonga.grn_ctx* ctx);
138 
139 //GRN_API
140 void grn_ctx_output_null(groonga_d.groonga.grn_ctx* ctx);
141 
142 //GRN_API
143 void grn_ctx_output_int32(groonga_d.groonga.grn_ctx* ctx, int value);
144 
145 //GRN_API
146 void grn_ctx_output_uint32(groonga_d.groonga.grn_ctx* ctx, uint value);
147 
148 //GRN_API
149 void grn_ctx_output_int64(groonga_d.groonga.grn_ctx* ctx, long value);
150 
151 //GRN_API
152 void grn_ctx_output_uint64(groonga_d.groonga.grn_ctx* ctx, ulong value);
153 
154 //GRN_API
155 void grn_ctx_output_float32(groonga_d.groonga.grn_ctx* ctx, float value);
156 
157 //GRN_API
158 void grn_ctx_output_float(groonga_d.groonga.grn_ctx* ctx, double value);
159 
160 //GRN_API
161 void grn_ctx_output_cstr(groonga_d.groonga.grn_ctx* ctx, const (char)* value);
162 
163 //GRN_API
164 void grn_ctx_output_str(groonga_d.groonga.grn_ctx* ctx, const (char)* value, uint value_len);
165 
166 //GRN_API
167 void grn_ctx_output_bool(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_bool value);
168 
169 //GRN_API
170 void grn_ctx_output_obj(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* value, grn_obj_format* format);
171 
172 //GRN_API
173 void grn_ctx_output_result_set_open(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* result_set, grn_obj_format* format, uint n_additional_elements);
174 
175 //GRN_API
176 void grn_ctx_output_result_set_close(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* result_set, grn_obj_format* format);
177 
178 //GRN_API
179 void grn_ctx_output_result_set(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* result_set, grn_obj_format* format);
180 
181 //GRN_API
182 void grn_ctx_output_table_columns(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* table, grn_obj_format* format);
183 
184 //GRN_API
185 void grn_ctx_output_table_records_open(groonga_d.groonga.grn_ctx* ctx, int n_records);
186 
187 //GRN_API
188 void grn_ctx_output_table_records_content(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* table, grn_obj_format* format);
189 
190 //GRN_API
191 void grn_ctx_output_table_records_close(groonga_d.groonga.grn_ctx* ctx);
192 
193 //GRN_API
194 void grn_ctx_output_table_records(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* table, grn_obj_format* format);
195 
196 //GRN_API
197 groonga_d.groonga.grn_content_type grn_ctx_get_output_type(groonga_d.groonga.grn_ctx* ctx);
198 
199 //GRN_API
200 groonga_d.groonga.grn_rc grn_ctx_set_output_type(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_content_type type);
201 
202 //GRN_API
203 const (char)* grn_ctx_get_mime_type(groonga_d.groonga.grn_ctx* ctx);
204 
205 /* obsolete */
206 
207 //GRN_API
208 groonga_d.groonga.grn_rc grn_text_otoj(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* bulk, groonga_d.groonga.grn_obj* obj, grn_obj_format* format);