X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=binmerger.cpp;h=7e341592eec4d75c7f94e5702e53fd83926d26b0;hb=73ec86a2c9ef47c1fa25f23bdc58ace345635ef1;hp=6c162404e416e1c347ee449d83ee82153297ebfb;hpb=19c49abb677f8cbf5b290e71dbcad382558d8cc5;p=remoteglot-book diff --git a/binmerger.cpp b/binmerger.cpp index 6c16240..7e34159 100644 --- a/binmerger.cpp +++ b/binmerger.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include "count.pb.h" @@ -31,11 +32,25 @@ void merge_count(void* userdata, if (c0.has_first_timestamp()) { c.set_first_timestamp(c0.first_timestamp()); } + c.set_pgn_start_position(c0.pgn_start_position()); } else { c.set_opening_num(c1.opening_num()); if (c1.has_first_timestamp()) { c.set_first_timestamp(c1.first_timestamp()); } + c.set_pgn_start_position(c1.pgn_start_position()); + } + + // Merge the moves, with deduplication. + unordered_set moves; + for (int i = 0; i < c0.move_size(); ++i) { + moves.insert(c0.move(i)); + c.add_move(c0.move(i)); + } + for (int i = 0; i < c1.move_size(); ++i) { + if (!moves.count(c1.move(i))) { + c.add_move(c1.move(i)); + } } static string buf; // Keep allocated.