[Groonga-commit] groonga/groonga at 6184ba0 [master] Get object literal option as grn_obj

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index