1 /* -*- c-basic-offset: 2 -*- */ 2 /* 3 Copyright(C) 2009-2018 Brazil 4 Copyright(C) 2020-2021 Sutou Kouhei <kou@clear-code.com> 5 6 This library is free software; you can redistribute it and/or 7 modify it under the terms of the GNU Lesser General Public 8 License version 2.1 as published by the Free Software Foundation. 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.selector; 20 21 22 private static import groonga_d.groonga; 23 24 extern(C): 25 nothrow @nogc: 26 27 alias grn_selector_func = groonga_d.groonga.grn_rc function(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* table, groonga_d.groonga.grn_obj* index, int nargs, groonga_d.groonga.grn_obj** args, groonga_d.groonga.grn_obj* res, groonga_d.groonga.grn_operator op); 28 29 //GRN_API 30 groonga_d.groonga.grn_rc grn_proc_set_selector(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* proc, grn_selector_func selector); 31 32 //GRN_API 33 groonga_d.groonga.grn_rc grn_proc_set_selector_operator(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* proc, groonga_d.groonga.grn_operator selector_op); 34 35 //GRN_API 36 groonga_d.groonga.grn_operator grn_proc_get_selector_operator(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* proc); 37 38 struct _grn_selector_data; 39 alias grn_selector_data = _grn_selector_data; 40 41 //GRN_API 42 grn_selector_data* grn_selector_data_get(groonga_d.groonga.grn_ctx* ctx); 43 44 //GRN_API 45 groonga_d.groonga.grn_obj* grn_selector_data_get_selector(groonga_d.groonga.grn_ctx* ctx, grn_selector_data* data); 46 47 //GRN_API 48 groonga_d.groonga.grn_obj* grn_selector_data_get_expr(groonga_d.groonga.grn_ctx* ctx, grn_selector_data* data); 49 50 //GRN_API 51 groonga_d.groonga.grn_obj* grn_selector_data_get_table(groonga_d.groonga.grn_ctx* ctx, grn_selector_data* data); 52 53 //GRN_API 54 groonga_d.groonga.grn_obj* grn_selector_data_get_index(groonga_d.groonga.grn_ctx* ctx, grn_selector_data* data); 55 56 //GRN_API 57 groonga_d.groonga.grn_obj** grn_selector_data_get_args(groonga_d.groonga.grn_ctx* ctx, grn_selector_data* data, size_t* n_args); 58 59 //GRN_API 60 float grn_selector_data_get_weight_factor(groonga_d.groonga.grn_ctx* ctx, grn_selector_data* data); 61 62 //GRN_API 63 groonga_d.groonga.grn_obj* grn_selector_data_get_result_set(groonga_d.groonga.grn_ctx* ctx, grn_selector_data* data); 64 65 //GRN_API 66 groonga_d.groonga.grn_operator grn_selector_data_get_op(groonga_d.groonga.grn_ctx* ctx, grn_selector_data* data); 67 68 //GRN_API 69 groonga_d.groonga.grn_rc grn_selector_data_parse_score_column_option_value(groonga_d.groonga.grn_ctx* ctx, const (char)* name, groonga_d.groonga.grn_obj* value, const (char)* tag, void* data); 70 71 //GRN_API 72 groonga_d.groonga.grn_rc grn_selector_data_parse_tags_option_value(groonga_d.groonga.grn_ctx* ctx, const (char)* name, groonga_d.groonga.grn_obj* value, const (char)* tag, void* data); 73 74 //GRN_API 75 groonga_d.groonga.grn_rc grn_selector_data_parse_tags_column_option_value(groonga_d.groonga.grn_ctx* ctx, const (char)* name, groonga_d.groonga.grn_obj* value, const (char)* tag, void* data); 76 77 /+ 78 #define grn_selector_data_parse_options(ctx, data, options, tag, ...) grn_proc_options_parse((ctx), (options), (tag), "score_column", GRN_PROC_OPTION_VALUE_FUNC, grn_selector_data_parse_score_column_option_value, (data), "tags", GRN_PROC_OPTION_VALUE_FUNC, grn_selector_data_parse_tags_option_value, (data), "tags_column", GRN_PROC_OPTION_VALUE_FUNC, grn_selector_data_parse_tags_column_option_value, (data), __VA_ARGS__) 79 +/ 80 81 //GRN_API 82 bool grn_selector_data_have_score_column(groonga_d.groonga.grn_ctx* ctx, grn_selector_data* data); 83 84 //GRN_API 85 bool grn_selector_data_have_tags_column(groonga_d.groonga.grn_ctx* ctx, grn_selector_data* data); 86 87 //GRN_API 88 groonga_d.groonga.grn_rc grn_selector_data_on_token_found(groonga_d.groonga.grn_ctx* ctx, grn_selector_data* data, groonga_d.groonga.grn_obj* index, groonga_d.groonga.grn_id token_id, double additional_score);