1 /* 2 Copyright(C) 2009-2018 Brazil 3 Copyright(C) 2021 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.string_; 20 21 22 private static import groonga_d.groonga; 23 24 extern(C): 25 nothrow @nogc: 26 27 /* grn_str: deprecated. use grn_string instead. */ 28 29 struct grn_str 30 { 31 const (char)* orig; 32 char* norm; 33 short* checks; 34 ubyte* ctypes; 35 int flags; 36 uint orig_blen; 37 uint norm_blen; 38 uint length; 39 groonga_d.groonga.grn_encoding encoding; 40 } 41 42 enum GRN_STR_REMOVEBLANK = 0x01 << 0; 43 enum GRN_STR_WITH_CTYPES = 0x01 << 1; 44 enum GRN_STR_WITH_CHECKS = 0x01 << 2; 45 enum GRN_STR_NORMALIZE = groonga_d.groonga.GRN_OBJ_KEY_NORMALIZE; 46 47 //GRN_API 48 grn_str* grn_str_open(groonga_d.groonga.grn_ctx* ctx, const (char)* str, uint str_len, int flags); 49 50 //GRN_API 51 groonga_d.groonga.grn_rc grn_str_close(groonga_d.groonga.grn_ctx* ctx, grn_str* nstr); 52 53 /* grn_string */ 54 55 enum GRN_STRING_REMOVE_BLANK = 0x01 << 0; 56 enum GRN_STRING_WITH_TYPES = 0x01 << 1; 57 enum GRN_STRING_WITH_CHECKS = 0x01 << 2; 58 enum GRN_STRING_REMOVE_TOKENIZED_DELIMITER = 0x01 << 3; 59 60 /+ 61 #define GRN_NORMALIZER_AUTO (cast(groonga_d.groonga.grn_obj *)(1)) 62 +/ 63 64 enum GRN_CHAR_BLANK = 0x80; 65 66 /+ 67 #define GRN_CHAR_IS_BLANK(c) ((c) & (GRN_CHAR_BLANK)) 68 #define GRN_CHAR_TYPE(c) ((c) & 0x7F) 69 +/ 70 71 enum grn_char_type 72 { 73 GRN_CHAR_NULL = 0, 74 GRN_CHAR_ALPHA, 75 GRN_CHAR_DIGIT, 76 GRN_CHAR_SYMBOL, 77 GRN_CHAR_HIRAGANA, 78 GRN_CHAR_KATAKANA, 79 GRN_CHAR_KANJI, 80 GRN_CHAR_OTHERS, 81 GRN_CHAR_EMOJI, 82 } 83 84 //Declaration name in C language 85 enum 86 { 87 GRN_CHAR_NULL = .grn_char_type.GRN_CHAR_NULL, 88 GRN_CHAR_ALPHA = .grn_char_type.GRN_CHAR_ALPHA, 89 GRN_CHAR_DIGIT = .grn_char_type.GRN_CHAR_DIGIT, 90 GRN_CHAR_SYMBOL = .grn_char_type.GRN_CHAR_SYMBOL, 91 GRN_CHAR_HIRAGANA = .grn_char_type.GRN_CHAR_HIRAGANA, 92 GRN_CHAR_KATAKANA = .grn_char_type.GRN_CHAR_KATAKANA, 93 GRN_CHAR_KANJI = .grn_char_type.GRN_CHAR_KANJI, 94 GRN_CHAR_OTHERS = .grn_char_type.GRN_CHAR_OTHERS, 95 GRN_CHAR_EMOJI = .grn_char_type.GRN_CHAR_EMOJI, 96 } 97 98 //GRN_API 99 const (char)* grn_char_type_to_string(grn_char_type type); 100 101 //GRN_API 102 groonga_d.groonga.grn_obj* grn_string_open(groonga_d.groonga.grn_ctx* ctx, const (char)* string_, uint length_in_bytes, groonga_d.groonga.grn_obj* lexicon_or_normalizer, int flags); 103 104 //GRN_API 105 groonga_d.groonga.grn_rc grn_string_get_original(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_, const (char)** original, uint* length_in_bytes); 106 107 //GRN_API 108 int grn_string_get_flags(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_); 109 110 //GRN_API 111 groonga_d.groonga.grn_rc grn_string_get_normalized(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_, const (char)** normalized, uint* length_in_bytes, uint* n_characters); 112 113 //GRN_API 114 groonga_d.groonga.grn_rc grn_string_set_normalized(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_, char* normalized, uint length_in_bytes, uint n_characters); 115 116 //GRN_API 117 const (short)* grn_string_get_checks(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_); 118 119 //GRN_API 120 groonga_d.groonga.grn_rc grn_string_set_checks(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_, short* checks); 121 122 //GRN_API 123 const (ubyte)* grn_string_get_types(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_); 124 125 //GRN_API 126 groonga_d.groonga.grn_rc grn_string_set_types(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_, ubyte* types); 127 128 //GRN_API 129 const (ulong)* grn_string_get_offsets(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_); 130 131 //GRN_API 132 groonga_d.groonga.grn_rc grn_string_set_offsets(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_, ulong* offsets); 133 134 //GRN_API 135 groonga_d.groonga.grn_encoding grn_string_get_encoding(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_); 136 137 //GRN_API 138 groonga_d.groonga.grn_obj* grn_string_get_table(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_); 139 140 //GRN_API 141 uint grn_string_get_normalizer_index(groonga_d.groonga.grn_ctx* ctx, groonga_d.groonga.grn_obj* string_); 142 143 //GRN_API 144 int grn_charlen(groonga_d.groonga.grn_ctx* ctx, const (char)* str, const (char)* end);