Date: Tue, 20 Sep 2011 12:46:07 +0000 (UTC) From: Gabor Kovesdan <gabor@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r225693 - user/gabor/tre-integration/contrib/tre/lib Message-ID: <201109201246.p8KCk7NP028888@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: gabor Date: Tue Sep 20 12:46:07 2011 New Revision: 225693 URL: http://svn.freebsd.org/changeset/base/225693 Log: - Clean up static function to have less arguments Modified: user/gabor/tre-integration/contrib/tre/lib/tre-fastmatch.c Modified: user/gabor/tre-integration/contrib/tre/lib/tre-fastmatch.c ============================================================================== --- user/gabor/tre-integration/contrib/tre/lib/tre-fastmatch.c Tue Sep 20 08:34:15 2011 (r225692) +++ user/gabor/tre-integration/contrib/tre/lib/tre-fastmatch.c Tue Sep 20 12:46:07 2011 (r225693) @@ -44,8 +44,8 @@ #include "tre-internal.h" #include "xmalloc.h" -static int fastcmp(const void *, const bool *, const void *, size_t, - tre_str_type_t, bool, bool); +static int fastcmp(const fastmatch_t *fg, const void *data, + tre_str_type_t type); /* * Clean up if pattern compilation fails. @@ -99,24 +99,6 @@ static int fastcmp(const void *, const b fg->pattern[siz] = '\0'; \ } \ -/* - * Compares the pattern to the input string at the position - * stored in startptr. - */ -#define COMPARE \ - switch (type) \ - { \ - case STR_WIDE: \ - mismatch = fastcmp(fg->wpattern, fg->wescmap, startptr, \ - fg->wlen, type, \ - fg->icase, fg->newline); \ - break; \ - default: \ - mismatch = fastcmp(fg->pattern, fg->escmap, startptr, \ - fg->len, type, \ - fg->icase, fg->newline); \ - } \ - #define IS_OUT_OF_BOUNDS \ ((!fg->reversed \ ? ((type == STR_WIDE) ? ((j + fg->wlen) > len) \ @@ -935,7 +917,7 @@ tre_match_fast(const fastmatch_t *fg, co /* Determine where in data to start search at. */ j = fg->eol ? len - (type == STR_WIDE ? fg->wlen : fg->len) : 0; SKIP_CHARS(j); - COMPARE; + mismatch = fastcmp(fg, startptr, type); if (mismatch == REG_OK) { if (fg->word && !IS_ON_WORD_BOUNDARY) @@ -955,7 +937,7 @@ tre_match_fast(const fastmatch_t *fg, co do { SKIP_CHARS(j); - COMPARE; + mismatch = fastcmp(fg, startptr, type); if (mismatch == REG_OK) { if (fg->word) @@ -1011,14 +993,15 @@ tre_free_fast(fastmatch_t *fg) * REG_OK on success */ static inline int -fastcmp(const void *pat, const bool *escmap, const void *data, size_t len, - tre_str_type_t type, bool icase, bool newline) +fastcmp(const fastmatch_t *fg, const void *data, tre_str_type_t type) { const char *str_byte = data; - const char *pat_byte = pat; - int ret = REG_OK; + const char *pat_byte = fg->pattern; const tre_char_t *str_wide = data; - const tre_char_t *pat_wide = pat; + const tre_char_t *pat_wide = fg->wpattern; + const bool *escmap = (type == STR_WIDE) ? fg->wescmap : fg->escmap; + size_t len = (type == STR_WIDE) ? fg->wlen : fg->len; + int ret = REG_OK; /* Compare the pattern and the input char-by-char from the last position. */ for (int i = len - 1; i >= 0; i--) { @@ -1028,22 +1011,22 @@ fastcmp(const void *pat, const bool *esc /* Check dot */ if (pat_wide[i] == TRE_CHAR('.') && (!escmap || !escmap[i]) && - (!newline || (str_wide[i] != TRE_CHAR('\n')))) + (!fg->newline || (str_wide[i] != TRE_CHAR('\n')))) continue; /* Compare */ - if (icase ? (towlower(pat_wide[i]) == towlower(str_wide[i])) + if (fg->icase ? (towlower(pat_wide[i]) == towlower(str_wide[i])) : (pat_wide[i] == str_wide[i])) continue; break; default: /* Check dot */ if (pat_byte[i] == '.' && (!escmap || !escmap[i]) && - (!newline || (str_byte[i] != '\n'))) + (!fg->newline || (str_byte[i] != '\n'))) continue; /* Compare */ - if (icase ? (tolower(pat_byte[i]) == tolower(str_byte[i])) + if (fg->icase ? (tolower(pat_byte[i]) == tolower(str_byte[i])) : (pat_byte[i] == str_byte[i])) continue; }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201109201246.p8KCk7NP028888>