FST  openfst-1.7.7
OpenFst Library
concat.cc
Go to the documentation of this file.
1 // See www.openfst.org for extensive documentation on this weighted
2 // finite-state transducer library.
3 
4 #include <fst/script/concat.h>
5 
7 
8 namespace fst {
9 namespace script {
10 
11 void Concat(MutableFstClass *fst1, const FstClass &fst2) {
12  if (!internal::ArcTypesMatch(*fst1, fst2, "Concat")) {
13  fst1->SetProperties(kError, kError);
14  return;
15  }
16  ConcatArgs1 args(fst1, fst2);
17  Apply<Operation<ConcatArgs1>>("Concat", fst1->ArcType(), &args);
18 }
19 
20 void Concat(const FstClass &fst1, MutableFstClass *fst2) {
21  if (!internal::ArcTypesMatch(fst1, *fst2, "Concat")) {
22  fst2->SetProperties(kError, kError);
23  return;
24  }
25  ConcatArgs2 args(fst1, fst2);
26  Apply<Operation<ConcatArgs2>>("Concat", fst2->ArcType(), &args);
27 }
28 
29 void Concat(const std::vector<FstClass *> &fsts1, MutableFstClass *fst2) {
30  for (const auto *fst1 : fsts1) {
31  if (!internal::ArcTypesMatch(*fst1, *fst2, "Concat")) {
32  fst2->SetProperties(kError, kError);
33  return;
34  }
35  }
36  ConcatArgs3 args(fsts1, fst2);
37  Apply<Operation<ConcatArgs3>>("Concat", fst2->ArcType(), &args);
38 }
39 
42 
43 } // namespace script
44 } // namespace fst
REGISTER_FST_OPERATION_3ARCS(Compress, CompressArgs)
std::pair< const std::vector< FstClass * > &, MutableFstClass * > ConcatArgs3
Definition: concat.h:34
const std::string & ArcType() const final
Definition: fst-class.h:300
bool ArcTypesMatch(const M &m, const N &n, const std::string &op_name)
Definition: script-impl.h:178
std::pair< const FstClass &, MutableFstClass * > ConcatArgs2
Definition: concat.h:24
constexpr uint64 kError
Definition: properties.h:36
void SetProperties(uint64 props, uint64 mask)
Definition: fst-class.h:467
std::pair< MutableFstClass *, const FstClass & > ConcatArgs1
Definition: concat.h:15
void Concat(ConcatArgs1 *args)
Definition: concat.h:18