20 #ifndef FST_EXTENSIONS_PDT_REVERSE_H_ 21 #define FST_EXTENSIONS_PDT_REVERSE_H_ 34 template <
class Arc,
class RevArc>
37 const std::vector<std::pair<typename Arc::Label, typename Arc::Label>>
40 using Label =
typename Arc::Label;
44 std::vector<std::pair<Label, Label>> relabel_pairs;
45 relabel_pairs.reserve(2 * parens.size());
46 for (
const auto &pair : parens) {
47 relabel_pairs.emplace_back(pair.first, pair.second);
48 relabel_pairs.emplace_back(pair.second, pair.first);
50 Relabel(ofst, relabel_pairs, relabel_pairs);
55 #endif // FST_EXTENSIONS_PDT_REVERSE_H_
void Relabel(MutableFst< Arc > *fst, const std::vector< std::pair< typename Arc::Label, typename Arc::Label >> &ipairs, const std::vector< std::pair< typename Arc::Label, typename Arc::Label >> &opairs)
void Reverse(const Fst< Arc > &ifst, const std::vector< std::pair< typename Arc::Label, typename Arc::Label >> &parens, std::vector< typename Arc::Label > *assignments, MutableFst< RevArc > *ofst)