1
1

Minor optimization of translation function arguments.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Этот коммит содержится в:
Andrew Borodin 2010-10-21 17:07:06 +04:00 коммит произвёл Slava Zanko
родитель 601047b6a1
Коммит 5cac8caabe
4 изменённых файлов: 31 добавлений и 30 удалений

Просмотреть файл

@ -48,13 +48,14 @@
/*** file scope functions ************************************************************************/ /*** file scope functions ************************************************************************/
static GString * static GString *
mc_search__glob_translate_to_regex (gchar * str, gsize * len) mc_search__glob_translate_to_regex (const GString * astr)
{ {
const char *str = astr->str;
GString *buff = g_string_new (""); GString *buff = g_string_new ("");
gsize orig_len = *len;
gsize loop = 0; gsize loop = 0;
gboolean inside_group = FALSE; gboolean inside_group = FALSE;
while (loop < orig_len)
while (loop < astr->len)
{ {
switch (str[loop]) switch (str[loop])
{ {
@ -114,7 +115,7 @@ mc_search__glob_translate_to_regex (gchar * str, gsize * len)
g_string_append_c (buff, str[loop]); g_string_append_c (buff, str[loop]);
loop++; loop++;
} }
*len = buff->len;
return buff; return buff;
} }
@ -162,9 +163,9 @@ void
mc_search__cond_struct_new_init_glob (const char *charset, mc_search_t * lc_mc_search, mc_search__cond_struct_new_init_glob (const char *charset, mc_search_t * lc_mc_search,
mc_search_cond_t * mc_search_cond) mc_search_cond_t * mc_search_cond)
{ {
GString *tmp = GString *tmp;
mc_search__glob_translate_to_regex (mc_search_cond->str->str, &mc_search_cond->str->len);
tmp = mc_search__glob_translate_to_regex (mc_search_cond->str);
g_string_free (mc_search_cond->str, TRUE); g_string_free (mc_search_cond->str, TRUE);
if (lc_mc_search->is_entire_line) if (lc_mc_search->is_entire_line)
@ -175,7 +176,6 @@ mc_search__cond_struct_new_init_glob (const char *charset, mc_search_t * lc_mc_s
mc_search_cond->str = tmp; mc_search_cond->str = tmp;
mc_search__cond_struct_new_init_regex (charset, lc_mc_search, mc_search_cond); mc_search__cond_struct_new_init_regex (charset, lc_mc_search, mc_search_cond);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

Просмотреть файл

@ -49,17 +49,18 @@
/*** file scope functions ************************************************************************/ /*** file scope functions ************************************************************************/
static GString * static GString *
mc_search__hex_translate_to_regex (gchar * str, gsize * len) mc_search__hex_translate_to_regex (const GString * astr)
{ {
const char *str = astr->str;
GString *buff = g_string_new (""); GString *buff = g_string_new ("");
gchar *tmp_str = g_strndup (str, *len); gchar *tmp_str = g_strndup (str, astr->len);
gchar *tmp_str2; gchar *tmp_str2;
gsize loop = 0; gsize loop = 0;
int val, ptr; int val, ptr;
g_strchug (tmp_str); /* trim leadind whitespaces */ g_strchug (tmp_str); /* trim leadind whitespaces */
while (loop < *len) { while (loop < astr->len) {
if (sscanf (tmp_str + loop, "%i%n", &val, &ptr)) { if (sscanf (tmp_str + loop, "%i%n", &val, &ptr)) {
if (val < -128 || val > 255) { if (val < -128 || val > 255) {
loop++; loop++;
@ -75,7 +76,7 @@ mc_search__hex_translate_to_regex (gchar * str, gsize * len)
if (*(tmp_str + loop) == '"') { if (*(tmp_str + loop) == '"') {
gsize loop2 = 0; gsize loop2 = 0;
loop++; loop++;
while (loop + loop2 < *len) { while (loop + loop2 < astr->len) {
if (*(tmp_str + loop + loop2) == '"' && if (*(tmp_str + loop + loop2) == '"' &&
!strutils_is_char_escaped (tmp_str, tmp_str + loop + loop2)) !strutils_is_char_escaped (tmp_str, tmp_str + loop + loop2))
break; break;
@ -90,7 +91,6 @@ mc_search__hex_translate_to_regex (gchar * str, gsize * len)
g_free (tmp_str); g_free (tmp_str);
*len = buff->len;
return buff; return buff;
} }
@ -100,14 +100,13 @@ void
mc_search__cond_struct_new_init_hex (const char *charset, mc_search_t * lc_mc_search, mc_search__cond_struct_new_init_hex (const char *charset, mc_search_t * lc_mc_search,
mc_search_cond_t * mc_search_cond) mc_search_cond_t * mc_search_cond)
{ {
GString *tmp = GString *tmp;
mc_search__hex_translate_to_regex (mc_search_cond->str->str, &mc_search_cond->str->len);
tmp = mc_search__hex_translate_to_regex (mc_search_cond->str);
g_string_free (mc_search_cond->str, TRUE); g_string_free (mc_search_cond->str, TRUE);
mc_search_cond->str = tmp; mc_search_cond->str = tmp;
mc_search__cond_struct_new_init_regex (charset, lc_mc_search, mc_search_cond); mc_search__cond_struct_new_init_regex (charset, lc_mc_search, mc_search_cond);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

Просмотреть файл

@ -46,13 +46,13 @@
/*** file scope functions ************************************************************************/ /*** file scope functions ************************************************************************/
static GString * static GString *
mc_search__normal_translate_to_regex (gchar * str, gsize * len) mc_search__normal_translate_to_regex (const GString * astr)
{ {
const char *str = astr->str;
GString *buff = g_string_new (""); GString *buff = g_string_new ("");
gsize orig_len = *len;
gsize loop = 0; gsize loop = 0;
while (loop < orig_len) { while (loop < astr->len) {
switch (str[loop]) { switch (str[loop]) {
case '*': case '*':
case '?': case '?':
@ -78,7 +78,7 @@ mc_search__normal_translate_to_regex (gchar * str, gsize * len)
g_string_append_c (buff, str[loop]); g_string_append_c (buff, str[loop]);
loop++; loop++;
} }
*len = buff->len;
return buff; return buff;
} }
@ -88,10 +88,11 @@ void
mc_search__cond_struct_new_init_normal (const char *charset, mc_search_t * lc_mc_search, mc_search__cond_struct_new_init_normal (const char *charset, mc_search_t * lc_mc_search,
mc_search_cond_t * mc_search_cond) mc_search_cond_t * mc_search_cond)
{ {
GString *tmp = GString *tmp;
mc_search__normal_translate_to_regex (mc_search_cond->str->str, &mc_search_cond->str->len);
tmp = mc_search__normal_translate_to_regex (mc_search_cond->str);
g_string_free (mc_search_cond->str, TRUE); g_string_free (mc_search_cond->str, TRUE);
if (lc_mc_search->whole_words) if (lc_mc_search->whole_words)
{ {
/* NOTE: \b as word boundary doesn't allow search /* NOTE: \b as word boundary doesn't allow search
@ -99,10 +100,9 @@ mc_search__cond_struct_new_init_normal (const char *charset, mc_search_t * lc_mc
g_string_prepend (tmp, "(^|[^\\p{L}\\p{N}_])("); g_string_prepend (tmp, "(^|[^\\p{L}\\p{N}_])(");
g_string_append (tmp, ")([^\\p{L}\\p{N}_]|$)"); g_string_append (tmp, ")([^\\p{L}\\p{N}_]|$)");
} }
mc_search_cond->str = tmp; mc_search_cond->str = tmp;
mc_search__cond_struct_new_init_regex (charset, lc_mc_search, mc_search_cond); mc_search__cond_struct_new_init_regex (charset, lc_mc_search, mc_search_cond);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

Просмотреть файл

@ -194,12 +194,13 @@ mc_search__cond_struct_new_regex_accum_append (const char *charset, GString * st
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */
static GString * static GString *
mc_search__cond_struct_new_regex_ci_str (const char *charset, const char *str, gsize str_len) mc_search__cond_struct_new_regex_ci_str (const char *charset, const GString *astr)
{ {
const char *str = astr->str;
GString *accumulator, *spec_char, *ret_str; GString *accumulator, *spec_char, *ret_str;
gsize loop; gsize loop;
GString *tmp; GString *tmp;
tmp = g_string_new_len (str, str_len); tmp = g_string_new_len (str, astr->len);
ret_str = g_string_new (""); ret_str = g_string_new ("");
@ -207,7 +208,7 @@ mc_search__cond_struct_new_regex_ci_str (const char *charset, const char *str, g
spec_char = g_string_new (""); spec_char = g_string_new ("");
loop = 0; loop = 0;
while (loop <= str_len) while (loop <= astr->len)
{ {
if (mc_search__regex_str_append_if_special (spec_char, tmp, &loop)) if (mc_search__regex_str_append_if_special (spec_char, tmp, &loop))
{ {
@ -221,13 +222,13 @@ mc_search__cond_struct_new_regex_ci_str (const char *charset, const char *str, g
{ {
mc_search__cond_struct_new_regex_accum_append (charset, ret_str, accumulator); mc_search__cond_struct_new_regex_accum_append (charset, ret_str, accumulator);
while (loop < str_len && !(tmp->str[loop] == ']' while (loop < astr->len && !(tmp->str[loop] == ']'
&& !strutils_is_char_escaped (tmp->str, &(tmp->str[loop])))) && !strutils_is_char_escaped (tmp->str, &(tmp->str[loop]))))
{ {
g_string_append_c (ret_str, tmp->str[loop]); g_string_append_c (ret_str, tmp->str[loop]);
loop++; loop++;
} }
g_string_append_c (ret_str, tmp->str[loop]); g_string_append_c (ret_str, tmp->str[loop]);
loop++; loop++;
continue; continue;
@ -522,7 +523,6 @@ void
mc_search__cond_struct_new_init_regex (const char *charset, mc_search_t * lc_mc_search, mc_search__cond_struct_new_init_regex (const char *charset, mc_search_t * lc_mc_search,
mc_search_cond_t * mc_search_cond) mc_search_cond_t * mc_search_cond)
{ {
GString *tmp = NULL;
#ifdef SEARCH_TYPE_GLIB #ifdef SEARCH_TYPE_GLIB
GError *error = NULL; GError *error = NULL;
#else /* SEARCH_TYPE_GLIB */ #else /* SEARCH_TYPE_GLIB */
@ -532,8 +532,10 @@ mc_search__cond_struct_new_init_regex (const char *charset, mc_search_t * lc_mc_
if (!lc_mc_search->is_case_sensitive) if (!lc_mc_search->is_case_sensitive)
{ {
GString *tmp;
tmp = mc_search_cond->str; tmp = mc_search_cond->str;
mc_search_cond->str = mc_search__cond_struct_new_regex_ci_str (charset, tmp->str, tmp->len); mc_search_cond->str = mc_search__cond_struct_new_regex_ci_str (charset, tmp);
g_string_free (tmp, TRUE); g_string_free (tmp, TRUE);
} }
#ifdef SEARCH_TYPE_GLIB #ifdef SEARCH_TYPE_GLIB