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 +/