41 std::string usage =
"Encodes transducer labels and/or weights.\n\n Usage: ";
43 usage +=
" in.fst mapper [out.fst]\n";
45 SET_FLAGS(usage.c_str(), &argc, &argv,
true);
46 if (argc < 3 || argc > 4) {
51 const std::string in_name = (strcmp(argv[1],
"-") != 0) ? argv[1] :
"";
52 const std::string mapper_name = argv[2];
53 const std::string out_name =
54 argc > 3 && strcmp(argv[3],
"-") != 0 ? argv[3] :
"";
56 std::unique_ptr<MutableFstClass>
fst(MutableFstClass::Read(in_name,
true));
59 if (FST_FLAGS_decode) {
60 std::unique_ptr<EncodeMapperClass> mapper(
61 EncodeMapperClass::Read(mapper_name));
62 if (!mapper)
return 1;
64 }
else if (FST_FLAGS_encode_reuse) {
65 std::unique_ptr<EncodeMapperClass> mapper(
66 EncodeMapperClass::Read(mapper_name));
67 if (!mapper)
return 1;
71 FST_FLAGS_encode_weights);
72 EncodeMapperClass mapper(fst->ArcType(), flags);
74 if (!mapper.Write(mapper_name))
return 1;
77 return !fst->Write(out_name);
void ShowUsage(bool long_usage=true)
void Decode(FarReaderClass &reader, FarWriterClass &writer, const EncodeMapperClass &encoder)
#define SET_FLAGS(usage, argc, argv, rmflags)
void Encode(FarReaderClass &reader, FarWriterClass &writer, EncodeMapperClass *encoder)
uint8_t GetEncodeFlags(bool encode_labels, bool encode_weights)
int fstencode_main(int argc, char **argv)