// See www.openfst.org for extensive documentation on this weighted // finite-state transducer library. #ifndef FST_SCRIPT_DECODE_H_ #define FST_SCRIPT_DECODE_H_ #include #include #include #include #include #include namespace fst { namespace script { using DecodeArgs1 = std::pair; template void Decode(DecodeArgs1 *args) { MutableFst *fst = std::get<0>(*args)->GetMutableFst(); std::unique_ptr> decoder( EncodeMapper::Read(std::get<1>(*args), DECODE)); if (!decoder) { fst->SetProperties(kError, kError); return; } Decode(fst, *decoder); } using DecodeArgs2 = std::pair; template void Decode(DecodeArgs2 *args) { MutableFst *fst = std::get<0>(*args)->GetMutableFst(); const EncodeMapper &encoder = *(std::get<1>(*args).GetEncodeMapper()); Decode(fst, encoder); } void Decode(MutableFstClass *fst, const string &coder_fname); void Decode(MutableFstClass *fst, const EncodeMapperClass &encoder); } // namespace script } // namespace fst #endif // FST_SCRIPT_DECODE_H_