39 std::string usage =
"Compares two FST archives for isomorphism.\n\n Usage:";
41 usage +=
" in1.far in2.far\n";
43 SET_FLAGS(usage.c_str(), &argc, &argv,
true);
51 std::unique_ptr<FarReaderClass> reader1(FarReaderClass::Open(argv[1]));
52 if (!reader1)
return 1;
54 std::unique_ptr<FarReaderClass> reader2(FarReaderClass::Open(argv[2]));
55 if (!reader2)
return 1;
58 *reader1, *reader2, FST_FLAGS_delta,
59 FST_FLAGS_begin_key, FST_FLAGS_end_key);
61 if (reader1->Error()) {
62 FSTERROR() <<
"Error reading FAR: " << argv[1];
65 if (reader2->Error()) {
66 FSTERROR() <<
"Error reading FAR: " << argv[2];
70 if (!result)
VLOG(1) <<
"FARs are not isomorphic";
72 return result ? 0 : 2;
void ShowUsage(bool long_usage=true)
bool Isomorphic(FarReaderClass &reader1, FarReaderClass &reader2, float delta, std::string_view begin_key, std::string_view end_key)
void ExpandArgs(int argc, char **argv, int *argcp, char ***argvp)
#define SET_FLAGS(usage, argc, argv, rmflags)
DECLARE_string(begin_key)
int farisomorphic_main(int argc, char **argv)