20 #ifndef FST_REGISTER_H_ 21 #define FST_REGISTER_H_ 24 #include <type_traits> 33 #include <string_view> 40 struct FstReadOptions;
53 : reader(reader), converter(converter) {}
66 return this->GetEntry(type).reader;
70 return this->GetEntry(type).converter;
75 std::string legal_type(key);
77 legal_type.append(
"-fst.so");
88 using Arc =
typename FST::Arc;
99 "FST class does not inherit from Fst<Arc>");
100 return FST::Read(strm, opts);
103 static Entry BuildEntry() {
118 #define REGISTER_FST(FST, Arc) \ 119 static fst::FstRegisterer<FST<Arc>> FST##_##Arc##_registerer 125 const auto converter = reg->GetConverter(fst_type);
127 FSTERROR() <<
"Fst::Convert: Unknown FST type " << fst_type <<
" (arc type " 128 << Arc::Type() <<
")";
136 #endif // FST_REGISTER_H_ FstRegisterEntry(Reader reader=nullptr, Converter converter=nullptr)
void Convert(FarReader< Arc > &reader, FarWriter< Arc > &writer, std::string_view fst_type)
const Reader GetReader(std::string_view type) const
void ConvertToLegalCSymbol(std::string *s)
Fst< Arc > *(*)(std::istream &istrm, const FstReadOptions &opts) Reader
static FstRegister< Arc > * GetRegister()
const Converter GetConverter(std::string_view type) const
std::string ConvertKeyToSoFilename(std::string_view key) const override
typename FstRegisterEntry< Arc >::Converter Converter
typename FstRegister< Arc >::Entry Entry
typename FstRegister< Arc >::Reader Reader
typename FstRegisterEntry< Arc >::Reader Reader