Home | History | Annotate | Download | only in script
      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