20 #ifndef FST_EXTENSIONS_PDT_REVERSE_H_ 21 #define FST_EXTENSIONS_PDT_REVERSE_H_ 32 template <
class Arc,
class RevArc>
35 const std::vector<std::pair<typename Arc::Label, typename Arc::Label>>
38 using Label =
typename Arc::Label;
42 std::vector<std::pair<Label, Label>> relabel_pairs;
43 relabel_pairs.reserve(2 * parens.size());
44 for (
const auto &pair : parens) {
45 relabel_pairs.emplace_back(pair.first, pair.second);
46 relabel_pairs.emplace_back(pair.second, pair.first);
48 Relabel(ofst, relabel_pairs, relabel_pairs);
53 #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)