1 /*
2   Copyright(C) 2009-2016 Brazil
3 
4   This library is free software; you can redistribute it and/or
5   modify it under the terms of the GNU Lesser General Public
6   License as published by the Free Software Foundation; either
7   version 2.1 of the License, or (at your option) any later version.
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-1301  USA
17 */
18 module groonga_d.pat;
19 
20 
21 private static import groonga_d.groonga;
22 private static import groonga_d.hash;
23 
24 extern(C):
25 nothrow @nogc:
26 
27 /+
28 #include "hash.h"
29 +/
30 
31 extern struct _grn_pat;
32 extern struct _grn_pat_cursor;
33 
34 alias grn_pat = _grn_pat;
35 alias grn_pat_cursor = _grn_pat_cursor;
36 alias grn_pat_scan_hit = groonga_d.groonga._grn_table_scan_hit;
37 
38 //GRN_API
39 grn_pat* grn_pat_create(groonga_d.groonga.grn_ctx* ctx, const (char)* path, uint key_size, uint value_size, uint flags);
40 
41 //GRN_API
42 grn_pat* grn_pat_open(groonga_d.groonga.grn_ctx* ctx, const (char)* path);
43 
44 //GRN_API
45 groonga_d.groonga.grn_rc grn_pat_close(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat);
46 
47 //GRN_API
48 groonga_d.groonga.grn_rc grn_pat_remove(groonga_d.groonga.grn_ctx* ctx, const (char)* path);
49 
50 //GRN_API
51 groonga_d.groonga.grn_id grn_pat_get(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, const (void)* key, uint key_size, void** value);
52 
53 //GRN_API
54 groonga_d.groonga.grn_id grn_pat_add(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, const (void)* key, uint key_size, void** value, int* added);
55 
56 //GRN_API
57 int grn_pat_get_key(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, groonga_d.groonga.grn_id id, void* keybuf, int bufsize);
58 
59 //GRN_API
60 int grn_pat_get_key2(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, groonga_d.groonga.grn_id id, groonga_d.groonga.grn_obj* bulk);
61 
62 //GRN_API
63 int grn_pat_get_value(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, groonga_d.groonga.grn_id id, void* valuebuf);
64 
65 //GRN_API
66 groonga_d.groonga.grn_rc grn_pat_set_value(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, groonga_d.groonga.grn_id id, const (void)* value, int flags);
67 
68 //GRN_API
69 groonga_d.groonga.grn_rc grn_pat_delete_by_id(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, groonga_d.groonga.grn_id id, groonga_d.groonga.grn_table_delete_optarg* optarg);
70 
71 //GRN_API
72 groonga_d.groonga.grn_rc grn_pat_delete(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, const (void)* key, uint key_size, groonga_d.groonga.grn_table_delete_optarg* optarg);
73 
74 //GRN_API
75 int grn_pat_delete_with_sis(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, groonga_d.groonga.grn_id id, groonga_d.groonga.grn_table_delete_optarg* optarg);
76 
77 //GRN_API
78 int grn_pat_scan(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, const (char)* str, uint str_len, grn_pat_scan_hit* sh, uint sh_size, const (char)** rest);
79 
80 //GRN_API
81 groonga_d.groonga.grn_rc grn_pat_prefix_search(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, const (void)* key, uint key_size, groonga_d.hash.grn_hash* h);
82 
83 //GRN_API
84 groonga_d.groonga.grn_rc grn_pat_suffix_search(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, const (void)* key, uint key_size, groonga_d.hash.grn_hash* h);
85 
86 //GRN_API
87 groonga_d.groonga.grn_id grn_pat_lcp_search(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, const (void)* key, uint key_size);
88 
89 //GRN_API
90 uint grn_pat_size(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat);
91 
92 //GRN_API
93 grn_pat_cursor* grn_pat_cursor_open(groonga_d.groonga.grn_ctx* ctx, grn_pat* pat, const (void)* min, uint min_size, const (void)* max, uint max_size, int offset, int limit, int flags);
94 
95 //GRN_API
96 groonga_d.groonga.grn_id grn_pat_cursor_next(groonga_d.groonga.grn_ctx* ctx, grn_pat_cursor* c);
97 
98 //GRN_API
99 void grn_pat_cursor_close(groonga_d.groonga.grn_ctx* ctx, grn_pat_cursor* c);
100 
101 //GRN_API
102 int grn_pat_cursor_get_key(groonga_d.groonga.grn_ctx* ctx, grn_pat_cursor* c, void** key);
103 
104 //GRN_API
105 int grn_pat_cursor_get_value(groonga_d.groonga.grn_ctx* ctx, grn_pat_cursor* c, void** value);
106 
107 //GRN_API
108 int grn_pat_cursor_get_key_value(groonga_d.groonga.grn_ctx* ctx, grn_pat_cursor* c, void** key, uint* key_size, void** value);
109 
110 //GRN_API
111 groonga_d.groonga.grn_rc grn_pat_cursor_set_value(groonga_d.groonga.grn_ctx* ctx, grn_pat_cursor* c, const (void)* value, int flags);
112 
113 //GRN_API
114 groonga_d.groonga.grn_rc grn_pat_cursor_delete(groonga_d.groonga.grn_ctx* ctx, grn_pat_cursor* c, groonga_d.groonga.grn_table_delete_optarg* optarg);
115 
116 /+
117 #define GRN_PAT_EACH(ctx, pat, id, key, key_size, value, block) grn_pat_cursor *_sc = grn_pat_cursor_open(ctx, pat, null, 0, null, 0, 0, -1, 0); if (_sc) { groonga_d.groonga.grn_id id; while ((id = grn_pat_cursor_next(ctx, _sc))) { grn_pat_cursor_get_key_value(ctx, _sc, (void **)(key), (key_size), (void **)(value)); block } grn_pat_cursor_close(ctx, _sc); }
118 +/