4 #ifndef FST_SCRIPT_REGISTER_H_ 5 #define FST_SCRIPT_REGISTER_H_ 25 template <
class Reader,
class Creator,
class Converter>
32 : reader(r), creator(cr), converter(co) {}
40 template <
class FstClassType>
53 template <
class Reader,
class Creator,
class Converter>
56 FstClassRegEntry<Reader, Creator, Converter>,
57 FstClassIORegister<Reader, Creator, Converter>> {
60 return this->GetEntry(arc_type).reader;
64 return this->GetEntry(arc_type).creator;
68 return this->GetEntry(arc_type).converter;
73 string legal_type(key);
75 return legal_type +
"-arc.so";
81 template <
class FstClassType>
83 using Reader = FstClassType *(*)(std::istream &stream,
100 #define REGISTER_FST_CLASS(Class, Arc) \ 101 static IORegistration<Class>::Registerer Class##_##Arc##_registerer( \ 103 IORegistration<Class>::Entry(Class::Read<Arc>, Class::Create<Arc>, \ 104 Class::Convert<Arc>)) 106 #define REGISTER_FST_CLASSES(Arc) \ 107 REGISTER_FST_CLASS(FstClass, Arc); \ 108 REGISTER_FST_CLASS(MutableFstClass, Arc); \ 109 REGISTER_FST_CLASS(VectorFstClass, Arc); 114 #endif // FST_SCRIPT_REGISTER_H_ void ConvertToLegalCSymbol(string *s)
FstClassImplBase *(*)(const FstClass &other) Converter
static FstClassImplBase * NullCreator()
string ConvertKeyToSoFilename(const string &key) const override
static FstClassImplBase * NullConverter(const FstClass &other)
Converter GetConverter(const string &arc_type) const
Creator GetCreator(const string &arc_type) const
static FstClassType * NullReader(std::istream &strm, const FstReadOptions &opts)
FstClassRegEntry(Reader r, Creator cr, Converter co)
Reader GetReader(const string &arc_type) const
FstClassType *(*)(std::istream &stream, const FstReadOptions &opts) Reader