removed hawk_rtx_matchrex() and redefined it as a macro

This commit is contained in:
hyung-hwan 2020-01-16 15:22:18 +00:00
parent 45f08d03d9
commit 0c2a13b652
4 changed files with 16 additions and 60 deletions

View File

@ -1161,7 +1161,7 @@ static int __substitute (hawk_rtx_t* rtx, hawk_int_t max_count)
if (max_count == 0 || sub_count < max_count) if (max_count == 0 || sub_count < max_count)
{ {
n = hawk_rtx_matchrex(rtx, rex, &s2, &cur, &mat, HAWK_NULL); n = hawk_rtx_matchrexwithoocs(rtx, rex, &s2, &cur, &mat, HAWK_NULL);
if (n <= -1) goto oops; if (n <= -1) goto oops;
} }
else n = 0; else n = 0;

View File

@ -77,12 +77,6 @@ int hawk_rtx_matchval (
); );
int hawk_rtx_matchrex (
hawk_rtx_t* rtx, hawk_tre_t* code,
const hawk_oocs_t* str, const hawk_oocs_t* substr,
hawk_oocs_t* match, hawk_oocs_t submat[9]
);
int hawk_rtx_matchrexwithucs ( int hawk_rtx_matchrexwithucs (
hawk_rtx_t* rtx, hawk_tre_t* code, hawk_rtx_t* rtx, hawk_tre_t* code,
const hawk_ucs_t* str, const hawk_ucs_t* substr, const hawk_ucs_t* str, const hawk_ucs_t* substr,
@ -95,6 +89,12 @@ int hawk_rtx_matchrexwithbcs (
hawk_bcs_t* match, hawk_bcs_t submat[9] hawk_bcs_t* match, hawk_bcs_t submat[9]
); );
#if defined(HAWK_OOCH_IS_UCH)
# define hawk_rtx_matchrexwithoocs hawk_rtx_matchrexwithucs
#else
# define hawk_rtx_matchrexwithoocs hawk_rtx_matchrexwithbcs
#endif
#if defined(__cplusplus) #if defined(__cplusplus)
} }
#endif #endif

View File

@ -261,7 +261,7 @@ hawk_ooch_t* hawk_rtx_strxntokbyrex (
while (cursub.len > 0) while (cursub.len > 0)
{ {
n = hawk_rtx_matchrex(rtx, rex, &s, &cursub, &match, HAWK_NULL); n = hawk_rtx_matchrexwithoocs(rtx, rex, &s, &cursub, &match, HAWK_NULL);
if (n <= -1) return HAWK_NULL; if (n <= -1) return HAWK_NULL;
if (n == 0) if (n == 0)
@ -432,45 +432,6 @@ hawk_ooch_t* hawk_rtx_strxnfld (
return HAWK_NULL; return HAWK_NULL;
} }
static int matchtre (hawk_tre_t* tre, int opt, const hawk_oocs_t* str, hawk_oocs_t* mat, hawk_oocs_t submat[9], hawk_gem_t* errgem)
{
int n;
/*hawk_tre_match_t match[10] = { { 0, 0 }, };*/
hawk_tre_match_t match[10];
HAWK_MEMSET (match, 0, HAWK_SIZEOF(match));
n = hawk_tre_execx(tre, str->ptr, str->len, match, HAWK_COUNTOF(match), opt, errgem);
if (n <= -1)
{
if (hawk_gem_geterrnum(errgem) == HAWK_EREXNOMAT) return 0;
return -1;
}
HAWK_ASSERT (match[0].rm_so != -1);
if (mat)
{
mat->ptr = &str->ptr[match[0].rm_so];
mat->len = match[0].rm_eo - match[0].rm_so;
}
if (submat)
{
int i;
/* you must intialize submat before you pass into this
* function because it can abort filling */
for (i = 1; i < HAWK_COUNTOF(match); i++)
{
if (match[i].rm_so != -1)
{
submat[i-1].ptr = &str->ptr[match[i].rm_so];
submat[i-1].len = match[i].rm_eo - match[i].rm_so;
}
}
}
return 1;
}
static int matchtre_ucs (hawk_tre_t* tre, int opt, const hawk_ucs_t* str, hawk_ucs_t* mat, hawk_ucs_t submat[9], hawk_gem_t* errgem) static int matchtre_ucs (hawk_tre_t* tre, int opt, const hawk_ucs_t* str, hawk_ucs_t* mat, hawk_ucs_t submat[9], hawk_gem_t* errgem)
{ {
int n; int n;
@ -478,7 +439,7 @@ static int matchtre_ucs (hawk_tre_t* tre, int opt, const hawk_ucs_t* str, hawk_u
hawk_tre_match_t match[10]; hawk_tre_match_t match[10];
HAWK_MEMSET (match, 0, HAWK_SIZEOF(match)); HAWK_MEMSET (match, 0, HAWK_SIZEOF(match));
n = hawk_tre_execbchars(tre, str->ptr, str->len, match, HAWK_COUNTOF(match), opt, errgem); n = hawk_tre_execuchars(tre, str->ptr, str->len, match, HAWK_COUNTOF(match), opt, errgem);
if (n <= -1) if (n <= -1)
{ {
if (hawk_gem_geterrnum(errgem) == HAWK_EREXNOMAT) return 0; if (hawk_gem_geterrnum(errgem) == HAWK_EREXNOMAT) return 0;
@ -575,7 +536,11 @@ int hawk_rtx_matchval (hawk_rtx_t* rtx, hawk_val_t* val, const hawk_oocs_t* str,
if (x <= -1) return -1; if (x <= -1) return -1;
} }
x = matchtre( #if defined(HAWK_OOCH_IS_UCH)
x = matchtre_ucs(
#else
x = matchtre_bcs(
#endif
code, ((str->ptr == substr->ptr)? opt: (opt | HAWK_TRE_NOTBOL)), code, ((str->ptr == substr->ptr)? opt: (opt | HAWK_TRE_NOTBOL)),
substr, match, submat, hawk_rtx_getgem(rtx) substr, match, submat, hawk_rtx_getgem(rtx)
); );
@ -592,15 +557,6 @@ int hawk_rtx_matchval (hawk_rtx_t* rtx, hawk_val_t* val, const hawk_oocs_t* str,
return x; return x;
} }
int hawk_rtx_matchrex (hawk_rtx_t* rtx, hawk_tre_t* code, const hawk_oocs_t* str, const hawk_oocs_t* substr, hawk_oocs_t* match, hawk_oocs_t submat[9])
{
int opt = HAWK_TRE_BACKTRACKING; /* TODO: option... HAWK_TRE_BACKTRACKING or others??? */
return matchtre(
code, ((str->ptr == substr->ptr)? opt: (opt | HAWK_TRE_NOTBOL)),
substr, match, submat, hawk_rtx_getgem(rtx)
);
}
int hawk_rtx_matchrexwithucs (hawk_rtx_t* rtx, hawk_tre_t* code, const hawk_ucs_t* str, const hawk_ucs_t* substr, hawk_ucs_t* match, hawk_ucs_t submat[9]) int hawk_rtx_matchrexwithucs (hawk_rtx_t* rtx, hawk_tre_t* code, const hawk_ucs_t* str, const hawk_ucs_t* substr, hawk_ucs_t* match, hawk_ucs_t submat[9])
{ {
int opt = HAWK_TRE_BACKTRACKING; /* TODO: option... HAWK_TRE_BACKTRACKING or others??? */ int opt = HAWK_TRE_BACKTRACKING; /* TODO: option... HAWK_TRE_BACKTRACKING or others??? */

View File

@ -247,7 +247,7 @@ static HAWK_INLINE int match_long_rs (hawk_rtx_t* rtx, hawk_ooecs_t* buf, hawk_r
HAWK_ASSERT (rtx->gbl.rs[0] != HAWK_NULL); HAWK_ASSERT (rtx->gbl.rs[0] != HAWK_NULL);
HAWK_ASSERT (rtx->gbl.rs[1] != HAWK_NULL); HAWK_ASSERT (rtx->gbl.rs[1] != HAWK_NULL);
ret = hawk_rtx_matchrex(rtx, rtx->gbl.rs[rtx->gbl.ignorecase], HAWK_OOECS_OOCS(buf), HAWK_OOECS_OOCS(buf), &match, HAWK_NULL); ret = hawk_rtx_matchrexwithoocs(rtx, rtx->gbl.rs[rtx->gbl.ignorecase], HAWK_OOECS_OOCS(buf), HAWK_OOECS_OOCS(buf), &match, HAWK_NULL);
if (ret >= 1) if (ret >= 1)
{ {
if (p->in.eof) if (p->in.eof)