X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fkmp-test.c;h=fcbc96efcff40a7e3997205c76f7207c89611beb;hb=cabef723285b3d2e61db2fd84440dca848d12888;hp=6156edbfa14d5c7f6c7127989057b6f5542db61b;hpb=0a427b3dd9a646348042d47c2027e63c6dbe3b43;p=libucw.git diff --git a/lib/kmp-test.c b/lib/kmp-test.c index 6156edbf..fcbc96ef 100644 --- a/lib/kmp-test.c +++ b/lib/kmp-test.c @@ -16,18 +16,19 @@ /* TEST1 - multiple searches */ -#define KMP_PREFIX(x) GLUE_(kmp1,x) +#define KMP_PREFIX(x) kmp1_##x #define KMP_WANT_CLEANUP #include "lib/kmp.h" -#define KMPS_PREFIX(x) GLUE_(kmp1s1,x) -#define KMPS_KMP_PREFIX(x) GLUE_(kmp1,x) +#define KMPS_PREFIX(x) kmp1s1_##x +#define KMPS_KMP_PREFIX(x) kmp1_##x #define KMPS_WANT_BEST +#define KMPS_EXIT(kmp,src,s) TRACE("Best match has %d characters", s->best->len) #include "lib/kmp-search.h" -#define KMPS_PREFIX(x) GLUE_(kmp1s2,x) -#define KMPS_KMP_PREFIX(x) GLUE_(kmp1,x) +#define KMPS_PREFIX(x) kmp1s2_##x +#define KMPS_KMP_PREFIX(x) kmp1_##x #define KMPS_VARS uns count; -#define KMPS_INIT(kmp,src,s) do{ s->u.count = 0; }while(0) -#define KMPS_FOUND(kmp,src,s) do{ s->u.count++; }while(0) +#define KMPS_INIT(kmp,src,s) s->u.count = 0 +#define KMPS_FOUND(kmp,src,s) s->u.count++ #include "lib/kmp-search.h" static void @@ -42,7 +43,6 @@ test1(void) kmp1_build(&kmp); struct kmp1s1_search s1; kmp1s1_search(&kmp, &s1, "asjlahslhalahosjkjhojsas"); - TRACE("Best match has %d characters", s1.best->len); ASSERT(s1.best->len == 3); struct kmp1s2_search s2; kmp1s2_search(&kmp, &s2, "asjlahslhalahojsjkjhojsas"); @@ -52,25 +52,23 @@ test1(void) /* TEST2 - various tracing */ -#define KMP_PREFIX(x) GLUE_(kmp2,x) +#define KMP_PREFIX(x) kmp2_##x #define KMP_USE_UTF8 #define KMP_TOLOWER #define KMP_ONLYALPHA #define KMP_STATE_VARS byte *str; uns id; #define KMP_ADD_EXTRA_ARGS uns id -#define KMP_ADD_EXTRA_VAR byte * -#define KMP_ADD_INIT(kmp,src,v) do{ v = src; }while(0) -#define KMP_ADD_NEW(kmp,src,v,s) do{ TRACE("Inserting string %s with id %d", v, id); \ - s->u.str = v; s->u.id = id; }while(0) -#define KMP_ADD_DUP(kmp,src,v,s) do{ TRACE("String %s already inserted", v); }while(0) +#define KMP_VARS byte *start; +#define KMP_ADD_INIT(kmp,src) kmp->u.start = src +#define KMP_ADD_NEW(kmp,src,s) do{ TRACE("Inserting string %s with id %d", kmp->u.start, id); \ + s->u.str = kmp->u.start; s->u.id = id; }while(0) +#define KMP_ADD_DUP(kmp,src,s) TRACE("String %s already inserted", kmp->u.start) #define KMP_WANT_CLEANUP #define KMP_WANT_SEARCH #define KMPS_ADD_CONTROLS #define KMPS_MERGE_CONTROLS -#define KMPS_WANT_BEST -#define KMPS_FOUND(kmp,src,s) do{ TRACE("String %s with id %d found", s->out->u.str, s->out->u.id); }while(0) -#define KMPS_STEP(kmp,src,s) do{ TRACE("Got to state %p after reading %d", s->s, s->c); }while(0) -#define KMPS_EXIT(kmp,src,s) do{ if (s->best->len) TRACE("Best match is %s", s->best->u.str); } while(0) +#define KMPS_FOUND(kmp,src,s) TRACE("String %s with id %d found", s->out->u.str, s->out->u.id) +#define KMPS_STEP(kmp,src,s) TRACE("Got to state %p after reading %d", s->s, s->c) #include "lib/kmp.h" static void @@ -93,13 +91,13 @@ test2(void) /* TEST3 - random tests */ -#define KMP_PREFIX(x) GLUE_(kmp3,x) +#define KMP_PREFIX(x) kmp3_##x #define KMP_STATE_VARS uns index; #define KMP_ADD_EXTRA_ARGS uns index -#define KMP_ADD_EXTRA_VAR byte * -#define KMP_ADD_INIT(kmp,src,v) do{ v = src; }while(0) -#define KMP_ADD_NEW(kmp,src,v,s) do{ s->u.index = index; }while(0) -#define KMP_ADD_DUP(kmp,src,v,s) do{ *v = 0; }while(0) +#define KMP_VARS byte *start; +#define KMP_ADD_INIT(kmp,src) kmp->u.start = src +#define KMP_ADD_NEW(kmp,src,s) s->u.index = index +#define KMP_ADD_DUP(kmp,src,s) *(kmp->u.start) = 0 #define KMP_WANT_CLEANUP #define KMP_WANT_SEARCH #define KMPS_VARS uns sum, *cnt; @@ -169,10 +167,10 @@ kmp4_eq(struct kmp4_struct *kmp UNUSED, byte *a, byte *b) static inline uns kmp4_hash(struct kmp4_struct *kmp UNUSED, struct kmp4_state *s, byte *c) { - return (c ? (*c << 16) : 0) + (uns)(addr_int_t)s; + return (c ? (*c << 16) : 0) + (uns)(uintptr_t)s; } -#define KMP_PREFIX(x) GLUE_(kmp4,x) +#define KMP_PREFIX(x) kmp4_##x #define KMP_CHAR byte * #define KMP_CONTROL_CHAR NULL #define KMP_GET_CHAR(kmp,src,c) ({ c = src++; !!*c; }) @@ -180,7 +178,7 @@ kmp4_hash(struct kmp4_struct *kmp UNUSED, struct kmp4_state *s, byte *c) #define KMP_GIVE_EQ #define KMP_WANT_CLEANUP #define KMP_WANT_SEARCH -#define KMPS_FOUND(kmp,src,s) do{ TRACE("found"); }while(0) +#define KMPS_FOUND(kmp,src,s) TRACE("found") #define KMPS_ADD_CONTROLS #define KMPS_MERGE_CONTROLS #include "lib/kmp.h"