1 2 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // you may not use this file except in compliance with the License. 4 // You may obtain a copy of the License at 5 // 6 // http://www.apache.org/licenses/LICENSE-2.0 7 // 8 // Unless required by applicable law or agreed to in writing, software 9 // distributed under the License is distributed on an "AS IS" BASIS, 10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 // 14 // Copyright 2005-2010 Google, Inc. 15 // Author: jpr (at) google.com (Jake Ratkiewicz) 16 17 // Convenience file that includes all FstScript functionality 18 19 #ifndef FST_SCRIPT_FSTSCRIPT_H_ 20 #define FST_SCRIPT_FSTSCRIPT_H_ 21 22 // Major classes 23 #include <fst/script/fst-class.h> 24 #include <fst/script/weight-class.h> 25 #include <fst/script/text-io.h> 26 27 // Templates like Operation< >, Apply< > 28 #include <fst/script/script-impl.h> 29 30 // Operations 31 #include <fst/script/arcsort.h> 32 #include <fst/script/closure.h> 33 #include <fst/script/compile.h> 34 #include <fst/script/compose.h> 35 #include <fst/script/concat.h> 36 #include <fst/script/connect.h> 37 #include <fst/script/convert.h> 38 #include <fst/script/decode.h> 39 #include <fst/script/determinize.h> 40 #include <fst/script/difference.h> 41 #include <fst/script/draw.h> 42 #include <fst/script/encode.h> 43 #include <fst/script/epsnormalize.h> 44 #include <fst/script/equal.h> 45 #include <fst/script/equivalent.h> 46 #include <fst/script/info.h> 47 #include <fst/script/intersect.h> 48 #include <fst/script/invert.h> 49 #include <fst/script/map.h> 50 #include <fst/script/minimize.h> 51 #include <fst/script/print.h> 52 #include <fst/script/project.h> 53 #include <fst/script/prune.h> 54 #include <fst/script/push.h> 55 #include <fst/script/randequivalent.h> 56 #include <fst/script/randgen.h> 57 #include <fst/script/relabel.h> 58 #include <fst/script/replace.h> 59 #include <fst/script/reverse.h> 60 #include <fst/script/reweight.h> 61 #include <fst/script/rmepsilon.h> 62 #include <fst/script/shortest-distance.h> 63 #include <fst/script/shortest-path.h> 64 #include <fst/script/symbols.h> 65 #include <fst/script/synchronize.h> 66 #include <fst/script/topsort.h> 67 #include <fst/script/union.h> 68 #include <fst/script/verify.h> 69 70 // 71 // REGISTER OPERATIONS 72 // 73 74 75 // This class is necessary because registering each of the operations 76 // separately overfills the stack, as there's so many of them. 77 namespace fst { 78 namespace script { 79 template<class Arc> 80 class AllFstOperationsRegisterer { 81 public: 82 AllFstOperationsRegisterer() { 83 RegisterBatch1(); 84 RegisterBatch2(); 85 } 86 87 private: 88 void RegisterBatch1() { 89 REGISTER_FST_OPERATION(ArcSort, Arc, ArcSortArgs); 90 REGISTER_FST_OPERATION(Closure, Arc, ClosureArgs); 91 REGISTER_FST_OPERATION(CompileFst, Arc, FstCompileArgs); 92 REGISTER_FST_OPERATION(Compose, Arc, ComposeArgs1); 93 REGISTER_FST_OPERATION(Compose, Arc, ComposeArgs2); 94 REGISTER_FST_OPERATION(Concat, Arc, ConcatArgs1); 95 REGISTER_FST_OPERATION(Concat, Arc, ConcatArgs2); 96 REGISTER_FST_OPERATION(Connect, Arc, MutableFstClass); 97 REGISTER_FST_OPERATION(Convert, Arc, ConvertArgs); 98 REGISTER_FST_OPERATION(Decode, Arc, DecodeArgs); 99 REGISTER_FST_OPERATION(Determinize, Arc, DeterminizeArgs); 100 REGISTER_FST_OPERATION(Difference, Arc, DifferenceArgs1); 101 REGISTER_FST_OPERATION(Difference, Arc, DifferenceArgs2); 102 REGISTER_FST_OPERATION(DrawFst, Arc, FstDrawerArgs); 103 REGISTER_FST_OPERATION(Encode, Arc, EncodeArgs); 104 REGISTER_FST_OPERATION(EpsNormalize, Arc, EpsNormalizeArgs); 105 REGISTER_FST_OPERATION(Equal, Arc, EqualArgs); 106 REGISTER_FST_OPERATION(Equivalent, Arc, EquivalentArgs); 107 REGISTER_FST_OPERATION(PrintFstInfo, Arc, InfoArgs); 108 REGISTER_FST_OPERATION(Intersect, Arc, IntersectArgs1); 109 REGISTER_FST_OPERATION(Intersect, Arc, IntersectArgs2); 110 REGISTER_FST_OPERATION(Invert, Arc, MutableFstClass); 111 REGISTER_FST_OPERATION(Map, Arc, MapArgs); 112 REGISTER_FST_OPERATION(Minimize, Arc, MinimizeArgs); 113 } 114 115 void RegisterBatch2() { 116 REGISTER_FST_OPERATION(PrintFst, Arc, FstPrinterArgs); 117 REGISTER_FST_OPERATION(Project, Arc, ProjectArgs); 118 REGISTER_FST_OPERATION(Prune, Arc, PruneArgs1); 119 REGISTER_FST_OPERATION(Prune, Arc, PruneArgs2); 120 REGISTER_FST_OPERATION(Prune, Arc, PruneArgs3); 121 REGISTER_FST_OPERATION(Prune, Arc, PruneArgs4); 122 REGISTER_FST_OPERATION(Push, Arc, PushArgs1); 123 REGISTER_FST_OPERATION(Push, Arc, PushArgs2); 124 REGISTER_FST_OPERATION(RandEquivalent, Arc, RandEquivalentArgs1); 125 REGISTER_FST_OPERATION(RandEquivalent, Arc, RandEquivalentArgs2); 126 REGISTER_FST_OPERATION(RandGen, Arc, RandGenArgs); 127 REGISTER_FST_OPERATION(Relabel, Arc, RelabelArgs1); 128 REGISTER_FST_OPERATION(Relabel, Arc, RelabelArgs2); 129 REGISTER_FST_OPERATION(Relabel, Arc, RelabelArgs3); 130 REGISTER_FST_OPERATION(Replace, Arc, ReplaceArgs); 131 REGISTER_FST_OPERATION(Reverse, Arc, ReverseArgs); 132 REGISTER_FST_OPERATION(Reweight, Arc, ReweightArgs); 133 REGISTER_FST_OPERATION(RmEpsilon, Arc, RmEpsilonArgs1); 134 REGISTER_FST_OPERATION(RmEpsilon, Arc, RmEpsilonArgs2); 135 REGISTER_FST_OPERATION(RmEpsilon, Arc, RmEpsilonArgs3); 136 REGISTER_FST_OPERATION(ShortestDistance, Arc, ShortestDistanceArgs1); 137 REGISTER_FST_OPERATION(ShortestDistance, Arc, ShortestDistanceArgs2); 138 REGISTER_FST_OPERATION(ShortestDistance, Arc, ShortestDistanceArgs3); 139 REGISTER_FST_OPERATION(ShortestPath, Arc, ShortestPathArgs1); 140 REGISTER_FST_OPERATION(ShortestPath, Arc, ShortestPathArgs2); 141 REGISTER_FST_OPERATION(Synchronize, Arc, SynchronizeArgs); 142 REGISTER_FST_OPERATION(TopSort, Arc, TopSortArgs); 143 REGISTER_FST_OPERATION(Union, Arc, UnionArgs); 144 REGISTER_FST_OPERATION(Verify, Arc, VerifyArgs); 145 } 146 }; 147 } // namespace script 148 } // namespace fst 149 150 151 #define REGISTER_FST_OPERATIONS(Arc) \ 152 AllFstOperationsRegisterer<Arc> register_all_fst_operations ## Arc; 153 154 #endif // FST_SCRIPT_FSTSCRIPT_H_ 155