#include <mtbl.h>
#include <memory>
#include <string>
+#include <unordered_set>
#include <string.h>
#include <assert.h>
#include "count.pb.h"
if (c0.has_first_timestamp()) {
c.set_first_timestamp(c0.first_timestamp());
}
+ c.set_pgn_file_num(c0.pgn_file_num());
+ 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_file_num(c1.pgn_file_num());
+ c.set_pgn_start_position(c1.pgn_start_position());
+ }
+
+ // Merge the moves, with deduplication.
+ unordered_set<string> 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.