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) {}
35 : reader(nullptr), creator(nullptr), converter(nullptr) {}
38 template <
class Reader,
class Creator,
class Converter>
41 FstClassRegEntry<Reader, Creator, Converter>,
42 FstClassIORegister<Reader, Creator, Converter>> {
45 return this->GetEntry(arc_type).reader;
49 return this->GetEntry(arc_type).creator;
53 return this->GetEntry(arc_type).converter;
58 string legal_type(key);
60 return legal_type +
"-arc.so";
66 template <
class FstClassType>
68 using Reader = FstClassType *(*)(std::istream &stream,
85 #define REGISTER_FST_CLASS(Class, Arc) \ 86 static IORegistration<Class>::Registerer Class##_##Arc##_registerer( \ 88 IORegistration<Class>::Entry(Class::Read<Arc>, Class::Create<Arc>, \ 91 #define REGISTER_FST_CLASSES(Arc) \ 92 REGISTER_FST_CLASS(FstClass, Arc); \ 93 REGISTER_FST_CLASS(MutableFstClass, Arc); \ 94 REGISTER_FST_CLASS(VectorFstClass, Arc); 99 #endif // FST_SCRIPT_REGISTER_H_ void ConvertToLegalCSymbol(string *s)
FstClassImplBase *(*)(const FstClass &other) Converter
Converter GetConverter(const string &arc_type) const
Creator GetCreator(const string &arc_type) const
string ConvertKeyToSoFilename(const string &key) const final
FstClassRegEntry(Reader r, Creator cr, Converter co)
Reader GetReader(const string &arc_type) const
FstClassType *(*)(std::istream &stream, const FstReadOptions &opts) Reader