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) {