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