naoa
null+****@clear*****
Fri Feb 19 00:24:43 JST 2016
naoa 2016-02-19 00:24:43 +0900 (Fri, 19 Feb 2016) New Revision: 6184ba0bc64b30c4203ef6ea03076eff88a94f5e https://github.com/groonga/groonga/commit/6184ba0bc64b30c4203ef6ea03076eff88a94f5e Merged 69fa423: Merge pull request #485 from naoa/save-as-grnobj Message: Get object literal option as grn_obj Modified files: lib/proc/proc_fuzzy_search.c lib/proc/proc_snippet.c Modified: lib/proc/proc_fuzzy_search.c (+7 -6) =================================================================== --- lib/proc/proc_fuzzy_search.c 2016-02-19 00:23:27 +0900 (8e16ce9) +++ lib/proc/proc_fuzzy_search.c 2016-02-19 00:24:43 +0900 (16398dd) @@ -317,7 +317,8 @@ selector_fuzzy_search(grn_ctx *ctx, grn_obj *table, grn_obj *index, if (nargs == 4) { grn_obj *hash; grn_hash_cursor *cursor; - void *key, *value; + void *key; + grn_obj *value; int key_size, value_size; hash_args_ptr = args[3]; if (hash_args_ptr->header.type == GRN_PTR) { @@ -337,16 +338,16 @@ selector_fuzzy_search(grn_ctx *ctx, grn_obj *table, grn_obj *index, goto exit; } while (grn_hash_cursor_next(ctx, cursor) != GRN_ID_NIL) { - value_size = grn_hash_cursor_get_key_value(ctx, cursor, &key, &key_size, &value); + value_size = grn_hash_cursor_get_key_value(ctx, cursor, &key, &key_size, (void **)&value); if (key_size == 12 && !memcmp(key, "max_distance", 12)) { - max_distance = *(uint32_t *)value; + max_distance = GRN_UINT32_VALUE(value); } else if (key_size == 13 && !memcmp(key, "prefix_length", 13)) { - prefix_length = *(uint32_t *)value; + prefix_length = GRN_UINT32_VALUE(value); } else if (key_size == 13 && !memcmp(key, "max_expansion", 13)) { - max_expansion = *(uint32_t *)value; + max_expansion = GRN_UINT32_VALUE(value); } else if (key_size == 18 && !memcmp(key, "with_transposition", 18)) { - if (*(grn_bool *)value) { + if (GRN_BOOL_VALUE(value)) { flags |= GRN_TABLE_FUZZY_SEARCH_WITH_TRANSPOSITION; } } else { Modified: lib/proc/proc_snippet.c (+19 -16) =================================================================== --- lib/proc/proc_snippet.c 2016-02-19 00:23:27 +0900 (5774e0d) +++ lib/proc/proc_snippet.c 2016-02-19 00:24:43 +0900 (b791111) @@ -179,8 +179,9 @@ func_snippet_full(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_d hash = GRN_PTR_VALUE(end_arg); if (hash) { grn_hash_cursor *cursor; - void *key, *value; + void *key; int key_size; + grn_obj *value; if (hash->header.type != GRN_TABLE_HASH_KEY) { GRN_PLUGIN_ERROR(ctx, GRN_INVALID_ARGUMENT, "snippet_full(): end argument must be object literal: <%.*s>", @@ -195,32 +196,34 @@ func_snippet_full(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_d goto exit; } while (grn_hash_cursor_next(ctx, cursor) != GRN_ID_NIL) { - grn_hash_cursor_get_key_value(ctx, cursor, &key, &key_size, &value); + grn_hash_cursor_get_key_value(ctx, cursor, &key, &key_size, (void **)&value); if (key_size == 5 && !memcmp(key, "width", 5)) { - width = *(unsigned int *)value; + width = GRN_UINT32_VALUE(value); } else if (key_size == 13 && !memcmp(key, "max_n_results", 13)) { - max_n_results = *(unsigned int *)value; + max_n_results = GRN_UINT32_VALUE(value); } else if (key_size == 19 && !memcmp(key, "skip_leading_spaces", 19)) { - if (!*(grn_bool *)value) { + if (GRN_BOOL_VALUE(value) == GRN_FALSE) { flags &= ~GRN_SNIP_SKIP_LEADING_SPACES; } } else if (key_size == 11 && !memcmp(key, "html_escape", 11)) { - mapping = GRN_SNIP_MAPPING_HTML_ESCAPE; + if (GRN_BOOL_VALUE(value)) { + mapping = GRN_SNIP_MAPPING_HTML_ESCAPE; + } } else if (key_size == 6 && !memcmp(key, "prefix", 6)) { - prefix = (const char *)value; - prefix_length = strlen(prefix); + prefix = GRN_TEXT_VALUE(value); + prefix_length = GRN_TEXT_LEN(value); } else if (key_size == 6 && !memcmp(key, "suffix", 6)) { - suffix = (const char *)value; - suffix_length = strlen(suffix); + suffix = GRN_TEXT_VALUE(value); + suffix_length = GRN_TEXT_LEN(value); } else if (key_size == 10 && !memcmp(key, "normalizer", 10)) { - normalizer_name = (const char *)value; - normalizer_name_length = strlen(normalizer_name); + normalizer_name = GRN_TEXT_VALUE(value); + normalizer_name_length = GRN_TEXT_LEN(value); } else if (key_size == 16 && !memcmp(key, "default_open_tag", 16)) { - default_open_tag = (const char *)value; - default_open_tag_length = strlen(default_open_tag); + default_open_tag = GRN_TEXT_VALUE(value); + default_open_tag_length = GRN_TEXT_LEN(value); } else if (key_size == 17 && !memcmp(key, "default_close_tag", 17)) { - default_close_tag = (const char *)value; - default_close_tag_length = strlen(default_close_tag); + default_close_tag = GRN_TEXT_VALUE(value); + default_close_tag_length = GRN_TEXT_LEN(value); } else { GRN_PLUGIN_ERROR(ctx, GRN_INVALID_ARGUMENT, "invalid option name: %.*s", key_size, (char *)key); -------------- next part -------------- HTML����������������������������... Download