]> git.sesse.net Git - remoteglot-book/blobdiff - binloader.cpp
Parse timestamps from the binary format. Needs some rework, though.
[remoteglot-book] / binloader.cpp
index 98b29457e8a807eccb7806d0ab5d230ac6953468..e472364e47b234e8a3a0ed02f03c47c8d47a7582 100644 (file)
@@ -20,6 +20,7 @@ struct Element {
        string bpfen_and_move;
        Result result;
        int opening_num, white_elo, black_elo;
+       time_t timestamp;
 
        bool operator< (const Element& other) const {
                return bpfen_and_move < other.bpfen_and_move;
@@ -62,6 +63,7 @@ int main(int argc, char **argv)
                        }
 
                        int opening_num, white_elo, black_elo;
+                       time_t timestamp;
                        if (fread(&white_elo, sizeof(white_elo), 1, fp) != 1) {
                                perror("fread()");
                                //exit(1);
@@ -77,9 +79,14 @@ int main(int argc, char **argv)
                                //exit(1);
                                break;
                        }
+                       if (fread(&timestamp, sizeof(timestamp), 1, fp) != 1) {
+                               perror("fread()");
+                               //exit(1);
+                               break;
+                       }
 
                        int bucket = hash_key_to_bucket(bpfen_and_move.data(), bpfen_and_move.size(), num_buckets);
-                       elems[bucket].emplace_back(Element {move(bpfen_and_move), Result(r), opening_num, white_elo, black_elo});
+                       elems[bucket].emplace_back(Element {move(bpfen_and_move), Result(r), opening_num, white_elo, black_elo, timestamp});
                        ++num_elems;
                }
                fclose(fp);
@@ -110,12 +117,16 @@ int main(int argc, char **argv)
                        } else if (e.result == BLACK) {
                                ++c.black;
                        }
-                       c.opening_num = e.opening_num;
                        if (e.white_elo >= 100 && e.black_elo >= 100) {
                                c.sum_white_elo += e.white_elo;
                                c.sum_black_elo += e.black_elo;
                                ++c.num_elo;
                        }
+                       if (c.first_timestamp == DUMMY_TIMESTAMP ||
+                           e.timestamp < c.first_timestamp) {
+                               c.first_timestamp = e.timestamp;
+                               c.opening_num = e.opening_num;
+                       }
                        if (j == elems[i].size() - 1 || e.bpfen_and_move != elems[i][j + 1].bpfen_and_move) {
                                mtbl_writer_add(mtbl,
                                        (const uint8_t *)e.bpfen_and_move.data(), e.bpfen_and_move.size(),