// See www.openfst.org for extensive documentation on this weighted // finite-state transducer library. #include #include #include namespace fst { namespace script { // FarReaderClass. FarReaderClass *FarReaderClass::Open(const string &filename) { const std::vector filenames{filename}; return FarReaderClass::Open(filenames); } FarReaderClass *FarReaderClass::Open(const std::vector &filenames) { if (filenames.empty()) { LOG(ERROR) << "FarReaderClass::Open: No files specified"; return nullptr; } const auto arc_type = LoadArcTypeFromFar(filenames.front()); if (arc_type.empty()) return nullptr; OpenFarReaderClassArgs args(filenames); args.retval = nullptr; Apply>("OpenFarReaderClass", arc_type, &args); return args.retval; } REGISTER_FST_OPERATION(OpenFarReaderClass, StdArc, OpenFarReaderClassArgs); REGISTER_FST_OPERATION(OpenFarReaderClass, LogArc, OpenFarReaderClassArgs); REGISTER_FST_OPERATION(OpenFarReaderClass, Log64Arc, OpenFarReaderClassArgs); // FarWriterClass. FarWriterClass *FarWriterClass::Create(const string &filename, const string &arc_type, FarType type) { CreateFarWriterClassInnerArgs iargs(filename, type); CreateFarWriterClassArgs args(iargs); args.retval = nullptr; Apply>("CreateFarWriterClass", arc_type, &args); return args.retval; } REGISTER_FST_OPERATION(CreateFarWriterClass, StdArc, CreateFarWriterClassArgs); REGISTER_FST_OPERATION(CreateFarWriterClass, LogArc, CreateFarWriterClassArgs); REGISTER_FST_OPERATION(CreateFarWriterClass, Log64Arc, CreateFarWriterClassArgs); } // namespace script } // namespace fst