From 6e360d39b8d1999f7f3161b6a946c7bf2e4be281 Mon Sep 17 00:00:00 2001 From: fc_botelho Date: Sun, 23 Mar 2008 00:46:34 +0000 Subject: [PATCH] *** empty log message *** --- src/.deps/bdz.Plo | 110 +++++++ src/.deps/bitbool.Plo | 5 + src/.deps/bmz.Plo | 132 ++++++++ src/.deps/bmz8.Plo | 132 ++++++++ src/.deps/brz.Plo | 141 +++++++++ src/.deps/buffer_entry.Plo | 82 +++++ src/.deps/buffer_manager.Plo | 82 +++++ src/.deps/chm.Plo | 130 ++++++++ src/.deps/cmph.Plo | 99 ++++++ src/.deps/cmph_structs.Plo | 84 +++++ src/.deps/djb2_hash.Plo | 57 ++++ src/.deps/fch.Plo | 112 +++++++ src/.deps/fch_buckets.Plo | 84 +++++ src/.deps/fnv_hash.Plo | 57 ++++ src/.deps/graph.Plo | 107 +++++++ src/.deps/hash.Plo | 107 +++++++ src/.deps/jenkins_hash.Plo | 112 +++++++ src/.deps/main.Po | 127 ++++++++ src/.deps/sdbm_hash.Plo | 57 ++++ src/.deps/vqueue.Plo | 80 +++++ src/.deps/vstack.Plo | 82 +++++ src/.deps/wingetopt.Po | 1 + src/.libs/cmph | Bin 0 -> 20558 bytes src/.libs/libcmph.a | Bin 0 -> 163574 bytes src/{ => .libs}/libcmph.la | 0 src/.libs/libcmph.lai | 35 ++ src/.libs/libcmph.so | Bin 0 -> 116260 bytes src/.libs/libcmph.so.0 | Bin 0 -> 116260 bytes src/.libs/libcmph.so.0.0.0 | Bin 0 -> 116260 bytes src/.libs/lt-cmph | Bin 0 -> 20622 bytes src/Makefile | 575 +++++++++++++++++++++++++++++++++ src/Makefile.am | 4 +- src/Makefile.in | 575 +++++++++++++++++++++++++++++++++ src/bdz.c | 599 +++++++++++++++++++++++++++++++++++ src/bdz.h | 19 ++ src/bdz.lo | 12 - src/bdz_gen_lookup_table.c | 33 ++ src/bdz_structs.h | 36 +++ src/bitbool.c | 1 + src/bitbool.h | 15 +- src/bitbool.lo | 12 - src/bmz.c | 8 +- src/bmz.lo | 12 - src/bmz8.c | 8 +- src/bmz8.lo | 12 - src/brz.lo | 12 - src/buffer_entry.lo | 12 - src/buffer_manager.lo | 12 - src/chm.lo | 12 - src/cmph | 131 -------- src/cmph.c | 43 ++- src/cmph.lo | 12 - src/cmph_structs.lo | 12 - src/cmph_types.h | 5 +- src/fch.lo | 12 - src/fch_buckets.lo | 12 - src/graph.lo | 12 - src/hash.c | 66 +--- src/hash.h | 19 ++ src/hash.lo | 12 - src/hash_state.h | 6 - src/jenkins_hash.c | 53 ++++ src/jenkins_hash.h | 16 + src/jenkins_hash.lo | 12 - src/vqueue.lo | 12 - src/vstack.lo | 12 - 66 files changed, 4016 insertions(+), 415 deletions(-) create mode 100644 src/.deps/bdz.Plo create mode 100644 src/.deps/bitbool.Plo create mode 100644 src/.deps/bmz.Plo create mode 100644 src/.deps/bmz8.Plo create mode 100644 src/.deps/brz.Plo create mode 100644 src/.deps/buffer_entry.Plo create mode 100644 src/.deps/buffer_manager.Plo create mode 100644 src/.deps/chm.Plo create mode 100644 src/.deps/cmph.Plo create mode 100644 src/.deps/cmph_structs.Plo create mode 100644 src/.deps/djb2_hash.Plo create mode 100644 src/.deps/fch.Plo create mode 100644 src/.deps/fch_buckets.Plo create mode 100644 src/.deps/fnv_hash.Plo create mode 100644 src/.deps/graph.Plo create mode 100644 src/.deps/hash.Plo create mode 100644 src/.deps/jenkins_hash.Plo create mode 100644 src/.deps/main.Po create mode 100644 src/.deps/sdbm_hash.Plo create mode 100644 src/.deps/vqueue.Plo create mode 100644 src/.deps/vstack.Plo create mode 100644 src/.deps/wingetopt.Po create mode 100755 src/.libs/cmph create mode 100644 src/.libs/libcmph.a rename src/{ => .libs}/libcmph.la (100%) create mode 100644 src/.libs/libcmph.lai create mode 100755 src/.libs/libcmph.so create mode 100755 src/.libs/libcmph.so.0 create mode 100755 src/.libs/libcmph.so.0.0.0 create mode 100755 src/.libs/lt-cmph create mode 100644 src/Makefile create mode 100644 src/Makefile.in create mode 100755 src/bdz.c create mode 100755 src/bdz.h delete mode 100644 src/bdz.lo create mode 100755 src/bdz_gen_lookup_table.c create mode 100755 src/bdz_structs.h delete mode 100644 src/bitbool.lo delete mode 100644 src/bmz.lo delete mode 100644 src/bmz8.lo delete mode 100644 src/brz.lo delete mode 100644 src/buffer_entry.lo delete mode 100644 src/buffer_manager.lo delete mode 100644 src/chm.lo delete mode 100755 src/cmph delete mode 100644 src/cmph.lo delete mode 100644 src/cmph_structs.lo delete mode 100644 src/fch.lo delete mode 100644 src/fch_buckets.lo delete mode 100644 src/graph.lo delete mode 100644 src/hash.lo delete mode 100644 src/jenkins_hash.lo delete mode 100644 src/vqueue.lo delete mode 100644 src/vstack.lo diff --git a/src/.deps/bdz.Plo b/src/.deps/bdz.Plo new file mode 100644 index 0000000..1896c95 --- /dev/null +++ b/src/.deps/bdz.Plo @@ -0,0 +1,110 @@ +bdz.lo bdz.o: bdz.c bdz.h cmph.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + cmph_types.h cmph_structs.h bdz_structs.h hash_state.h hash.h \ + jenkins_hash.h bitbool.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/assert.h \ + /usr/include/string.h debug.h + +bdz.h: + +cmph.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +cmph_types.h: + +cmph_structs.h: + +bdz_structs.h: + +hash_state.h: + +hash.h: + +jenkins_hash.h: + +bitbool.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/assert.h: + +/usr/include/string.h: + +debug.h: diff --git a/src/.deps/bitbool.Plo b/src/.deps/bitbool.Plo new file mode 100644 index 0000000..cdc3709 --- /dev/null +++ b/src/.deps/bitbool.Plo @@ -0,0 +1,5 @@ +bitbool.lo bitbool.o: bitbool.c bitbool.h cmph_types.h + +bitbool.h: + +cmph_types.h: diff --git a/src/.deps/bmz.Plo b/src/.deps/bmz.Plo new file mode 100644 index 0000000..4ad983d --- /dev/null +++ b/src/.deps/bmz.Plo @@ -0,0 +1,132 @@ +bmz.lo bmz.o: bmz.c graph.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h \ + /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h cmph_types.h bmz.h cmph.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + cmph_structs.h bmz_structs.h hash_state.h hash.h jenkins_hash.h \ + vqueue.h bitbool.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/assert.h /usr/include/string.h debug.h + +graph.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +cmph_types.h: + +bmz.h: + +cmph.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +cmph_structs.h: + +bmz_structs.h: + +hash_state.h: + +hash.h: + +jenkins_hash.h: + +vqueue.h: + +bitbool.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/assert.h: + +/usr/include/string.h: + +debug.h: diff --git a/src/.deps/bmz8.Plo b/src/.deps/bmz8.Plo new file mode 100644 index 0000000..a17ff20 --- /dev/null +++ b/src/.deps/bmz8.Plo @@ -0,0 +1,132 @@ +bmz8.lo bmz8.o: bmz8.c graph.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h \ + /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h cmph_types.h bmz8.h cmph.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + cmph_structs.h bmz8_structs.h hash_state.h hash.h jenkins_hash.h \ + vqueue.h bitbool.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/assert.h /usr/include/string.h debug.h + +graph.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +cmph_types.h: + +bmz8.h: + +cmph.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +cmph_structs.h: + +bmz8_structs.h: + +hash_state.h: + +hash.h: + +jenkins_hash.h: + +vqueue.h: + +bitbool.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/assert.h: + +/usr/include/string.h: + +debug.h: diff --git a/src/.deps/brz.Plo b/src/.deps/brz.Plo new file mode 100644 index 0000000..fa6b5f5 --- /dev/null +++ b/src/.deps/brz.Plo @@ -0,0 +1,141 @@ +brz.lo brz.o: brz.c graph.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h \ + /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h cmph_types.h fch.h cmph.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + fch_structs.h hash_state.h hash.h jenkins_hash.h bmz8.h bmz8_structs.h \ + brz.h cmph_structs.h brz_structs.h buffer_manager.h bitbool.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/assert.h /usr/include/string.h debug.h + +graph.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +cmph_types.h: + +fch.h: + +cmph.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +fch_structs.h: + +hash_state.h: + +hash.h: + +jenkins_hash.h: + +bmz8.h: + +bmz8_structs.h: + +brz.h: + +cmph_structs.h: + +brz_structs.h: + +buffer_manager.h: + +bitbool.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/assert.h: + +/usr/include/string.h: + +debug.h: diff --git a/src/.deps/buffer_entry.Plo b/src/.deps/buffer_entry.Plo new file mode 100644 index 0000000..5f8561d --- /dev/null +++ b/src/.deps/buffer_entry.Plo @@ -0,0 +1,82 @@ +buffer_entry.lo buffer_entry.o: buffer_entry.c buffer_entry.h \ + cmph_types.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/assert.h /usr/include/stdlib.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/string.h + +buffer_entry.h: + +cmph_types.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/assert.h: + +/usr/include/stdlib.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/string.h: diff --git a/src/.deps/buffer_manager.Plo b/src/.deps/buffer_manager.Plo new file mode 100644 index 0000000..1838157 --- /dev/null +++ b/src/.deps/buffer_manager.Plo @@ -0,0 +1,82 @@ +buffer_manager.lo buffer_manager.o: buffer_manager.c buffer_manager.h \ + cmph_types.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + buffer_entry.h /usr/include/assert.h /usr/include/stdlib.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h + +buffer_manager.h: + +cmph_types.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +buffer_entry.h: + +/usr/include/assert.h: + +/usr/include/stdlib.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: diff --git a/src/.deps/chm.Plo b/src/.deps/chm.Plo new file mode 100644 index 0000000..e6d838e --- /dev/null +++ b/src/.deps/chm.Plo @@ -0,0 +1,130 @@ +chm.lo chm.o: chm.c graph.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h \ + /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h cmph_types.h chm.h cmph.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + cmph_structs.h chm_structs.h hash_state.h hash.h jenkins_hash.h \ + bitbool.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/assert.h /usr/include/string.h debug.h + +graph.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +cmph_types.h: + +chm.h: + +cmph.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +cmph_structs.h: + +chm_structs.h: + +hash_state.h: + +hash.h: + +jenkins_hash.h: + +bitbool.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/assert.h: + +/usr/include/string.h: + +debug.h: diff --git a/src/.deps/cmph.Plo b/src/.deps/cmph.Plo new file mode 100644 index 0000000..3b21433 --- /dev/null +++ b/src/.deps/cmph.Plo @@ -0,0 +1,99 @@ +cmph.lo cmph.o: cmph.c cmph.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + cmph_types.h cmph_structs.h chm.h bmz.h bmz8.h brz.h fch.h bdz.h \ + /usr/include/assert.h /usr/include/string.h debug.h + +cmph.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +cmph_types.h: + +cmph_structs.h: + +chm.h: + +bmz.h: + +bmz8.h: + +brz.h: + +fch.h: + +bdz.h: + +/usr/include/assert.h: + +/usr/include/string.h: + +debug.h: diff --git a/src/.deps/cmph_structs.Plo b/src/.deps/cmph_structs.Plo new file mode 100644 index 0000000..f18814c --- /dev/null +++ b/src/.deps/cmph_structs.Plo @@ -0,0 +1,84 @@ +cmph_structs.lo cmph_structs.o: cmph_structs.c cmph_structs.h cmph.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + cmph_types.h /usr/include/string.h debug.h + +cmph_structs.h: + +cmph.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +cmph_types.h: + +/usr/include/string.h: + +debug.h: diff --git a/src/.deps/djb2_hash.Plo b/src/.deps/djb2_hash.Plo new file mode 100644 index 0000000..b7626d8 --- /dev/null +++ b/src/.deps/djb2_hash.Plo @@ -0,0 +1,57 @@ +djb2_hash.lo djb2_hash.o: djb2_hash.c djb2_hash.h hash.h cmph_types.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h + +djb2_hash.h: + +hash.h: + +cmph_types.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: diff --git a/src/.deps/fch.Plo b/src/.deps/fch.Plo new file mode 100644 index 0000000..e558f50 --- /dev/null +++ b/src/.deps/fch.Plo @@ -0,0 +1,112 @@ +fch.lo fch.o: fch.c fch.h cmph.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + cmph_types.h cmph_structs.h fch_structs.h hash_state.h hash.h \ + jenkins_hash.h bitbool.h fch_buckets.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/assert.h \ + /usr/include/string.h debug.h + +fch.h: + +cmph.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +cmph_types.h: + +cmph_structs.h: + +fch_structs.h: + +hash_state.h: + +hash.h: + +jenkins_hash.h: + +bitbool.h: + +fch_buckets.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/assert.h: + +/usr/include/string.h: + +debug.h: diff --git a/src/.deps/fch_buckets.Plo b/src/.deps/fch_buckets.Plo new file mode 100644 index 0000000..4158c4c --- /dev/null +++ b/src/.deps/fch_buckets.Plo @@ -0,0 +1,84 @@ +fch_buckets.lo fch_buckets.o: fch_buckets.c vqueue.h cmph_types.h \ + fch_buckets.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/assert.h /usr/include/stdlib.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h debug.h + +vqueue.h: + +cmph_types.h: + +fch_buckets.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/assert.h: + +/usr/include/stdlib.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +debug.h: diff --git a/src/.deps/fnv_hash.Plo b/src/.deps/fnv_hash.Plo new file mode 100644 index 0000000..b1fc451 --- /dev/null +++ b/src/.deps/fnv_hash.Plo @@ -0,0 +1,57 @@ +fnv_hash.lo fnv_hash.o: fnv_hash.c fnv_hash.h hash.h cmph_types.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h + +fnv_hash.h: + +hash.h: + +cmph_types.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: diff --git a/src/.deps/graph.Plo b/src/.deps/graph.Plo new file mode 100644 index 0000000..7dee825 --- /dev/null +++ b/src/.deps/graph.Plo @@ -0,0 +1,107 @@ +graph.lo graph.o: graph.c graph.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h \ + /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h cmph_types.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/assert.h /usr/include/string.h \ + vstack.h bitbool.h debug.h + +graph.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +cmph_types.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/stdlib.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/assert.h: + +/usr/include/string.h: + +vstack.h: + +bitbool.h: + +debug.h: diff --git a/src/.deps/hash.Plo b/src/.deps/hash.Plo new file mode 100644 index 0000000..504f80f --- /dev/null +++ b/src/.deps/hash.Plo @@ -0,0 +1,107 @@ +hash.lo hash.o: hash.c hash_state.h hash.h cmph_types.h jenkins_hash.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/assert.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/string.h debug.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h + +hash_state.h: + +hash.h: + +cmph_types.h: + +jenkins_hash.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/assert.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/string.h: + +debug.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: diff --git a/src/.deps/jenkins_hash.Plo b/src/.deps/jenkins_hash.Plo new file mode 100644 index 0000000..e11c739 --- /dev/null +++ b/src/.deps/jenkins_hash.Plo @@ -0,0 +1,112 @@ +jenkins_hash.lo jenkins_hash.o: jenkins_hash.c jenkins_hash.h hash.h \ + cmph_types.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/string.h debug.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h + +jenkins_hash.h: + +hash.h: + +cmph_types.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/string.h: + +debug.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: diff --git a/src/.deps/main.Po b/src/.deps/main.Po new file mode 100644 index 0000000..acc4498 --- /dev/null +++ b/src/.deps/main.Po @@ -0,0 +1,127 @@ +main.o main.o: main.c /usr/include/getopt.h /usr/include/ctype.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/types.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/bits/typesizes.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-x86_64/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h /usr/include/string.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/assert.h cmph.h \ + cmph_types.h hash.h ../config.h + +/usr/include/getopt.h: + +/usr/include/ctype.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/types.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/stdlib.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-x86_64/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/assert.h: + +cmph.h: + +cmph_types.h: + +hash.h: + +../config.h: diff --git a/src/.deps/sdbm_hash.Plo b/src/.deps/sdbm_hash.Plo new file mode 100644 index 0000000..01e075c --- /dev/null +++ b/src/.deps/sdbm_hash.Plo @@ -0,0 +1,57 @@ +sdbm_hash.lo sdbm_hash.o: sdbm_hash.c sdbm_hash.h hash.h cmph_types.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h + +sdbm_hash.h: + +hash.h: + +cmph_types.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: diff --git a/src/.deps/vqueue.Plo b/src/.deps/vqueue.Plo new file mode 100644 index 0000000..fd26da8 --- /dev/null +++ b/src/.deps/vqueue.Plo @@ -0,0 +1,80 @@ +vqueue.lo vqueue.o: vqueue.c vqueue.h cmph_types.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/assert.h /usr/include/stdlib.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h + +vqueue.h: + +cmph_types.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/assert.h: + +/usr/include/stdlib.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: diff --git a/src/.deps/vstack.Plo b/src/.deps/vstack.Plo new file mode 100644 index 0000000..0c675e7 --- /dev/null +++ b/src/.deps/vstack.Plo @@ -0,0 +1,82 @@ +vstack.lo vstack.o: vstack.c vstack.h cmph_types.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/assert.h debug.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h + +vstack.h: + +cmph_types.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stddef.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/assert.h: + +debug.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.1.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: diff --git a/src/.deps/wingetopt.Po b/src/.deps/wingetopt.Po new file mode 100644 index 0000000..45bcbe2 --- /dev/null +++ b/src/.deps/wingetopt.Po @@ -0,0 +1 @@ +wingetopt.o wingetopt.o: wingetopt.c diff --git a/src/.libs/cmph b/src/.libs/cmph new file mode 100755 index 0000000000000000000000000000000000000000..7f419d05d384c9c4c11f58f1de2df7898483e450 GIT binary patch literal 20558 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 literal 0 HcmV?d00001 diff --git a/src/.libs/libcmph.a b/src/.libs/libcmph.a new file mode 100644 index 0000000000000000000000000000000000000000..ceb5bfd48c7216451af26cefbcb579d4ae407f5b GIT binary patch literal 163574 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

#}1?b8QMu<7|9$ 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 literal 0 HcmV?d00001 diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..f0b478e --- /dev/null +++ b/src/Makefile @@ -0,0 +1,575 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# src/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + + +pkgdatadir = $(datadir)/cmph +pkglibdir = $(libdir)/cmph +pkgincludedir = $(includedir)/cmph +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +bin_PROGRAMS = cmph$(EXEEXT) +subdir = src +DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(includedir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +libcmph_la_LIBADD = +am_libcmph_la_OBJECTS = bitbool.lo hash.lo jenkins_hash.lo vstack.lo \ + vqueue.lo graph.lo cmph.lo cmph_structs.lo chm.lo bmz.lo \ + bmz8.lo bdz.lo buffer_manager.lo buffer_entry.lo brz.lo fch.lo \ + fch_buckets.lo +libcmph_la_OBJECTS = $(am_libcmph_la_OBJECTS) +libcmph_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libcmph_la_LDFLAGS) $(LDFLAGS) -o $@ +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_cmph_OBJECTS = main.$(OBJEXT) wingetopt.$(OBJEXT) +cmph_OBJECTS = $(am_cmph_OBJECTS) +cmph_DEPENDENCIES = libcmph.la +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libcmph_la_SOURCES) $(cmph_SOURCES) +DIST_SOURCES = $(libcmph_la_SOURCES) $(cmph_SOURCES) +includeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(include_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/fbotelho/doutorado/algoritmos/cmph/missing --run aclocal-1.10 +AMTAR = ${SHELL} /home/fbotelho/doutorado/algoritmos/cmph/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /home/fbotelho/doutorado/algoritmos/cmph/missing --run autoconf +AUTOHEADER = ${SHELL} /home/fbotelho/doutorado/algoritmos/cmph/missing --run autoheader +AUTOMAKE = ${SHELL} /home/fbotelho/doutorado/algoritmos/cmph/missing --run automake-1.10 +AWK = mawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -Wall -Werror -lm +CPP = gcc -E +CPPFLAGS = +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=gcc3 +CXXFLAGS = -g -O2 +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO = echo +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EXEEXT = +F77 = +FFLAGS = +GETCONF = getconf +GREP = /bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LN_S = ln -s +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/fbotelho/doutorado/algoritmos/cmph/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +OBJEXT = o +PACKAGE = cmph +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 0.7 +abs_builddir = /home/fbotelho/doutorado/algoritmos/cmph/src +abs_srcdir = /home/fbotelho/doutorado/algoritmos/cmph/src +abs_top_builddir = /home/fbotelho/doutorado/algoritmos/cmph +abs_top_srcdir = /home/fbotelho/doutorado/algoritmos/cmph +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = $(SHELL) /home/fbotelho/doutorado/algoritmos/cmph/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_builddir = .. +top_srcdir = .. +lib_LTLIBRARIES = libcmph.la +include_HEADERS = cmph.h cmph_types.h +libcmph_la_SOURCES = debug.h\ + bitbool.h bitbool.c\ + cmph_types.h\ + hash.h hash_state.h hash.c\ + jenkins_hash.h jenkins_hash.c\ + vstack.h vstack.c\ + vqueue.h vqueue.c\ + graph.h graph.c\ + cmph.h cmph.c\ + cmph_structs.h cmph_structs.c\ + chm.h chm_structs.h chm.c\ + bmz.h bmz_structs.h bmz.c\ + bmz8.h bmz8_structs.h bmz8.c\ + bdz.h bdz_structs.h bdz.c\ + buffer_manager.h buffer_manager.c\ + buffer_entry.h buffer_entry.c\ + brz.h brz_structs.h brz.c\ + fch.h fch_structs.h fch.c\ + fch_buckets.h fch_buckets.c + +libcmph_la_LDFLAGS = -version-info 0:0:0 +cmph_SOURCES = main.c wingetopt.h wingetopt.c +cmph_LDADD = libcmph.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libcmph.la: $(libcmph_la_OBJECTS) $(libcmph_la_DEPENDENCIES) + $(libcmph_la_LINK) -rpath $(libdir) $(libcmph_la_OBJECTS) $(libcmph_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +cmph$(EXEEXT): $(cmph_OBJECTS) $(cmph_DEPENDENCIES) + @rm -f cmph$(EXEEXT) + $(LINK) $(cmph_OBJECTS) $(cmph_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/bdz.Plo +include ./$(DEPDIR)/bitbool.Plo +include ./$(DEPDIR)/bmz.Plo +include ./$(DEPDIR)/bmz8.Plo +include ./$(DEPDIR)/brz.Plo +include ./$(DEPDIR)/buffer_entry.Plo +include ./$(DEPDIR)/buffer_manager.Plo +include ./$(DEPDIR)/chm.Plo +include ./$(DEPDIR)/cmph.Plo +include ./$(DEPDIR)/cmph_structs.Plo +include ./$(DEPDIR)/fch.Plo +include ./$(DEPDIR)/fch_buckets.Plo +include ./$(DEPDIR)/graph.Plo +include ./$(DEPDIR)/hash.Plo +include ./$(DEPDIR)/jenkins_hash.Plo +include ./$(DEPDIR)/main.Po +include ./$(DEPDIR)/vqueue.Plo +include ./$(DEPDIR)/vstack.Plo +include ./$(DEPDIR)/wingetopt.Po + +.c.o: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ + $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ + rm -f "$(DESTDIR)$(includedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-includeHEADERS + +install-dvi: install-dvi-am + +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \ + uninstall-libLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libLTLIBRARIES clean-libtool ctags \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-includeHEADERS install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-includeHEADERS uninstall-libLTLIBRARIES + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/Makefile.am b/src/Makefile.am index 3140214..ab7befe 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -6,9 +6,6 @@ libcmph_la_SOURCES = debug.h\ cmph_types.h\ hash.h hash_state.h hash.c\ jenkins_hash.h jenkins_hash.c\ - djb2_hash.h djb2_hash.c\ - sdbm_hash.h sdbm_hash.c\ - fnv_hash.h fnv_hash.c\ vstack.h vstack.c\ vqueue.h vqueue.c\ graph.h graph.c\ @@ -17,6 +14,7 @@ libcmph_la_SOURCES = debug.h\ chm.h chm_structs.h chm.c\ bmz.h bmz_structs.h bmz.c\ bmz8.h bmz8_structs.h bmz8.c\ + bdz.h bdz_structs.h bdz.c\ buffer_manager.h buffer_manager.c\ buffer_entry.h buffer_entry.c\ brz.h brz_structs.h brz.c\ diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..56df598 --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,575 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = cmph$(EXEEXT) +subdir = src +DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(includedir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +libcmph_la_LIBADD = +am_libcmph_la_OBJECTS = bitbool.lo hash.lo jenkins_hash.lo vstack.lo \ + vqueue.lo graph.lo cmph.lo cmph_structs.lo chm.lo bmz.lo \ + bmz8.lo bdz.lo buffer_manager.lo buffer_entry.lo brz.lo fch.lo \ + fch_buckets.lo +libcmph_la_OBJECTS = $(am_libcmph_la_OBJECTS) +libcmph_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libcmph_la_LDFLAGS) $(LDFLAGS) -o $@ +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_cmph_OBJECTS = main.$(OBJEXT) wingetopt.$(OBJEXT) +cmph_OBJECTS = $(am_cmph_OBJECTS) +cmph_DEPENDENCIES = libcmph.la +DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libcmph_la_SOURCES) $(cmph_SOURCES) +DIST_SOURCES = $(libcmph_la_SOURCES) $(cmph_SOURCES) +includeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(include_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GETCONF = @GETCONF@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +lib_LTLIBRARIES = libcmph.la +include_HEADERS = cmph.h cmph_types.h +libcmph_la_SOURCES = debug.h\ + bitbool.h bitbool.c\ + cmph_types.h\ + hash.h hash_state.h hash.c\ + jenkins_hash.h jenkins_hash.c\ + vstack.h vstack.c\ + vqueue.h vqueue.c\ + graph.h graph.c\ + cmph.h cmph.c\ + cmph_structs.h cmph_structs.c\ + chm.h chm_structs.h chm.c\ + bmz.h bmz_structs.h bmz.c\ + bmz8.h bmz8_structs.h bmz8.c\ + bdz.h bdz_structs.h bdz.c\ + buffer_manager.h buffer_manager.c\ + buffer_entry.h buffer_entry.c\ + brz.h brz_structs.h brz.c\ + fch.h fch_structs.h fch.c\ + fch_buckets.h fch_buckets.c + +libcmph_la_LDFLAGS = -version-info 0:0:0 +cmph_SOURCES = main.c wingetopt.h wingetopt.c +cmph_LDADD = libcmph.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libcmph.la: $(libcmph_la_OBJECTS) $(libcmph_la_DEPENDENCIES) + $(libcmph_la_LINK) -rpath $(libdir) $(libcmph_la_OBJECTS) $(libcmph_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +cmph$(EXEEXT): $(cmph_OBJECTS) $(cmph_DEPENDENCIES) + @rm -f cmph$(EXEEXT) + $(LINK) $(cmph_OBJECTS) $(cmph_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bdz.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitbool.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bmz.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bmz8.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/brz.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffer_entry.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffer_manager.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmph.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmph_structs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fch.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fch_buckets.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graph.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jenkins_hash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vqueue.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstack.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wingetopt.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ + $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ + rm -f "$(DESTDIR)$(includedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-includeHEADERS + +install-dvi: install-dvi-am + +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \ + uninstall-libLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libLTLIBRARIES clean-libtool ctags \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-includeHEADERS install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-includeHEADERS uninstall-libLTLIBRARIES + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/bdz.c b/src/bdz.c new file mode 100755 index 0000000..b01b8f4 --- /dev/null +++ b/src/bdz.c @@ -0,0 +1,599 @@ +#include "bdz.h" +#include "cmph_structs.h" +#include "bdz_structs.h" +#include "hash.h" +#include "bitbool.h" + +#include +#include +#include +#include +#include +//#define DEBUG +#include "debug.h" +#define UNASSIGNED 3 +#define NULL_EDGE 0xffffffff + +//cmph_uint32 ngrafos = 0; +//cmph_uint32 ngrafos_aciclicos = 0; +// table used for looking up the number of assigned vertices a 8-bit integer +const cmph_uint8 bdz_lookup_table[] = +{ +4, 4, 4, 3, 4, 4, 4, 3, 4, 4, 4, 3, 3, 3, 3, 2, +4, 4, 4, 3, 4, 4, 4, 3, 4, 4, 4, 3, 3, 3, 3, 2, +4, 4, 4, 3, 4, 4, 4, 3, 4, 4, 4, 3, 3, 3, 3, 2, +3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3, 2, 2, 2, 2, 1, +4, 4, 4, 3, 4, 4, 4, 3, 4, 4, 4, 3, 3, 3, 3, 2, +4, 4, 4, 3, 4, 4, 4, 3, 4, 4, 4, 3, 3, 3, 3, 2, +4, 4, 4, 3, 4, 4, 4, 3, 4, 4, 4, 3, 3, 3, 3, 2, +3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3, 2, 2, 2, 2, 1, +4, 4, 4, 3, 4, 4, 4, 3, 4, 4, 4, 3, 3, 3, 3, 2, +4, 4, 4, 3, 4, 4, 4, 3, 4, 4, 4, 3, 3, 3, 3, 2, +4, 4, 4, 3, 4, 4, 4, 3, 4, 4, 4, 3, 3, 3, 3, 2, +3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3, 2, 2, 2, 2, 1, +3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3, 2, 2, 2, 2, 1, +3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3, 2, 2, 2, 2, 1, +3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3, 2, 2, 2, 2, 1, +2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 1, 1, 1, 0 +}; + +typedef struct +{ + cmph_uint32 vertices[3]; + cmph_uint32 next_edges[3]; +}bdz_edge_t; + +typedef cmph_uint32 * bdz_queue_t; + +static void bdz_alloc_queue(bdz_queue_t * queuep, cmph_uint32 nedges) +{ + (*queuep)=malloc(nedges*sizeof(cmph_uint32)); +}; +static void bdz_free_queue(bdz_queue_t * queue) +{ + free(*queue); +}; + +typedef struct +{ + cmph_uint32 nedges; + bdz_edge_t * edges; + cmph_uint32 * first_edge; + cmph_uint8 * vert_degree; +}bdz_graph3_t; + + +static void bdz_alloc_graph3(bdz_graph3_t * graph3, cmph_uint32 nedges, cmph_uint32 nvertices) +{ + graph3->edges=malloc(nedges*sizeof(bdz_edge_t)); + graph3->first_edge=malloc(nvertices*sizeof(cmph_uint32)); + graph3->vert_degree=malloc(nvertices); +}; +static void bdz_init_graph3(bdz_graph3_t * graph3, cmph_uint32 nedges, cmph_uint32 nvertices) +{ + memset(graph3->first_edge,0xff,nvertices*sizeof(cmph_uint32)); + memset(graph3->vert_degree,0,nvertices); + graph3->nedges=0; +}; +static void bdz_free_graph3(bdz_graph3_t *graph3) +{ + free(graph3->edges); + free(graph3->first_edge); + free(graph3->vert_degree); +}; + +static void bdz_partial_free_graph3(bdz_graph3_t *graph3) +{ + free(graph3->first_edge); + free(graph3->vert_degree); + graph3->first_edge = NULL; + graph3->vert_degree = NULL; +}; + +static void bdz_add_edge(bdz_graph3_t * graph3, cmph_uint32 v0, cmph_uint32 v1, cmph_uint32 v2) +{ + graph3->edges[graph3->nedges].vertices[0]=v0; + graph3->edges[graph3->nedges].vertices[1]=v1; + graph3->edges[graph3->nedges].vertices[2]=v2; + graph3->edges[graph3->nedges].next_edges[0]=graph3->first_edge[v0]; + graph3->edges[graph3->nedges].next_edges[1]=graph3->first_edge[v1]; + graph3->edges[graph3->nedges].next_edges[2]=graph3->first_edge[v2]; + graph3->first_edge[v0]=graph3->first_edge[v1]=graph3->first_edge[v2]=graph3->nedges; + graph3->vert_degree[v0]++; + graph3->vert_degree[v1]++; + graph3->vert_degree[v2]++; + graph3->nedges++; +}; + +static void bdz_dump_graph(bdz_graph3_t* graph3, cmph_uint32 nedges, cmph_uint32 nvertices) +{ + int i; + for(i=0;iedges[i].vertices[0], + graph3->edges[i].vertices[1],graph3->edges[i].vertices[2]); + printf(" nexts %d %d %d",graph3->edges[i].next_edges[0], + graph3->edges[i].next_edges[1],graph3->edges[i].next_edges[2]); + }; + + for(i=0;ifirst_edge[i]); + + }; +}; + +static void bdz_remove_edge(bdz_graph3_t * graph3, cmph_uint32 curr_edge) +{ + cmph_uint32 i,j=0,vert,edge1,edge2; + for(i=0;i<3;i++){ + vert=graph3->edges[curr_edge].vertices[i]; + edge1=graph3->first_edge[vert]; + edge2=NULL_EDGE; + while(edge1!=curr_edge&&edge1!=NULL_EDGE){ + edge2=edge1; + if(graph3->edges[edge1].vertices[0]==vert){ + j=0; + } else if(graph3->edges[edge1].vertices[1]==vert){ + j=1; + } else + j=2; + edge1=graph3->edges[edge1].next_edges[j]; + }; + if(edge1==NULL_EDGE){ + printf("\nerror remove edge %d dump graph",curr_edge); + bdz_dump_graph(graph3,graph3->nedges,graph3->nedges+graph3->nedges/4); + exit(-1); + }; + + if(edge2!=NULL_EDGE){ + graph3->edges[edge2].next_edges[j] = + graph3->edges[edge1].next_edges[i]; + } else + graph3->first_edge[vert]= + graph3->edges[edge1].next_edges[i]; + graph3->vert_degree[vert]--; + }; + +}; + +static int bdz_generate_queue(cmph_uint32 nedges, cmph_uint32 nvertices, bdz_queue_t queue, bdz_graph3_t* graph3) +{ + cmph_uint32 i,v0,v1,v2; + cmph_uint32 queue_head=0,queue_tail=0; + cmph_uint32 curr_edge; + cmph_uint32 tmp_edge; + cmph_uint8 * marked_edge =malloc((nedges >> 3) + 1); + memset(marked_edge, 0, (nedges >> 3) + 1); + + for(i=0;iedges[i].vertices[0]; + v1=graph3->edges[i].vertices[1]; + v2=graph3->edges[i].vertices[2]; + if(graph3->vert_degree[v0]==1 || + graph3->vert_degree[v1]==1 || + graph3->vert_degree[v2]==1){ + if(!GETBIT(marked_edge,i)) { + queue[queue_head++]=i; + SETBIT(marked_edge,i); + } + }; + }; + while(queue_tail!=queue_head){ + curr_edge=queue[queue_tail++]; + bdz_remove_edge(graph3,curr_edge); + v0=graph3->edges[curr_edge].vertices[0]; + v1=graph3->edges[curr_edge].vertices[1]; + v2=graph3->edges[curr_edge].vertices[2]; + if(graph3->vert_degree[v0]==1 ) { + tmp_edge=graph3->first_edge[v0]; + if(!GETBIT(marked_edge,tmp_edge)) { + queue[queue_head++]=tmp_edge; + SETBIT(marked_edge,tmp_edge); + }; + + }; + if(graph3->vert_degree[v1]==1) { + tmp_edge=graph3->first_edge[v1]; + if(!GETBIT(marked_edge,tmp_edge)){ + queue[queue_head++]=tmp_edge; + SETBIT(marked_edge,tmp_edge); + }; + + }; + if(graph3->vert_degree[v2]==1){ + tmp_edge=graph3->first_edge[v2]; + if(!GETBIT(marked_edge,tmp_edge)){ + queue[queue_head++]=tmp_edge; + SETBIT(marked_edge,tmp_edge); + }; + }; + }; + free(marked_edge); + return queue_head-nedges;/* returns 0 if successful otherwies return negative number*/ +}; + +static int bdz_mapping(cmph_config_t *mph, bdz_graph3_t* graph3, bdz_queue_t queue); +static void assigning(bdz_config_data_t *bdz, bdz_graph3_t* graph3, bdz_queue_t queue); +static void ranking(bdz_config_data_t *bdz); +static cmph_uint32 rank(bdz_data_t *bdz, cmph_uint32 vertex); + +bdz_config_data_t *bdz_config_new() +{ + bdz_config_data_t *bdz; + bdz = (bdz_config_data_t *)malloc(sizeof(bdz_config_data_t)); + assert(bdz); + memset(bdz, 0, sizeof(bdz_config_data_t)); + bdz->hashfunc = CMPH_HASH_JENKINS; + bdz->g = NULL; + bdz->hl = NULL; + bdz->k = 0; //kth index in ranktable, $k = log_2(n=3r)/\varepsilon$ + bdz->b = 7; // number of bits of k + bdz->ranktablesize = 0; //number of entries in ranktable, $n/k +1$ + bdz->ranktable = NULL; // rank table + return bdz; +} + +void bdz_config_destroy(cmph_config_t *mph) +{ + bdz_config_data_t *data = (bdz_config_data_t *)mph->data; + DEBUGP("Destroying algorithm dependent data\n"); + free(data); +} + +void bdz_config_set_b(cmph_config_t *mph, cmph_uint8 b) +{ + bdz_config_data_t *bdz = (bdz_config_data_t *)mph->data; + if (b <= 2) b = 7; // validating restrictions over parameter b. + bdz->b = b; + DEBUGP("b: %u\n", b); + +} + +void bdz_config_set_hashfuncs(cmph_config_t *mph, CMPH_HASH *hashfuncs) +{ + bdz_config_data_t *bdz = (bdz_config_data_t *)mph->data; + CMPH_HASH *hashptr = hashfuncs; + cmph_uint32 i = 0; + while(*hashptr != CMPH_HASH_COUNT) + { + if (i >= 1) break; //bdz only uses one linear hash function + bdz->hashfunc = *hashptr; + ++i, ++hashptr; + } +} + +cmph_t *bdz_new(cmph_config_t *mph, float c) +{ + cmph_t *mphf = NULL; + bdz_data_t *bdzf = NULL; + cmph_uint32 iterations; + bdz_queue_t edges; + bdz_graph3_t graph3; + bdz_config_data_t *bdz = (bdz_config_data_t *)mph->data; + if (c == 0) c = 1.25; // validating restrictions over parameter c. + DEBUGP("c: %f\n", c); + bdz->m = mph->key_source->nkeys; + bdz->r = ceil((c * mph->key_source->nkeys)/3); + bdz->n = 3*bdz->r; + + bdz->k = (1 << bdz->b); + DEBUGP("b: %u -- k: %u\n", bdz->b, bdz->k); + + bdz->ranktablesize = bdz->n/bdz->k + 2; + DEBUGP("ranktablesize: %u\n", bdz->ranktablesize); + + + bdz_alloc_graph3(&graph3, bdz->m, bdz->n); + bdz_alloc_queue(&edges,bdz->m); + DEBUGP("Created hypergraph\n"); + + DEBUGP("m (edges): %u n (vertices): %u r: %u c: %f \n", bdz->m, bdz->n, bdz->r, c); + + // Mapping step + iterations = 1000; + if (mph->verbosity) + { + fprintf(stderr, "Entering mapping step for mph creation of %u keys with graph sized %u\n", bdz->m, bdz->n); + } + while(1) + { + int ok; + DEBUGP("linear hash function \n"); + bdz->hl = hash_state_new(bdz->hashfunc, 15); + + ok = bdz_mapping(mph, &graph3, edges); + //ok = 0; + if (!ok) + { + --iterations; + hash_state_destroy(bdz->hl); + bdz->hl = NULL; + DEBUGP("%u iterations remaining\n", iterations); + if (mph->verbosity) + { + fprintf(stderr, "acyclic graph creation failure - %u iterations remaining\n", iterations); + } + if (iterations == 0) break; + } + else break; + } + + if (iterations == 0) + { + bdz_free_queue(&edges); + bdz_free_graph3(&graph3); + return NULL; + } + bdz_partial_free_graph3(&graph3); + // Assigning step + if (mph->verbosity) + { + fprintf(stderr, "Entering assigning step for mph creation of %u keys with graph sized %u\n", bdz->m, bdz->n); + } + assigning(bdz, &graph3, edges); + + bdz_free_queue(&edges); + bdz_free_graph3(&graph3); + if (mph->verbosity) + { + fprintf(stderr, "Entering ranking step for mph creation of %u keys with graph sized %u\n", bdz->m, bdz->n); + } + ranking(bdz); + + mphf = (cmph_t *)malloc(sizeof(cmph_t)); + mphf->algo = mph->algo; + bdzf = (bdz_data_t *)malloc(sizeof(bdz_data_t)); + bdzf->g = bdz->g; + bdz->g = NULL; //transfer memory ownership + bdzf->hl = bdz->hl; + bdz->hl = NULL; //transfer memory ownership + bdzf->ranktable = bdz->ranktable; + bdz->ranktable = NULL; //transfer memory ownership + bdzf->ranktablesize = bdz->ranktablesize; + bdzf->k = bdz->k; + bdzf->b = bdz->b; + bdzf->n = bdz->n; + bdzf->m = bdz->m; + bdzf->r = bdz->r; + mphf->data = bdzf; + mphf->size = bdz->m; + + DEBUGP("Successfully generated minimal perfect hash\n"); + if (mph->verbosity) + { + fprintf(stderr, "Successfully generated minimal perfect hash function\n"); + } + + return mphf; +} + + +static int bdz_mapping(cmph_config_t *mph, bdz_graph3_t* graph3, bdz_queue_t queue) +{ + cmph_uint32 e; + int cycles = 0; + cmph_uint32 hl[3]; + bdz_config_data_t *bdz = (bdz_config_data_t *)mph->data; + bdz_init_graph3(graph3, bdz->m, bdz->n); + mph->key_source->rewind(mph->key_source->data); + for (e = 0; e < mph->key_source->nkeys; ++e) + { + cmph_uint32 h0, h1, h2; + cmph_uint32 keylen; + char *key = NULL; + mph->key_source->read(mph->key_source->data, &key, &keylen); + hash_vector(bdz->hl, key, keylen,hl); + h0 = hl[0] % bdz->r; + h1 = hl[1] % bdz->r + bdz->r; + h2 = hl[2] % bdz->r + (bdz->r << 1); + mph->key_source->dispose(mph->key_source->data, key, keylen); + bdz_add_edge(graph3,h0,h1,h2); + } + cycles = bdz_generate_queue(bdz->m, bdz->n, queue, graph3); + return (cycles == 0); +} + +static void assigning(bdz_config_data_t *bdz, bdz_graph3_t* graph3, bdz_queue_t queue) +{ + cmph_uint32 i; + cmph_uint32 nedges=graph3->nedges; + cmph_uint32 curr_edge; + cmph_uint32 v0,v1,v2; + cmph_uint8 * marked_vertices =malloc((bdz->n >> 3) + 1); + bdz->g = (cmph_uint8 *)calloc((bdz->n >> 2)+1, sizeof(cmph_uint8)); + memset(marked_vertices, 0, (bdz->n >> 3) + 1); + memset(bdz->g, 0xff, (bdz->n >> 2) + 1); + + for(i=nedges-1;i+1>=1;i--){ + curr_edge=queue[i]; + v0=graph3->edges[curr_edge].vertices[0]; + v1=graph3->edges[curr_edge].vertices[1]; + v2=graph3->edges[curr_edge].vertices[2]; + DEBUGP("B:%u %u %u -- %u %u %u\n", v0, v1, v2, GETVALUE(bdz->g, v0), GETVALUE(bdz->g, v1), GETVALUE(bdz->g, v2)); + if(!GETBIT(marked_vertices, v0)){ + if(!GETBIT(marked_vertices,v1)) + { + SETVALUE(bdz->g, v1, UNASSIGNED); + SETBIT(marked_vertices, v1); + } + if(!GETBIT(marked_vertices,v2)) + { + SETVALUE(bdz->g, v2, UNASSIGNED); + SETBIT(marked_vertices, v2); + } + SETVALUE(bdz->g, v0, (6-(GETVALUE(bdz->g, v1) + GETVALUE(bdz->g,v2)))%3); + SETBIT(marked_vertices, v0); + } else if(!GETBIT(marked_vertices, v1)) { + if(!GETBIT(marked_vertices, v2)) + { + SETVALUE(bdz->g, v2, UNASSIGNED); + SETBIT(marked_vertices, v2); + } + SETVALUE(bdz->g, v1, (7-(GETVALUE(bdz->g, v0)+GETVALUE(bdz->g, v2)))%3); + SETBIT(marked_vertices, v1); + }else { + SETVALUE(bdz->g, v2, (8-(GETVALUE(bdz->g,v0)+GETVALUE(bdz->g, v1)))%3); + SETBIT(marked_vertices, v2); + } + DEBUGP("A:%u %u %u -- %u %u %u\n", v0, v1, v2, GETVALUE(bdz->g, v0), GETVALUE(bdz->g, v1), GETVALUE(bdz->g, v2)); + }; + free(marked_vertices); +} + + +static void ranking(bdz_config_data_t *bdz) +{ + cmph_uint32 i, j, offset = 0, count = 0, size = (bdz->k >> 2), nbytes_total = (bdz->n >> 2)+1, nbytes; + bdz->ranktable = (cmph_uint32 *)calloc(bdz->ranktablesize, sizeof(cmph_uint32)); + // ranktable computation + bdz->ranktable[0] = 0; + i = 1; + while(1) + { + nbytes = size < nbytes_total? size : nbytes_total; + for(j = 0; j < nbytes; j++) + { + count += bdz_lookup_table[*(bdz->g + offset + j)]; + } + if(i == bdz->ranktablesize) fprintf(stderr, "i:%u == bdz->ranktablesize:%u\n", i, bdz->ranktablesize); + assert(i < bdz->ranktablesize); + bdz->ranktable[i] = count; + offset += nbytes; + if(size >= nbytes_total) break; + nbytes_total -= size; + i++; + } +} + + +int bdz_dump(cmph_t *mphf, FILE *fd) +{ + char *buf = NULL; + cmph_uint32 buflen; + bdz_data_t *data = (bdz_data_t *)mphf->data; + __cmph_dump(mphf, fd); + + hash_state_dump(data->hl, &buf, &buflen); + DEBUGP("Dumping hash state with %u bytes to disk\n", buflen); + fwrite(&buflen, sizeof(cmph_uint32), 1, fd); + fwrite(buf, buflen, 1, fd); + free(buf); + + fwrite(&(data->n), sizeof(cmph_uint32), 1, fd); + fwrite(&(data->m), sizeof(cmph_uint32), 1, fd); + fwrite(&(data->r), sizeof(cmph_uint32), 1, fd); + + fwrite(data->g, sizeof(cmph_uint8)*((data->n >> 2) +1), 1, fd); + + fwrite(&(data->k), sizeof(cmph_uint32), 1, fd); + fwrite(&(data->b), sizeof(cmph_uint8), 1, fd); + fwrite(&(data->ranktablesize), sizeof(cmph_uint32), 1, fd); + + fwrite(data->ranktable, sizeof(cmph_uint32)*(data->ranktablesize), 1, fd); + #ifdef DEBUG + cmph_uint32 i; + fprintf(stderr, "G: "); + for (i = 0; i < data->n; ++i) fprintf(stderr, "%u ", GETVALUE(data->g, i)); + fprintf(stderr, "\n"); + #endif + return 1; +} + +void bdz_load(FILE *f, cmph_t *mphf) +{ + char *buf = NULL; + cmph_uint32 buflen; + bdz_data_t *bdz = (bdz_data_t *)malloc(sizeof(bdz_data_t)); + + DEBUGP("Loading bdz mphf\n"); + mphf->data = bdz; + + fread(&buflen, sizeof(cmph_uint32), 1, f); + DEBUGP("Hash state has %u bytes\n", buflen); + buf = (char *)malloc(buflen); + fread(buf, buflen, 1, f); + bdz->hl = hash_state_load(buf, buflen); + free(buf); + + + DEBUGP("Reading m and n\n"); + fread(&(bdz->n), sizeof(cmph_uint32), 1, f); + fread(&(bdz->m), sizeof(cmph_uint32), 1, f); + fread(&(bdz->r), sizeof(cmph_uint32), 1, f); + + bdz->g = (cmph_uint8 *)calloc((bdz->n >> 2) + 1, sizeof(cmph_uint8)); + fread(bdz->g, ((bdz->n >> 2) + 1)*sizeof(cmph_uint8), 1, f); + + fread(&(bdz->k), sizeof(cmph_uint32), 1, f); + fread(&(bdz->b), sizeof(cmph_uint8), 1, f); + fread(&(bdz->ranktablesize), sizeof(cmph_uint32), 1, f); + + bdz->ranktable = (cmph_uint32 *)calloc(bdz->ranktablesize, sizeof(cmph_uint32)); + fread(bdz->ranktable, sizeof(cmph_uint32)*(bdz->ranktablesize), 1, f); + + #ifdef DEBUG + fprintf(stderr, "G: "); + for (i = 0; i < bdz->n; ++i) fprintf(stderr, "%u ", GETVALUE(bdz->g,i)); + fprintf(stderr, "\n"); + #endif + return; +} + + +cmph_uint32 bdz_search_ph(cmph_t *mphf, const char *key, cmph_uint32 keylen) +{ + bdz_data_t *bdz = mphf->data; + cmph_uint32 hl[3]; + hash_vector(bdz->hl, key, keylen, hl); + cmph_uint32 vertex; + hl[0] = hl[0] % bdz->r; + hl[1] = hl[1] % bdz->r + bdz->r; + hl[2] = hl[2] % bdz->r + (bdz->r << 1); + vertex = hl[(GETVALUE(bdz->g, hl[0]) + GETVALUE(bdz->g, hl[1]) + GETVALUE(bdz->g, hl[2])) % 3]; + return vertex; +} + +static inline cmph_uint32 rank(bdz_data_t *bdz, cmph_uint32 vertex) +{ + cmph_uint32 index = vertex >> bdz->b; + cmph_uint32 base_rank = bdz->ranktable[index]; + cmph_uint32 beg_idx_v = index << bdz->b; + cmph_uint32 beg_idx_b = beg_idx_v >> 2; + cmph_uint32 end_idx_b = vertex >> 2; + while(beg_idx_b < end_idx_b) + { + base_rank += bdz_lookup_table[*(bdz->g + beg_idx_b++)]; + + } + beg_idx_v = beg_idx_b << 2; + while(beg_idx_v < vertex) + { + if(GETVALUE(bdz->g, beg_idx_v) != UNASSIGNED) base_rank++; + beg_idx_v++; + } + + return base_rank; +} + +cmph_uint32 bdz_search(cmph_t *mphf, const char *key, cmph_uint32 keylen) +{ + bdz_data_t *bdz = mphf->data; + cmph_uint32 hl[3]; + hash_vector(bdz->hl, key, keylen, hl); + cmph_uint32 vertex; + hl[0] = hl[0] % bdz->r; + hl[1] = hl[1] % bdz->r + bdz->r; + hl[2] = hl[2] % bdz->r + (bdz->r << 1); + vertex = hl[(GETVALUE(bdz->g, hl[0]) + GETVALUE(bdz->g, hl[1]) + GETVALUE(bdz->g, hl[2])) % 3]; + return rank(bdz, vertex); +} + + +void bdz_destroy(cmph_t *mphf) +{ + bdz_data_t *data = (bdz_data_t *)mphf->data; + free(data->g); + hash_state_destroy(data->hl); + free(data->ranktable); + free(data); + free(mphf); +} diff --git a/src/bdz.h b/src/bdz.h new file mode 100755 index 0000000..0b15e01 --- /dev/null +++ b/src/bdz.h @@ -0,0 +1,19 @@ +#ifndef __CMPH_BDZ_H__ +#define __CMPH_BDZ_H__ + +#include "cmph.h" + +typedef struct __bdz_data_t bdz_data_t; +typedef struct __bdz_config_data_t bdz_config_data_t; + +bdz_config_data_t *bdz_config_new(); +void bdz_config_set_hashfuncs(cmph_config_t *mph, CMPH_HASH *hashfuncs); +void bdz_config_destroy(cmph_config_t *mph); +void bdz_config_set_b(cmph_config_t *mph, cmph_uint8 b); +cmph_t *bdz_new(cmph_config_t *mph, float c); + +void bdz_load(FILE *f, cmph_t *mphf); +int bdz_dump(cmph_t *mphf, FILE *f); +void bdz_destroy(cmph_t *mphf); +cmph_uint32 bdz_search(cmph_t *mphf, const char *key, cmph_uint32 keylen); +#endif diff --git a/src/bdz.lo b/src/bdz.lo deleted file mode 100644 index 502bc0e..0000000 --- a/src/bdz.lo +++ /dev/null @@ -1,12 +0,0 @@ -# bdz.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/bdz.o' - -# Name of the non-PIC object. -non_pic_object='bdz.o' - diff --git a/src/bdz_gen_lookup_table.c b/src/bdz_gen_lookup_table.c new file mode 100755 index 0000000..b8f6606 --- /dev/null +++ b/src/bdz_gen_lookup_table.c @@ -0,0 +1,33 @@ +#include +#include +#include +void help(char * prname) +{ + fprintf(stderr, "USE: %s \n", prname); + exit(1); +} + +int main(int argc, char ** argv) +{ + if(argc != 3) help(argv[0]); + int n = atoi(argv[1]); + int wordsize = (atoi(argv[2]) >> 1); + int i, j, n_assigned; + for(i = 0; i < n; i++) + { + int num = i; + n_assigned = 0; + for(j = 0; j < wordsize; j++) + { + if ((num & 0x0003) != 3) + { + n_assigned++; + //fprintf(stderr, "num:%d\n", num); + } + num = num >> 2; + } + if(i%16 == 0) fprintf(stderr, "\n"); + fprintf(stderr, "%d, ", n_assigned); + } + fprintf(stderr, "\n"); +} diff --git a/src/bdz_structs.h b/src/bdz_structs.h new file mode 100755 index 0000000..ba7dc3c --- /dev/null +++ b/src/bdz_structs.h @@ -0,0 +1,36 @@ +#ifndef __CMPH_BDZ_STRUCTS_H__ +#define __CMPH_BDZ_STRUCTS_H__ + +#include "hash_state.h" + +struct __bdz_data_t +{ + cmph_uint32 m; //edges (words) count + cmph_uint32 n; //vertex count + cmph_uint32 r; //partition vertex count + cmph_uint8 *g; + hash_state_t *hl; // linear hashing + + cmph_uint32 k; //kth index in ranktable, $k = log_2(n=3r)/\varepsilon$ + cmph_uint8 b; // number of bits of k + cmph_uint32 ranktablesize; //number of entries in ranktable, $n/k +1$ + cmph_uint32 *ranktable; // rank table +}; + + +struct __bdz_config_data_t +{ + cmph_uint32 m; //edges (words) count + cmph_uint32 n; //vertex count + cmph_uint32 r; //partition vertex count + cmph_uint8 *g; + hash_state_t *hl; // linear hashing + + cmph_uint32 k; //kth index in ranktable, $k = log_2(n=3r)/\varepsilon$ + cmph_uint8 b; // number of bits of k + cmph_uint32 ranktablesize; //number of entries in ranktable, $n/k +1$ + cmph_uint32 *ranktable; // rank table + CMPH_HASH hashfunc; +}; + +#endif diff --git a/src/bitbool.c b/src/bitbool.c index 07279e4..a97b1ae 100644 --- a/src/bitbool.c +++ b/src/bitbool.c @@ -1,2 +1,3 @@ #include "bitbool.h" const cmph_uint8 bitmask[] = { 1, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6, 1 << 7 }; +const cmph_uint8 valuemask[] = { 0xfc, 0xf3, 0xcf, 0x3f}; diff --git a/src/bitbool.h b/src/bitbool.h index 5428919..ec0250a 100644 --- a/src/bitbool.h +++ b/src/bitbool.h @@ -2,8 +2,17 @@ #define _CMPH_BITBOOL_H__ #include "cmph_types.h" extern const cmph_uint8 bitmask[]; -#define GETBIT(array, i) (array[(i) / 8] & bitmask[(i) % 8]) -#define SETBIT(array, i) (array[(i) / 8] |= bitmask[(i) % 8]) -#define UNSETBIT(array, i) (array[(i) / 8] &= (~(bitmask[(i) % 8]))) + +#define GETBIT(array, i) ((array[i >> 3] & bitmask[i & 0x00000007]) >> (i & 0x00000007)) +#define SETBIT(array, i) (array[i >> 3] |= bitmask[i & 0x00000007]) +#define UNSETBIT(array, i) (array[i >> 3] &= (~(bitmask[i & 0x00000007]))) + +//#define GETBIT(array, i) (array[(i) / 8] & bitmask[(i) % 8]) +//#define SETBIT(array, i) (array[(i) / 8] |= bitmask[(i) % 8]) +//#define UNSETBIT(array, i) (array[(i) / 8] &= (~(bitmask[(i) % 8]))) + +extern const cmph_uint8 valuemask[]; +#define SETVALUE(array, i, v) (array[i >> 2] &= ((v << ((i & 0x00000003) << 1)) | valuemask[i & 0x00000003])) +#define GETVALUE(array, i) ((array[i >> 2] >> ((i & 0x00000003) << 1)) & 0x00000003) #endif diff --git a/src/bitbool.lo b/src/bitbool.lo deleted file mode 100644 index c354ba1..0000000 --- a/src/bitbool.lo +++ /dev/null @@ -1,12 +0,0 @@ -# bitbool.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/bitbool.o' - -# Name of the non-PIC object. -non_pic_object='bitbool.o' - diff --git a/src/bmz.c b/src/bmz.c index 7371c0e..ba972ff 100644 --- a/src/bmz.c +++ b/src/bmz.c @@ -226,7 +226,7 @@ static cmph_uint8 bmz_traverse_critical_nodes(bmz_config_data_t *bmz, cmph_uint3 vqueue_destroy(q); return 1; // restart mapping step. } - if (GETBIT(used_edges, next_g + bmz->g[lav])) + if (GETBIT(used_edges, (next_g + bmz->g[lav]))) { collision = 1; break; @@ -241,7 +241,7 @@ static cmph_uint8 bmz_traverse_critical_nodes(bmz_config_data_t *bmz, cmph_uint3 { if (graph_node_is_critical(bmz->graph, lav) && GETBIT(visited, lav)) { - SETBIT(used_edges,next_g + bmz->g[lav]); + SETBIT(used_edges,(next_g + bmz->g[lav])); if(next_g + bmz->g[lav] > *biggest_edge_value) *biggest_edge_value = next_g + bmz->g[lav]; } } @@ -306,7 +306,7 @@ static cmph_uint8 bmz_traverse_critical_nodes_heuristic(bmz_config_data_t *bmz, free(unused_g_values); return 1; // restart mapping step. } - if (GETBIT(used_edges, next_g + bmz->g[lav])) + if (GETBIT(used_edges, (next_g + bmz->g[lav]))) { collision = 1; break; @@ -334,7 +334,7 @@ static cmph_uint8 bmz_traverse_critical_nodes_heuristic(bmz_config_data_t *bmz, { if (graph_node_is_critical(bmz->graph, lav) && GETBIT(visited, lav)) { - SETBIT(used_edges,next_g + bmz->g[lav]); + SETBIT(used_edges,(next_g + bmz->g[lav])); if(next_g + bmz->g[lav] > *biggest_edge_value) *biggest_edge_value = next_g + bmz->g[lav]; } } diff --git a/src/bmz.lo b/src/bmz.lo deleted file mode 100644 index f22c830..0000000 --- a/src/bmz.lo +++ /dev/null @@ -1,12 +0,0 @@ -# bmz.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/bmz.o' - -# Name of the non-PIC object. -non_pic_object='bmz.o' - diff --git a/src/bmz8.c b/src/bmz8.c index 032a3bc..f18322a 100644 --- a/src/bmz8.c +++ b/src/bmz8.c @@ -233,7 +233,7 @@ static cmph_uint8 bmz8_traverse_critical_nodes(bmz8_config_data_t *bmz8, cmph_ui vqueue_destroy(q); return 1; // restart mapping step. } - if (GETBIT(used_edges, next_g + bmz8->g[lav])) + if (GETBIT(used_edges, (next_g + bmz8->g[lav]))) { collision = 1; break; @@ -248,7 +248,7 @@ static cmph_uint8 bmz8_traverse_critical_nodes(bmz8_config_data_t *bmz8, cmph_ui { if (graph_node_is_critical(bmz8->graph, lav) && GETBIT(visited, lav)) { - SETBIT(used_edges,next_g + bmz8->g[lav]); + SETBIT(used_edges,(next_g + bmz8->g[lav])); if(next_g + bmz8->g[lav] > *biggest_edge_value) *biggest_edge_value = next_g + bmz8->g[lav]; } } @@ -313,7 +313,7 @@ static cmph_uint8 bmz8_traverse_critical_nodes_heuristic(bmz8_config_data_t *bmz free(unused_g_values); return 1; // restart mapping step. } - if (GETBIT(used_edges, next_g + bmz8->g[lav])) + if (GETBIT(used_edges, (next_g + bmz8->g[lav]))) { collision = 1; break; @@ -342,7 +342,7 @@ static cmph_uint8 bmz8_traverse_critical_nodes_heuristic(bmz8_config_data_t *bmz { if (graph_node_is_critical(bmz8->graph, lav) && GETBIT(visited, lav)) { - SETBIT(used_edges,next_g + bmz8->g[lav]); + SETBIT(used_edges,(next_g + bmz8->g[lav])); if(next_g + bmz8->g[lav] > *biggest_edge_value) *biggest_edge_value = next_g + bmz8->g[lav]; } } diff --git a/src/bmz8.lo b/src/bmz8.lo deleted file mode 100644 index 590e126..0000000 --- a/src/bmz8.lo +++ /dev/null @@ -1,12 +0,0 @@ -# bmz8.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/bmz8.o' - -# Name of the non-PIC object. -non_pic_object='bmz8.o' - diff --git a/src/brz.lo b/src/brz.lo deleted file mode 100644 index 3561c61..0000000 --- a/src/brz.lo +++ /dev/null @@ -1,12 +0,0 @@ -# brz.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/brz.o' - -# Name of the non-PIC object. -non_pic_object='brz.o' - diff --git a/src/buffer_entry.lo b/src/buffer_entry.lo deleted file mode 100644 index 83f4b84..0000000 --- a/src/buffer_entry.lo +++ /dev/null @@ -1,12 +0,0 @@ -# buffer_entry.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/buffer_entry.o' - -# Name of the non-PIC object. -non_pic_object='buffer_entry.o' - diff --git a/src/buffer_manager.lo b/src/buffer_manager.lo deleted file mode 100644 index a166418..0000000 --- a/src/buffer_manager.lo +++ /dev/null @@ -1,12 +0,0 @@ -# buffer_manager.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/buffer_manager.o' - -# Name of the non-PIC object. -non_pic_object='buffer_manager.o' - diff --git a/src/chm.lo b/src/chm.lo deleted file mode 100644 index 145051d..0000000 --- a/src/chm.lo +++ /dev/null @@ -1,12 +0,0 @@ -# chm.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/chm.o' - -# Name of the non-PIC object. -non_pic_object='chm.o' - diff --git a/src/cmph b/src/cmph deleted file mode 100755 index 1d01e49..0000000 --- a/src/cmph +++ /dev/null @@ -1,131 +0,0 @@ -#! /bin/bash - -# cmph - temporary wrapper script for .libs/cmph -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# The cmph program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='/bin/sed -e 1s/^X//' -sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' - -# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command="(cd /home/fbotelho/doutorado/algoritmos/cmph/src; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \"\${LD_LIBRARY_PATH+set}\" || unset LD_LIBRARY_PATH || { LD_LIBRARY_PATH=; export LD_LIBRARY_PATH; }; }; PATH=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games\"; export PATH; gcc -Wall -Werror -o \$progdir/\$file main.o wingetopt.o -lm ./.libs/libcmph.so -Wl,--rpath -Wl,/home/fbotelho/doutorado/algoritmos/cmph/src/.libs ) " - -# This environment variable determines our operation mode. -if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then - # install mode needs the following variable: - notinst_deplibs=' libcmph.la' -else - # When we are sourced in execute mode, $file and $echo are already set. - if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then - echo="echo" - file="$0" - # Make sure echo works. - if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! - : - else - # Restart under the correct shell, and then maybe $echo will work. - exec /bin/bash "$0" --no-reexec ${1+"$@"} - fi - fi - - # Find the directory that this script lives in. - thisdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "x$thisdir" = "x$file" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'` - while test -n "$file"; do - destdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - - # If there was a directory component, then change thisdir. - if test "x$destdir" != "x$file"; then - case "$destdir" in - [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; - *) thisdir="$thisdir/$destdir" ;; - esac - fi - - file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'` - done - - # Try to get the absolute directory name. - absdir=`cd "$thisdir" && pwd` - test -n "$absdir" && thisdir="$absdir" - - program=lt-'cmph' - progdir="$thisdir/.libs" - - if test ! -f "$progdir/$program" || \ - { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \ - test "X$file" != "X$progdir/$program"; }; then - - file="$$-$program" - - if test ! -d "$progdir"; then - mkdir "$progdir" - else - rm -f "$progdir/$file" - fi - - # relink executable if necessary - if test -n "$relink_command"; then - if relink_command_output=`eval $relink_command 2>&1`; then : - else - echo "$relink_command_output" >&2 - rm -f "$progdir/$file" - exit 1 - fi - fi - - mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || - { rm -f "$progdir/$program"; - mv -f "$progdir/$file" "$progdir/$program"; } - rm -f "$progdir/$file" - fi - - if test -f "$progdir/$program"; then - if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then - # Run the actual program with our arguments. - - exec "$progdir/$program" ${1+"$@"} - - $echo "$0: cannot exec $program $*" - exit 1 - fi - else - # The program doesn't exist. - $echo "$0: error: \`$progdir/$program' does not exist" 1>&2 - $echo "This script is just a wrapper for $program." 1>&2 - echo "See the libtool documentation for more information." 1>&2 - exit 1 - fi -fi diff --git a/src/cmph.c b/src/cmph.c index 6d753d4..a4bdbd4 100644 --- a/src/cmph.c +++ b/src/cmph.c @@ -1,10 +1,11 @@ #include "cmph.h" #include "cmph_structs.h" #include "chm.h" -#include "bmz.h" +#include "bmz.h" /* included -- Fabiano */ #include "bmz8.h" /* included -- Fabiano */ #include "brz.h" /* included -- Fabiano */ #include "fch.h" /* included -- Fabiano */ +#include "bdz.h" /* included -- Fabiano */ #include #include @@ -12,7 +13,7 @@ //#define DEBUG #include "debug.h" -const char *cmph_names[] = { "bmz", "bmz8", "chm", "brz", "fch", NULL }; /* included -- Fabiano */ +const char *cmph_names[] = { "bmz", "bmz8", "chm", "brz", "fch", "bdz", NULL }; /* included -- Fabiano */ typedef struct { @@ -223,6 +224,9 @@ void cmph_config_set_algo(cmph_config_t *mph, CMPH_ALGO algo) case CMPH_FCH: fch_config_destroy(mph); break; + case CMPH_BDZ: + bdz_config_destroy(mph); + break; default: assert(0); } @@ -243,6 +247,9 @@ void cmph_config_set_algo(cmph_config_t *mph, CMPH_ALGO algo) case CMPH_FCH: mph->data = fch_config_new(); break; + case CMPH_BDZ: + mph->data = bdz_config_new(); + break; default: assert(0); } @@ -273,6 +280,10 @@ void cmph_config_set_b(cmph_config_t *mph, cmph_uint8 b) { brz_config_set_b(mph, b); } + else if (mph->algo == CMPH_BDZ) + { + bdz_config_set_b(mph, b); + } } void cmph_config_set_memory_availability(cmph_config_t *mph, cmph_uint32 memory_availability) @@ -295,13 +306,16 @@ void cmph_config_destroy(cmph_config_t *mph) bmz_config_destroy(mph); break; case CMPH_BMZ8: /* included -- Fabiano */ - bmz8_config_destroy(mph); + bmz8_config_destroy(mph); break; case CMPH_BRZ: /* included -- Fabiano */ - brz_config_destroy(mph); + brz_config_destroy(mph); break; case CMPH_FCH: /* included -- Fabiano */ - fch_config_destroy(mph); + fch_config_destroy(mph); + break; + case CMPH_BDZ: /* included -- Fabiano */ + bdz_config_destroy(mph); break; default: assert(0); @@ -333,6 +347,9 @@ void cmph_config_set_hashfuncs(cmph_config_t *mph, CMPH_HASH *hashfuncs) case CMPH_FCH: /* included -- Fabiano */ fch_config_set_hashfuncs(mph, hashfuncs); break; + case CMPH_BDZ: /* included -- Fabiano */ + bdz_config_set_hashfuncs(mph, hashfuncs); + break; default: break; } @@ -374,6 +391,10 @@ cmph_t *cmph_new(cmph_config_t *mph) DEBUGP("Creating fch hash\n"); mphf = fch_new(mph, c); break; + case CMPH_BDZ: /* included -- Fabiano */ + DEBUGP("Creating bdz hash\n"); + mphf = bdz_new(mph, c); + break; default: assert(0); } @@ -394,6 +415,8 @@ int cmph_dump(cmph_t *mphf, FILE *f) return brz_dump(mphf, f); case CMPH_FCH: /* included -- Fabiano */ return fch_dump(mphf, f); + case CMPH_BDZ: /* included -- Fabiano */ + return bdz_dump(mphf, f); default: assert(0); } @@ -429,6 +452,10 @@ cmph_t *cmph_load(FILE *f) DEBUGP("Loading fch algorithm dependent parts\n"); fch_load(f, mphf); break; + case CMPH_BDZ: /* included -- Fabiano */ + DEBUGP("Loading bdz algorithm dependent parts\n"); + bdz_load(f, mphf); + break; default: assert(0); } @@ -456,6 +483,9 @@ cmph_uint32 cmph_search(cmph_t *mphf, const char *key, cmph_uint32 keylen) case CMPH_FCH: /* included -- Fabiano */ DEBUGP("fch algorithm search\n"); return fch_search(mphf, key, keylen); + case CMPH_BDZ: /* included -- Fabiano */ + DEBUGP("bdz algorithm search\n"); + return bdz_search(mphf, key, keylen); default: assert(0); } @@ -487,6 +517,9 @@ void cmph_destroy(cmph_t *mphf) case CMPH_FCH: /* included -- Fabiano */ fch_destroy(mphf); return; + case CMPH_BDZ: /* included -- Fabiano */ + bdz_destroy(mphf); + return; default: assert(0); } diff --git a/src/cmph.lo b/src/cmph.lo deleted file mode 100644 index 8ca6720..0000000 --- a/src/cmph.lo +++ /dev/null @@ -1,12 +0,0 @@ -# cmph.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/cmph.o' - -# Name of the non-PIC object. -non_pic_object='cmph.o' - diff --git a/src/cmph_structs.lo b/src/cmph_structs.lo deleted file mode 100644 index 7fe5649..0000000 --- a/src/cmph_structs.lo +++ /dev/null @@ -1,12 +0,0 @@ -# cmph_structs.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/cmph_structs.o' - -# Name of the non-PIC object. -non_pic_object='cmph_structs.o' - diff --git a/src/cmph_types.h b/src/cmph_types.h index 941059b..1359adb 100644 --- a/src/cmph_types.h +++ b/src/cmph_types.h @@ -6,10 +6,9 @@ typedef unsigned short cmph_uint16; typedef unsigned int cmph_uint32; typedef float cmph_float32; -typedef enum { CMPH_HASH_DJB2, CMPH_HASH_FNV, CMPH_HASH_JENKINS, - CMPH_HASH_SDBM, CMPH_HASH_COUNT } CMPH_HASH; +typedef enum { CMPH_HASH_JENKINS, CMPH_HASH_COUNT } CMPH_HASH; extern const char *cmph_hash_names[]; -typedef enum { CMPH_BMZ, CMPH_BMZ8, CMPH_CHM, CMPH_BRZ, CMPH_FCH, CMPH_COUNT } CMPH_ALGO; /* included -- Fabiano */ +typedef enum { CMPH_BMZ, CMPH_BMZ8, CMPH_CHM, CMPH_BRZ, CMPH_FCH, CMPH_BDZ, CMPH_COUNT } CMPH_ALGO; /* included -- Fabiano */ extern const char *cmph_names[]; #endif diff --git a/src/fch.lo b/src/fch.lo deleted file mode 100644 index 55a0b6d..0000000 --- a/src/fch.lo +++ /dev/null @@ -1,12 +0,0 @@ -# fch.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/fch.o' - -# Name of the non-PIC object. -non_pic_object='fch.o' - diff --git a/src/fch_buckets.lo b/src/fch_buckets.lo deleted file mode 100644 index b1e8f53..0000000 --- a/src/fch_buckets.lo +++ /dev/null @@ -1,12 +0,0 @@ -# fch_buckets.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/fch_buckets.o' - -# Name of the non-PIC object. -non_pic_object='fch_buckets.o' - diff --git a/src/graph.lo b/src/graph.lo deleted file mode 100644 index 7243d89..0000000 --- a/src/graph.lo +++ /dev/null @@ -1,12 +0,0 @@ -# graph.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/graph.o' - -# Name of the non-PIC object. -non_pic_object='graph.o' - diff --git a/src/hash.c b/src/hash.c index 925043a..7a754d8 100644 --- a/src/hash.c +++ b/src/hash.c @@ -7,7 +7,7 @@ //#define DEBUG #include "debug.h" -const char *cmph_hash_names[] = { "djb2", "fnv", "jenkins", "sdbm", NULL }; +const char *cmph_hash_names[] = { "jenkins", NULL }; hash_state_t *hash_state_new(CMPH_HASH hashfunc, cmph_uint32 hashsize) { @@ -19,15 +19,6 @@ hash_state_t *hash_state_new(CMPH_HASH hashfunc, cmph_uint32 hashsize) state = (hash_state_t *)jenkins_state_new(hashsize); DEBUGP("Jenkins function created\n"); break; - case CMPH_HASH_DJB2: - state = (hash_state_t *)djb2_state_new(); - break; - case CMPH_HASH_SDBM: - state = (hash_state_t *)sdbm_state_new(); - break; - case CMPH_HASH_FNV: - state = (hash_state_t *)fnv_state_new(); - break; default: assert(0); } @@ -40,12 +31,6 @@ cmph_uint32 hash(hash_state_t *state, const char *key, cmph_uint32 keylen) { case CMPH_HASH_JENKINS: return jenkins_hash((jenkins_state_t *)state, key, keylen); - case CMPH_HASH_DJB2: - return djb2_hash((djb2_state_t *)state, key, keylen); - case CMPH_HASH_SDBM: - return sdbm_hash((sdbm_state_t *)state, key, keylen); - case CMPH_HASH_FNV: - return fnv_hash((fnv_state_t *)state, key, keylen); default: assert(0); } @@ -53,6 +38,19 @@ cmph_uint32 hash(hash_state_t *state, const char *key, cmph_uint32 keylen) return 0; } +void hash_vector(hash_state_t *state, const char *key, cmph_uint32 keylen, cmph_uint32 * hashes) +{ + switch (state->hashfunc) + { + case CMPH_HASH_JENKINS: + jenkins_hash_vector((jenkins_state_t *)state, key, keylen, hashes); + break; + default: + assert(0); + } +} + + void hash_state_dump(hash_state_t *state, char **buf, cmph_uint32 *buflen) { char *algobuf; @@ -62,18 +60,6 @@ void hash_state_dump(hash_state_t *state, char **buf, cmph_uint32 *buflen) jenkins_state_dump((jenkins_state_t *)state, &algobuf, buflen); if (*buflen == UINT_MAX) return; break; - case CMPH_HASH_DJB2: - djb2_state_dump((djb2_state_t *)state, &algobuf, buflen); - if (*buflen == UINT_MAX) return; - break; - case CMPH_HASH_SDBM: - sdbm_state_dump((sdbm_state_t *)state, &algobuf, buflen); - if (*buflen == UINT_MAX) return; - break; - case CMPH_HASH_FNV: - fnv_state_dump((fnv_state_t *)state, &algobuf, buflen); - if (*buflen == UINT_MAX) return; - break; default: assert(0); } @@ -94,15 +80,6 @@ hash_state_t * hash_state_copy(hash_state_t *src_state) case CMPH_HASH_JENKINS: dest_state = (hash_state_t *)jenkins_state_copy((jenkins_state_t *)src_state); break; - case CMPH_HASH_DJB2: - dest_state = (hash_state_t *)djb2_state_copy((djb2_state_t *)src_state); - break; - case CMPH_HASH_SDBM: - dest_state = (hash_state_t *)sdbm_state_copy((sdbm_state_t *)src_state); - break; - case CMPH_HASH_FNV: - dest_state = (hash_state_t *)fnv_state_copy((fnv_state_t *)src_state); - break; default: assert(0); } @@ -129,12 +106,6 @@ hash_state_t *hash_state_load(const char *buf, cmph_uint32 buflen) { case CMPH_HASH_JENKINS: return (hash_state_t *)jenkins_state_load(buf + offset, buflen - offset); - case CMPH_HASH_DJB2: - return (hash_state_t *)djb2_state_load(buf + offset, buflen - offset); - case CMPH_HASH_SDBM: - return (hash_state_t *)sdbm_state_load(buf + offset, buflen - offset); - case CMPH_HASH_FNV: - return (hash_state_t *)fnv_state_load(buf + offset, buflen - offset); default: return NULL; } @@ -147,15 +118,6 @@ void hash_state_destroy(hash_state_t *state) case CMPH_HASH_JENKINS: jenkins_state_destroy((jenkins_state_t *)state); break; - case CMPH_HASH_DJB2: - djb2_state_destroy((djb2_state_t *)state); - break; - case CMPH_HASH_SDBM: - sdbm_state_destroy((sdbm_state_t *)state); - break; - case CMPH_HASH_FNV: - fnv_state_destroy((fnv_state_t *)state); - break; default: assert(0); } diff --git a/src/hash.h b/src/hash.h index 2735a22..092fe1c 100644 --- a/src/hash.h +++ b/src/hash.h @@ -6,10 +6,29 @@ typedef union __hash_state_t hash_state_t; hash_state_t *hash_state_new(CMPH_HASH, cmph_uint32 hashsize); + +/** \fn cmph_uint32 hash(hash_state_t *state, const char *key, cmph_uint32 keylen); + * \param state is a pointer to a hash_state_t structure + * \param key is a pointer to a key + * \param keylen is the key length + * \return an integer that represents a hash value of 32 bits. + */ cmph_uint32 hash(hash_state_t *state, const char *key, cmph_uint32 keylen); + +/** \fn void hash_vector(hash_state_t *state, const char *key, cmph_uint32 keylen, cmph_uint32 * hashes); + * \param state is a pointer to a hash_state_t structure + * \param key is a pointer to a key + * \param keylen is the key length + * \param hashes is a pointer to a memory large enough to fit three 32-bit integers. + */ +void hash_vector(hash_state_t *state, const char *key, cmph_uint32 keylen, cmph_uint32 * hashes); + void hash_state_dump(hash_state_t *state, char **buf, cmph_uint32 *buflen); + hash_state_t * hash_state_copy(hash_state_t *src_state); + hash_state_t *hash_state_load(const char *buf, cmph_uint32 buflen); + void hash_state_destroy(hash_state_t *state); #endif diff --git a/src/hash.lo b/src/hash.lo deleted file mode 100644 index c7b63aa..0000000 --- a/src/hash.lo +++ /dev/null @@ -1,12 +0,0 @@ -# hash.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/hash.o' - -# Name of the non-PIC object. -non_pic_object='hash.o' - diff --git a/src/hash_state.h b/src/hash_state.h index 67dcd77..1b567dc 100644 --- a/src/hash_state.h +++ b/src/hash_state.h @@ -3,16 +3,10 @@ #include "hash.h" #include "jenkins_hash.h" -#include "djb2_hash.h" -#include "sdbm_hash.h" -#include "fnv_hash.h" union __hash_state_t { CMPH_HASH hashfunc; jenkins_state_t jenkins; - djb2_state_t djb2; - sdbm_state_t sdbm; - fnv_state_t fnv; }; #endif diff --git a/src/jenkins_hash.c b/src/jenkins_hash.c index 843571c..934dd0c 100644 --- a/src/jenkins_hash.c +++ b/src/jenkins_hash.c @@ -159,6 +159,59 @@ cmph_uint32 jenkins_hash(jenkins_state_t *state, const char *k, cmph_uint32 keyl return c; } +void jenkins_hash_vector(jenkins_state_t *state, const char *k, cmph_uint32 keylen, cmph_uint32 * hashes) +{ + cmph_uint32 len, length; + + /* Set up the internal state */ + length = keylen; + len = length; + hashes[0] = hashes[1] = 0x9e3779b9; /* the golden ratio; an arbitrary value */ + hashes[2] = state->seed; /* the previous hash value - seed in our case */ + + /*---------------------------------------- handle most of the key */ + while (len >= 12) + { + hashes[0] += (k[0] +((cmph_uint32)k[1]<<8) +((cmph_uint32)k[2]<<16) +((cmph_uint32)k[3]<<24)); + hashes[1] += (k[4] +((cmph_uint32)k[5]<<8) +((cmph_uint32)k[6]<<16) +((cmph_uint32)k[7]<<24)); + hashes[2] += (k[8] +((cmph_uint32)k[9]<<8) +((cmph_uint32)k[10]<<16)+((cmph_uint32)k[11]<<24)); + mix(hashes[0],hashes[1],hashes[2]); + k += 12; len -= 12; + } + + /*------------------------------------- handle the last 11 bytes */ + hashes[2] += length; + switch(len) /* all the case statements fall through */ + { + case 11: + hashes[2] +=((cmph_uint32)k[10]<<24); + case 10: + hashes[2] +=((cmph_uint32)k[9]<<16); + case 9 : + hashes[2] +=((cmph_uint32)k[8]<<8); + /* the first byte of hashes[2] is reserved for the length */ + case 8 : + hashes[1] +=((cmph_uint32)k[7]<<24); + case 7 : + hashes[1] +=((cmph_uint32)k[6]<<16); + case 6 : + hashes[1] +=((cmph_uint32)k[5]<<8); + case 5 : + hashes[1] +=k[4]; + case 4 : + hashes[0] +=((cmph_uint32)k[3]<<24); + case 3 : + hashes[0] +=((cmph_uint32)k[2]<<16); + case 2 : + hashes[0] +=((cmph_uint32)k[1]<<8); + case 1 : + hashes[0] +=k[0]; + /* case 0: nothing left to add */ + } + + mix(hashes[0],hashes[1],hashes[2]); +} + void jenkins_state_dump(jenkins_state_t *state, char **buf, cmph_uint32 *buflen) { *buflen = sizeof(cmph_uint32); diff --git a/src/jenkins_hash.h b/src/jenkins_hash.h index 17b0cf9..df04627 100644 --- a/src/jenkins_hash.h +++ b/src/jenkins_hash.h @@ -10,7 +10,23 @@ typedef struct __jenkins_state_t } jenkins_state_t; jenkins_state_t *jenkins_state_new(cmph_uint32 size); //size of hash table + +/** \fn cmph_uint32 jenkins_hash(jenkins_state_t *state, const char *k, cmph_uint32 keylen); + * \param state is a pointer to a jenkins_state_t structure + * \param key is a pointer to a key + * \param keylen is the key length + * \return an integer that represents a hash value of 32 bits. + */ cmph_uint32 jenkins_hash(jenkins_state_t *state, const char *k, cmph_uint32 keylen); + +/** \fn void jenkins_hash_vector(jenkins_state_t *state, const char *k, cmph_uint32 keylen, cmph_uint32 * hashes); + * \param state is a pointer to a jenkins_state_t structure + * \param key is a pointer to a key + * \param keylen is the key length + * \param hashes is a pointer to a memory large enough to fit three 32-bit integers. + */ +void jenkins_hash_vector(jenkins_state_t *state, const char *k, cmph_uint32 keylen, cmph_uint32 * hashes); + void jenkins_state_dump(jenkins_state_t *state, char **buf, cmph_uint32 *buflen); jenkins_state_t *jenkins_state_copy(jenkins_state_t *src_state); jenkins_state_t *jenkins_state_load(const char *buf, cmph_uint32 buflen); diff --git a/src/jenkins_hash.lo b/src/jenkins_hash.lo deleted file mode 100644 index 947ad54..0000000 --- a/src/jenkins_hash.lo +++ /dev/null @@ -1,12 +0,0 @@ -# jenkins_hash.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/jenkins_hash.o' - -# Name of the non-PIC object. -non_pic_object='jenkins_hash.o' - diff --git a/src/vqueue.lo b/src/vqueue.lo deleted file mode 100644 index eca0eeb..0000000 --- a/src/vqueue.lo +++ /dev/null @@ -1,12 +0,0 @@ -# vqueue.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/vqueue.o' - -# Name of the non-PIC object. -non_pic_object='vqueue.o' - diff --git a/src/vstack.lo b/src/vstack.lo deleted file mode 100644 index 6343fb6..0000000 --- a/src/vstack.lo +++ /dev/null @@ -1,12 +0,0 @@ -# vstack.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.24 Debian 1.5.24-1ubuntu1 (1.1220.2.456 2007/06/24 02:25:32) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/vstack.o' - -# Name of the non-PIC object. -non_pic_object='vstack.o' -