- string move((char *)(key + prefix_len), len_key - prefix_len);
- const Count* c = (Count *)val;
- printf("%s %d %d %d %u %f %f %d\n", move.c_str(),
- c->white, c->draw, c->black, c->opening_num,
- float(c->sum_white_elo) / c->num_elo,
- float(c->sum_black_elo) / c->num_elo,
- c->num_elo);
+ 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 %d %u %ld %ld %d %ld %d %ld",
+ c.white(), c.draw(), c.black(), c.computer(),
+ c.opening_num(), c.sum_white_elo(), c.sum_black_elo(),
+ c.num_elo(), c.first_timestamp(),
+ c.pgn_file_num(),
+ c.pgn_start_position());
+ for (int j = 0; j < c.move_size(); ++j) {
+ printf(" %s", c.move(j).c_str());
+ }
+ printf("\n");
+ } else {
+ printf("-\n");
+ }
+ fflush(stdout);
+ mtbl_iter_destroy(&it);
+ }
+
+ for (int i = 0; i < num_buckets; ++i) {
+ if (mtbls[i] != NULL) {
+ mtbl_reader_destroy(&mtbls[i]);