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);