diff --git a/pool.c b/pool.c index b84c3a7..6771b1f 100644 --- a/pool.c +++ b/pool.c @@ -67,32 +67,6 @@ struct pool_val *pool(struct pool *p, char *s, int type) { return pool1(p, s, type, strcmp); } -static long long mangle(long long in) { - int i; - long long out = 0; - for (i = 0; i < 64; i++) { - out |= ((in >> i) & 1) << (63 - i); - } - return out; -} - -static int llcmp(const char *v1, const char *v2) { - long long ll1 = mangle(*(long long *) v1); - long long ll2 = mangle(*(long long *) v2); - - if (ll1 < ll2) { - return -1; - } else if (ll1 > ll2) { - return 1; - } else { - return 0; - } -} - -struct pool_val *pool_long_long(struct pool *p, long long *s, int type) { - return pool1(p, (char *) s, type, llcmp); -} - void pool_free1(struct pool *p, void (*func)(void *)) { while (p->head != NULL) { if (func != NULL) { diff --git a/pool.h b/pool.h index 07f1491..fcb8dcf 100644 --- a/pool.h +++ b/pool.h @@ -19,7 +19,6 @@ struct pool { struct pool_val *pool(struct pool *p, char *s, int type); -struct pool_val *pool_long_long(struct pool *p, long long *val, int type); void pool_free(struct pool *p); void pool_free_strings(struct pool *p); void pool_init(struct pool *p, int n); diff --git a/tile.cc b/tile.cc index 73176ab..0fc98f7 100644 --- a/tile.cc +++ b/tile.cc @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -347,10 +348,10 @@ long long write_tile(struct index *start, struct index *end, char *metabase, uns for (line_detail = detail; line_detail >= MIN_DETAIL; line_detail--) { GOOGLE_PROTOBUF_VERIFY_VERSION; - struct pool keys, values, dup; + struct pool keys, values; pool_init(&keys, 0); pool_init(&values, 0); - pool_init(&dup, 1); + std::map dup; double interval = 1; double seq = 0; @@ -370,11 +371,10 @@ long long write_tile(struct index *start, struct index *end, char *metabase, uns continue; } - struct pool_val *pv = pool_long_long(&dup, &i->fpos, 0); - if (pv->n == 0) { + if (dup.count(i->fpos) != 0) { continue; } - pv->n = 0; + dup.insert(std::pair(i->fpos, 1)); int t; char *meta = metabase + i->fpos; @@ -484,7 +484,6 @@ long long write_tile(struct index *start, struct index *end, char *metabase, uns pool_free(&keys); pool_free(&values); - pool_free(&dup); std::string s; std::string compressed;