Lines Matching defs:fst

1 // compact-fst.h
32 #include <fst/cache.h>
33 #include <fst/expanded-fst.h>
34 #include <fst/fst-decl.h> // For optional argument declarations
35 #include <fst/mapped-file.h>
36 #include <fst/matcher.h>
37 #include <fst/test-properties.h>
38 #include <fst/util.h>
41 namespace fst {
82 // // Test whether 'fst' can be compacted by this compactor.
83 // bool Compatible(const Fst<A> &fst);
84 // // Return the properties that are always true for an fst
149 CompactFstData(const Fst<A> &fst, const Compactor &compactor);
202 CompactFstData<E, U>::CompactFstData(const Fst<A> &fst, const C &compactor)
214 start_ = fst.Start();
217 for (StateIterator< Fst<A> > siter(fst);
222 for (ArcIterator< Fst<A> > aiter(fst, s);
226 if (fst.Final(s) != Weight::Zero()) ++nfinals;
237 FSTERROR() << "CompactFstData: compactor incompatible with fst";
248 if (fst.Final(s) != Weight::Zero())
250 fst.Final(s), kNoStateId));
251 for (ArcIterator< Fst<A> > aiter(fst, s);
257 FSTERROR() << "CompactFstData: compactor incompatible with fst";
263 FSTERROR() << "CompactFstData: compactor incompatible with fst";
482 CompactFstImpl(const Fst<Arc> &fst, const C &compactor,
488 Init(fst);
491 CompactFstImpl(const Fst<Arc> &fst, C *compactor,
497 Init(fst);
726 void Init(const Fst<Arc> &fst) {
736 SetInputSymbols(fst.InputSymbols());
737 SetOutputSymbols(fst.OutputSymbols());
738 data_ = new CompactFstData<CompactElement, U>(fst, *compactor_);
741 uint64 copy_properties = fst.Properties(kCopyProperties, true);
742 if ((copy_properties & kError) || !compactor_->Compatible(fst)) {
743 FSTERROR() << "CompactFstImpl: input fst incompatible with compactor";
793 // fst-decl.h).
809 explicit CompactFst(const Fst<A> &fst, const C &compactor = C(),
811 : ImplToExpandedFst<Impl>(new Impl(fst, compactor, opts)) {}
813 CompactFst(const Fst<A> &fst, C *compactor,
815 : ImplToExpandedFst<Impl>(new Impl(fst, compactor, opts)) {}
848 CompactFst(const CompactFst<A, C, U> &fst, bool safe = false)
849 : ImplToExpandedFst<Impl>(fst, safe) {}
878 static bool WriteFst(const F &fst, const C &compactor, ostream &strm,
915 static Impl* GetImplIfCompactFst(const NonCompactFst& fst) {
919 void operator=(const CompactFst<A, C, U> &fst); // disallow
927 bool CompactFst<A, C, U>::WriteFst(const F &fst,
939 if (Impl* impl = GetImplIfCompactFst(fst)) {
951 for (StateIterator<F> siter(fst); !siter.Done(); siter.Next()) {
954 if (fst.Final(s) != Weight::Zero()) {
956 s, A(kNoLabel, kNoLabel, fst.Final(s), kNoStateId));
958 for (ArcIterator<F> aiter(fst, s); !aiter.Done(); aiter.Next()) {
965 hdr.SetStart(fst.Start());
976 uint64 copy_properties = fst.Properties(kCopyProperties, true);
977 if ((copy_properties & kError) || !compactor.Compatible(fst)) {
978 LOG(ERROR) << "fst incompatible with compactor";
983 FstImpl<A>::WriteFstHeader(fst, strm, opts, file_version, type, properties,
992 for (StateIterator<F> siter(fst); !siter.Done(); siter.Next()) {
995 if (fst.Final(s) != Weight::Zero()) {
998 compacts += fst.NumArcs(s);
1007 for (StateIterator<F> siter(fst); !siter.Done(); siter.Next()) {
1009 if (fst.Final(s) != Weight::Zero()) {
1011 s, A(kNoLabel, kNoLabel, fst.Final(s), kNoStateId));
1014 for (ArcIterator<F> aiter(fst, s); !aiter.Done(); aiter.Next()) {
1028 // Specialization for CompactFst; see generic version in fst.h
1036 explicit StateIterator(const CompactFst<A, C, U> &fst)
1037 : nstates_(fst.GetImpl()->NumStates()), s_(0) {}
1062 ArcIterator(const CompactFst<A, C, U> &fst, StateId s)
1063 : compactor_(fst.GetImpl()->GetCompactor()), state_(s), compacts_(0),
1066 const CompactFstData<CompactElement, U> *data = fst.GetImpl()->Data();
1130 // ArcIterator(const CompactFst<A, C, U> &fst, StateId s)
1131 // : fst_(fst), state_(s), pos_(0), num_arcs_(0), offset_(0),
1237 bool Compatible(const Fst<A> &fst) const {
1239 return fst.Properties(props, true) == props;
1280 bool Compatible(const Fst<A> &fst) const {
1282 return fst.Properties(props, true) == props;
1322 bool Compatible(const Fst<A> &fst) const {
1324 return fst.Properties(props, true) == props;
1364 bool Compatible(const Fst<A> &fst) const {
1366 return fst.Properties(props, true) == props;
1406 bool Compatible(const Fst<A> &fst) const {
1408 return fst.Properties(props, true) == props;
1436 } // namespace fst