[Groonga-commit] groonga/groonga [master] Revert "[dat] migrated to grn_normalized_text from grn_str."

Zurück zum Archiv-Index

null+****@clear***** null+****@clear*****
2012年 2月 14日 (火) 13:58:37 JST


Kouhei Sutou	2012-02-14 13:58:37 +0900 (Tue, 14 Feb 2012)

  New Revision: ddd7e9ba7cae8146f97b05f7b9e1d77f9ecc3ff7

  Log:
    Revert "[dat] migrated to grn_normalized_text from grn_str."
    
    This reverts commit 2aa6c3365fe995e778bc9da4fe1ce74dd1febaab.

  Modified files:
    lib/dat.cpp

  Modified: lib/dat.cpp (+10 -16)
===================================================================
--- lib/dat.cpp    2012-02-14 13:58:25 +0900 (8197a5a)
+++ lib/dat.cpp    2012-02-14 13:58:37 +0900 (12ff71b)
@@ -695,19 +695,16 @@ int grn_dat_scan(grn_ctx *ctx, grn_dat *dat, const char *str,
 
   int num_scan_hits = 0;
   try {
-    if (dat->normalizer) {
-      grn_obj * normalized_text;
-      normalized_text = grn_normalized_text_open(ctx, dat->normalizer,
-                                                 str, str_size,
-                                                 dat->encoding,
-                                                 GRN_NORMALIZE_WITH_CHECKS);
-      if (!normalized_text) {
-        ERR(GRN_NO_MEMORY_AVAILABLE,
-            "[dat][scan] failed to allocate memory for normalization");
+    if (dat->obj.header.flags & GRN_OBJ_KEY_NORMALIZE) {
+      grn_str * const normalized_str = grn_str_open(
+          ctx, str, str_size, GRN_STR_NORMALIZE | GRN_NORMALIZE_WITH_CHECKS);
+      if (!normalized_str) {
+        fprintf(stderr, "error: grn_str_open() failed!\n");
         return -1;
       }
-      grn_normalized_text_get_value(ctx, normalized_text, &str, NULL, &str_size);
-      const short *checks = grn_normalized_text_get_checks(ctx, normalized_text);
+      str = normalized_str->norm;
+      str_size = normalized_str->norm_blen;
+      const short *checks = normalized_str->checks;
       unsigned int offset = 0;
       while (str_size) {
         if (*checks) {
@@ -744,12 +741,9 @@ int grn_dat_scan(grn_ctx *ctx, grn_dat *dat, const char *str,
         ++checks;
       }
       if (str_rest) {
-        const char *original;
-        grn_normalized_text_get_original_value(ctx, normalized_text,
-                                               &original, NULL);
-        *str_rest = original + offset;
+        *str_rest = normalized_str->orig + offset;
       }
-      grn_obj_unlink(ctx, normalized_text);
+      grn_str_close(ctx, normalized_str);
     } else {
       const char * const begin = str;
       while (str_size) {




Groonga-commit メーリングリストの案内
Zurück zum Archiv-Index