X-Git-Url: https://git.sesse.net/?p=remoteglot-book;a=blobdiff_plain;f=binlookup.cpp;h=894da9dcf0dbd2ec9eccbe89e4eef004fa62c5e5;hp=08455ebd0850769cb0c9440f2bbe19cc52bfee90;hb=f95dfda2d14615a9816ba1abb32bd240a470e228;hpb=4e78c9e91ab923c172833b7828b733b2bf89569c diff --git a/binlookup.cpp b/binlookup.cpp index 08455eb..894da9d 100644 --- a/binlookup.cpp +++ b/binlookup.cpp @@ -6,7 +6,9 @@ #include #include #include +#include #include "count.pb.h" +#include "merge_count.h" #include "hash.h" using namespace std; @@ -53,18 +55,33 @@ int main(int argc, char **argv) srcs[bucket] = mtbl_reader_source(mtbls[bucket]); } - mtbl_iter *it = mtbl_source_get(srcs[bucket], bpfen, bpfen_len); + // Give back the hash of the position to be kind to the user + uint16_t board_hash = util::Hash32((const char *)bpfen, bpfen_len); + printf("%d\n", board_hash); + + mtbl_iter *it = mtbl_source_get_prefix(srcs[bucket], bpfen, bpfen_len); const uint8_t *key, *val; size_t len_key, len_val; - if (mtbl_iter_next(it, &key, &len_key, &val, &len_val)) { - Count c; - c.ParseFromArray(val, len_val); - printf("%d %d %d %u %f %f %d %ld %d %ld", + Count c; + bool has_c = false; + while (mtbl_iter_next(it, &key, &len_key, &val, &len_val)) { + if (has_c) { + Count tmpc; + tmpc.ParseFromArray(val, len_val); + c = merge_count(c, tmpc); + } else { + c.ParseFromArray(val, len_val); + has_c = true; + } + } + + if (has_c) { + printf("%d %d %d %u %ld %ld %d %ld %d %ld", c.white(), c.draw(), c.black(), c.opening_num(), - double(c.sum_white_elo()) / c.num_elo(), - double(c.sum_black_elo()) / c.num_elo(), + c.sum_white_elo(), + c.sum_black_elo(), c.num_elo(), c.first_timestamp(), c.pgn_file_num(), c.pgn_start_position());