X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fparse.c;h=560578fb0a45135dc8184638efefd19ad809f809;hb=88680e52e8c58cd20f29d0de15dceefe15e81c8f;hp=fd139218506c0ab91a4aa449cd22217a6b11d1cd;hpb=229848ff462383b1fba2a073e5f7139856d2873d;p=fastq-tools.git diff --git a/src/parse.c b/src/parse.c index fd13921..560578f 100644 --- a/src/parse.c +++ b/src/parse.c @@ -11,7 +11,7 @@ static void str_init(str_t* str) { str->n = 0; str->size = 128; - str->s = malloc_or_die(str->size = 0); + str->s = malloc_or_die(str->size); str->s[0] = '\0'; } @@ -87,12 +87,12 @@ static inline uint32_t rotl32(uint32_t x, int8_t r) } -uint32_t murmurhash3(const uint8_t* data, size_t len_) +uint32_t murmurhash3(uint32_t seed, const uint8_t* data, size_t len_) { const int len = (int) len_; const int nblocks = len / 4; - uint32_t h1 = 0xc062fb4a; + uint32_t h1 = seed; uint32_t c1 = 0xcc9e2d51; uint32_t c2 = 0x1b873593; @@ -144,10 +144,15 @@ uint32_t murmurhash3(const uint8_t* data, size_t len_) uint32_t seq_hash(const seq_t* seq) { - /* TODO */ - return 0; + uint32_t h = 0xc062fb4a; /* random seed */ + h = murmurhash3(h, (uint8_t*) seq->id1.s, seq->id1.n); + h = murmurhash3(h, (uint8_t*) seq->seq.s, seq->seq.n); + h = murmurhash3(h, (uint8_t*) seq->id2.s, seq->id2.n); + h = murmurhash3(h, (uint8_t*) seq->qual.s, seq->qual.n); + return h; } + static const size_t parser_buf_size = 1000000;