svn commit: r231824 - in user/gabor/tre-integration: contrib/tre/lib include

Gabor Kovesdan gabor at FreeBSD.org
Thu Feb 16 14:54:20 UTC 2012


Author: gabor
Date: Thu Feb 16 14:54:20 2012
New Revision: 231824
URL: http://svn.freebsd.org/changeset/base/231824

Log:
  - Take wmsearch_t instead of mregex_t because the fields of the latter
    belong to higher level code
  - In mregex_t, it is necessary to store the number of fragments that will
    be used for multiple pattern heuristic matching

Modified:
  user/gabor/tre-integration/contrib/tre/lib/tre-mfastmatch.c
  user/gabor/tre-integration/include/mregex.h

Modified: user/gabor/tre-integration/contrib/tre/lib/tre-mfastmatch.c
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/tre-mfastmatch.c	Thu Feb 16 14:44:52 2012	(r231823)
+++ user/gabor/tre-integration/contrib/tre/lib/tre-mfastmatch.c	Thu Feb 16 14:54:20 2012	(r231824)
@@ -167,11 +167,10 @@
  */
 
 int
-tre_wmcomp(mregex_t *preg, size_t nr, const char *regex[],
+tre_wmcomp(wmsearch_t *wm, size_t nr, const tre_char_t *regex[],
 	   size_t n[], int cflags)
 {
   wmentry_t *entry = NULL;
-  wmsearch_t *wm = NULL;
   int err;
 #ifdef TRE_WCHAR
   char **bregex;
@@ -179,7 +178,6 @@ tre_wmcomp(mregex_t *preg, size_t nr, co
 #endif
 
   ALLOC(wm, sizeof(wmsearch_t));
-  preg->n = nr;
 
 #ifdef TRE_WCHAR
   PROC_WM_WIDE(regex, n);
@@ -216,7 +214,6 @@ tre_wmcomp(mregex_t *preg, size_t nr, co
   SAVE_PATTERNS;
 #endif
 
-  preg->searchdata = &wm;
   return REG_OK;
 fail:
 #ifdef TRE_WCHAR
@@ -295,13 +292,12 @@ fail:
 int
 tre_wmexec(const void *str, size_t len, tre_str_type_t type,
 	   size_t nmatch, regmatch_t pmatch[], int eflags,
-	   const mregex_t *preg, regmatch_t *match)
+	   const wmsearch_t *wm, regmatch_t *match)
 {
-  wmsearch_t *wm = preg->wm;
   wmentry_t *s_entry, *p_entry;
   tre_char_t *wide_str = str;
   char *byte_str = str;
-  size_t pos = preg->m;
+  size_t pos = (type == STR_WIDE) ? wm->wm : wm->m;
   size_t shift;
   int ret;
   int err = REG_NOMATCH;
@@ -327,9 +323,8 @@ finish:
 }
 
 void
-wmfree(mregex_t *preg)
+tre_wmfree(wmsearch_t *wm)
 {
-  wmsearch_t wm = preg->wm;
 
   if (wm->hash)
     hashtable_free(wm->hash);

Modified: user/gabor/tre-integration/include/mregex.h
==============================================================================
--- user/gabor/tre-integration/include/mregex.h	Thu Feb 16 14:44:52 2012	(r231823)
+++ user/gabor/tre-integration/include/mregex.h	Thu Feb 16 14:54:20 2012	(r231824)
@@ -8,6 +8,7 @@
 typedef struct {
 	size_t k;		/* Number of patterns */
 	regex_t *patterns;	/* regex_t structure for each pattern */
+	size_t mfrag;		/* Number of fragments */
 	void *searchdata;
 } mregex_t;
 


More information about the svn-src-user mailing list