17 #ifndef NLP_GRM2_SFST_INTERSECT_H_ 18 #define NLP_GRM2_SFST_INTERSECT_H_ 20 #include <sys/types.h> 22 #include <fst/compose.h> 24 #include <fst/mutable-fst.h> 34 const fst::Fst<Arc> &ifst2,
35 fst::MutableFst<Arc> *ofst,
36 typename Arc::Label phi_label = fst::kNoLabel,
42 f::ComposeFstOptions<Arc, PM, PF> copts;
44 copts.matcher1 =
new PM(ifst1, f::MATCH_OUTPUT, phi_label);
45 copts.matcher2 =
new PM(ifst2, f::MATCH_INPUT, phi_label);
46 *ofst = f::ComposeFst<Arc>(ifst1, ifst2, copts);
48 if (trim && !
Trim(ofst, phi_label, trim_type))
55 #endif // NLP_GRM2_SFST_INTERSECT_H_
bool Intersect(const fst::Fst< Arc > &ifst1, const fst::Fst< Arc > &ifst2, fst::MutableFst< Arc > *ofst, typename Arc::Label phi_label=fst::kNoLabel, bool trim=true, TrimType trim_type=TRIM_NEEDED_FINAL)
bool Trim(fst::MutableFst< Arc > *fst, typename Arc::Label phi_label=fst::kNoLabel, TrimType trim_type=TRIM_NEEDED_FINAL)