1 /*
2   Copyright(C) 2009-2016  Brazil
3   Copyright(C) 2020  Sutou Kouhei <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.dat;
20 
21 
22 private static import groonga_d.groonga;
23 
24 extern(C):
25 nothrow @nogc:
26 
27 extern struct _grn_dat;
28 extern struct _grn_dat_cursor;
29 
30 alias grn_dat = _grn_dat;
31 alias grn_dat_cursor = _grn_dat_cursor;
32 alias grn_dat_scan_hit = groonga_d.groonga._grn_table_scan_hit;
33 
34 //GRN_API
35 int grn_dat_scan(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat, const (char)* str, uint str_size, grn_dat_scan_hit* scan_hits, uint max_num_scan_hits, const (char)** str_rest);
36 
37 //GRN_API
38 groonga_d.groonga.grn_id grn_dat_lcp_search(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat, const (void)* key, uint key_size);
39 
40 //GRN_API
41 grn_dat* grn_dat_create(groonga_d.groonga.grn_ctx* ctx, const (char)* path, uint key_size, uint value_size, uint flags);
42 
43 //GRN_API
44 grn_dat* grn_dat_open(groonga_d.groonga.grn_ctx* ctx, const (char)* path);
45 
46 //GRN_API
47 groonga_d.groonga.grn_rc grn_dat_close(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat);
48 
49 //GRN_API
50 groonga_d.groonga.grn_rc grn_dat_remove(groonga_d.groonga.grn_ctx* ctx, const (char)* path);
51 
52 //GRN_API
53 groonga_d.groonga.grn_id grn_dat_get(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat, const (void)* key, uint key_size, void** value);
54 
55 //GRN_API
56 groonga_d.groonga.grn_id grn_dat_add(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat, const (void)* key, uint key_size, void** value, int* added);
57 
58 //GRN_API
59 int grn_dat_get_key(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat, groonga_d.groonga.grn_id id, void* keybuf, int bufsize);
60 
61 //GRN_API
62 int grn_dat_get_key2(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat, groonga_d.groonga.grn_id id, groonga_d.groonga.grn_obj* bulk);
63 
64 //GRN_API
65 groonga_d.groonga.grn_rc grn_dat_delete_by_id(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat, groonga_d.groonga.grn_id id, groonga_d.groonga.grn_table_delete_optarg* optarg);
66 
67 //GRN_API
68 groonga_d.groonga.grn_rc grn_dat_delete(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat, const (void)* key, uint key_size, groonga_d.groonga.grn_table_delete_optarg* optarg);
69 
70 //GRN_API
71 groonga_d.groonga.grn_rc grn_dat_update_by_id(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat, groonga_d.groonga.grn_id src_key_id, const (void)* dest_key, uint dest_key_size);
72 
73 //GRN_API
74 groonga_d.groonga.grn_rc grn_dat_update(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat, const (void)* src_key, uint src_key_size, const (void)* dest_key, uint dest_key_size);
75 
76 //GRN_API
77 uint grn_dat_size(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat);
78 
79 //GRN_API
80 grn_dat_cursor* grn_dat_cursor_open(groonga_d.groonga.grn_ctx* ctx, grn_dat* dat, const (void)* min, uint min_size, const (void)* max, uint max_size, int offset, int limit, int flags);
81 
82 //GRN_API
83 groonga_d.groonga.grn_id grn_dat_cursor_next(groonga_d.groonga.grn_ctx* ctx, grn_dat_cursor* c);
84 
85 //GRN_API
86 void grn_dat_cursor_close(groonga_d.groonga.grn_ctx* ctx, grn_dat_cursor* c);
87 
88 //GRN_API
89 int grn_dat_cursor_get_key(groonga_d.groonga.grn_ctx* ctx, grn_dat_cursor* c, const (void)** key);
90 
91 //GRN_API
92 groonga_d.groonga.grn_rc grn_dat_cursor_delete(groonga_d.groonga.grn_ctx* ctx, grn_dat_cursor* c, groonga_d.groonga.grn_table_delete_optarg* optarg);
93 
94 //GRN_API
95 size_t grn_dat_cursor_get_max_n_records(groonga_d.groonga.grn_ctx* ctx, grn_dat_cursor* c);
96 
97 /+
98 #define GRN_DAT_EACH(ctx, dat, id, key, key_size, block) grn_dat_cursor *_sc = grn_dat_cursor_open(ctx, dat, null, 0, null, 0, 0, -1, 0); if (_sc) { groonga_d.groonga.grn_id id; uint *_ks = (key_size); if (_ks) { while ((id = grn_dat_cursor_next(ctx, _sc))) { int _ks_raw = grn_dat_cursor_get_key(ctx, _sc, (const void **)(key)); *(_ks) = cast(uint)(_ks_raw); block } } else { while ((id = grn_dat_cursor_next(ctx, _sc))) { grn_dat_cursor_get_key(ctx, _sc, (const void **)(key)); block } } grn_dat_cursor_close(ctx, _sc); }
99 +/