]> mj.ucw.cz Git - libucw.git/blobdiff - lib/kmp-test.c
Cleaned up the fastbuf interfaces.
[libucw.git] / lib / kmp-test.c
index 6156edbfa14d5c7f6c7127989057b6f5542db61b..fcbc96efcff40a7e3997205c76f7207c89611beb 100644 (file)
 
 /* TEST1 - multiple searches */
 
 
 /* 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 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_WANT_BEST
+#define KMPS_EXIT(kmp,src,s) TRACE("Best match has %d characters", s->best->len)
 #include "lib/kmp-search.h"
 #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_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
 #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");
   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");
   ASSERT(s1.best->len == 3);
   struct kmp1s2_search s2;
   kmp1s2_search(&kmp, &s2, "asjlahslhalahojsjkjhojsas");
@@ -52,25 +52,23 @@ test1(void)
 
 /* TEST2 - various tracing */
 
 
 /* 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_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 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
 #include "lib/kmp.h"
 
 static void
@@ -93,13 +91,13 @@ test2(void)
 
 /* TEST3 - random tests */
 
 
 /* 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_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;
 #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)
 {
 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; })
 #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 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"
 #define KMPS_ADD_CONTROLS
 #define KMPS_MERGE_CONTROLS
 #include "lib/kmp.h"