/*
- * Fast Pattern Matcher for Short Wildcard Patterns (only `?' and `*' supported)
+ * UCW Library -- Fast Pattern Matcher for Short Wildcard Patterns (only `?' and `*' supported)
*
* Traditional NFA -> DFA method with on-the-fly DFA construction.
*
* (c) 1999 Martin Mares <mj@ucw.cz>
+ *
+ * This software may be freely distributed and used according to the terms
+ * of the GNU Lesser General Public License.
*/
+#include "lib/lib.h"
+#include "lib/mempool.h"
+#include "lib/wildmatch.h"
+
#include <stdio.h>
#include <string.h>
-#include "lib.h"
-#include "pools.h"
-#include "wildmatch.h"
-
#define MAX_STATES 32 /* Must be <= 32, state 0 is reserved, state 1 is initial */
#define MAX_CACHED 256 /* Maximum number of cached DFA states */
#define HASH_SIZE 512 /* Number of entries in DFA hash table (at least MAX_CACHED+MAX_STATES) */
};
struct dfa_state {
- addr_int_t edge[256]; /* Outgoing DFA edges. Bit 0 is set for incomplete edges which
+ uintptr_t edge[256]; /* Outgoing DFA edges. Bit 0 is set for incomplete edges which
* contain just state set and clear for complete ones which point
* to other states. NULL means `no match'.
*/
if (d = w->free_states)
w->free_states = d->next;
else
- d = pool_alloc(w->pool, sizeof(*d));
+ d = mp_alloc(w->pool, sizeof(*d));
w->hash[h] = d;
bzero(d, sizeof(*d));
d->nfa_set = set;
if (strlen(p) >= MAX_STATES) /* Too long */
return NULL;
- w = pool_alloc(pool, sizeof(*w));
- bzero(w, sizeof(*w));
+ w = mp_alloc_zero(pool, sizeof(*w));
w->pool = pool;
for(i=1; *p; p++)
{
d = w->dfa_start;
while (*s)
{
- addr_int_t next = d->edge[*s];
+ uintptr_t next = d->edge[*s];
if (next & 1)
{
/* Need to lookup/create the destination state */
struct dfa_state *new = wp_new_state(w, next & ~1);
- d->edge[*s] = (addr_int_t) new;
+ d->edge[*s] = (uintptr_t) new;
d = new;
}
else if (!next)
char buf[1024];
if (argc != 2) return 1;
- w = wp_compile(argv[1], new_pool(65536));
+ w = wp_compile(argv[1], mp_new(65536));
if (!w)
{
puts("Compile error");