1// fst-decl.h
2
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15// Copyright 2005-2010 Google, Inc.
16// Author: riley@google.com (Michael Riley)
17//
18// \file
19// This file contains declarations of classes in the Fst template library.
20//
21
22#ifndef FST_LIB_FST_DECL_H__
23#define FST_LIB_FST_DECL_H__
24
25#include <fst/types.h>
26
27namespace fst {
28
29class SymbolTable;
30class SymbolTableIterator;
31
32template <class W> class FloatWeightTpl;
33template <class W> class TropicalWeightTpl;
34template <class W> class LogWeightTpl;
35template <class W> class MinMaxWeightTpl;
36
37typedef FloatWeightTpl<float> FloatWeight;
38typedef TropicalWeightTpl<float> TropicalWeight;
39typedef LogWeightTpl<float> LogWeight;
40typedef MinMaxWeightTpl<float> MinMaxWeight;
41
42template <class W> class ArcTpl;
43typedef ArcTpl<TropicalWeight> StdArc;
44typedef ArcTpl<LogWeight> LogArc;
45
46template <class A, class C, class U = uint32> class CompactFst;
47template <class A, class U = uint32> class ConstFst;
48template <class A, class W, class M> class EditFst;
49template <class A> class ExpandedFst;
50template <class A> class Fst;
51template <class A> class MutableFst;
52template <class A> class VectorFst;
53
54template <class A, class C> class ArcSortFst;
55template <class A> class ClosureFst;
56template <class A> class ComposeFst;
57template <class A> class ConcatFst;
58template <class A> class DeterminizeFst;
59template <class A> class DifferenceFst;
60template <class A> class IntersectFst;
61template <class A> class InvertFst;
62template <class A, class B, class C> class ArcMapFst;
63template <class A> class ProjectFst;
64template <class A, class B, class S> class RandGenFst;
65template <class A> class RelabelFst;
66template <class A, class T> class ReplaceFst;
67template <class A> class RmEpsilonFst;
68template <class A> class UnionFst;
69
70template <class T, class Compare, bool max> class Heap;
71
72template <class A> class AcceptorCompactor;
73template <class A> class StringCompactor;
74template <class A> class UnweightedAcceptorCompactor;
75template <class A> class UnweightedCompactor;
76template <class A> class WeightedStringCompactor;
77
78template <class A, class P> class DefaultReplaceStateTable;
79
80typedef CompactFst<StdArc, AcceptorCompactor<StdArc> >
81StdCompactAcceptorFst;
82typedef CompactFst< StdArc, StringCompactor<StdArc> >
83StdCompactStringFst;
84typedef CompactFst<StdArc, UnweightedAcceptorCompactor<StdArc> >
85StdCompactUnweightedAcceptorFst;
86typedef CompactFst<StdArc, UnweightedCompactor<StdArc> >
87StdCompactUnweightedFst;
88typedef CompactFst< StdArc, WeightedStringCompactor<StdArc> >
89StdCompactWeightedStringFst;
90typedef ConstFst<StdArc> StdConstFst;
91typedef ExpandedFst<StdArc> StdExpandedFst;
92typedef Fst<StdArc> StdFst;
93typedef MutableFst<StdArc> StdMutableFst;
94typedef VectorFst<StdArc> StdVectorFst;
95
96
97template <class C> class StdArcSortFst;
98typedef ClosureFst<StdArc> StdClosureFst;
99typedef ComposeFst<StdArc> StdComposeFst;
100typedef ConcatFst<StdArc> StdConcatFst;
101typedef DeterminizeFst<StdArc> StdDeterminizeFst;
102typedef DifferenceFst<StdArc> StdDifferenceFst;
103typedef IntersectFst<StdArc> StdIntersectFst;
104typedef InvertFst<StdArc> StdInvertFst;
105typedef ProjectFst<StdArc> StdProjectFst;
106typedef RelabelFst<StdArc> StdRelabelFst;
107typedef ReplaceFst<StdArc, DefaultReplaceStateTable<StdArc, ssize_t> >
108StdReplaceFst;
109typedef RmEpsilonFst<StdArc> StdRmEpsilonFst;
110typedef UnionFst<StdArc> StdUnionFst;
111
112template <typename T> class IntegerFilterState;
113typedef IntegerFilterState<signed char> CharFilterState;
114typedef IntegerFilterState<short> ShortFilterState;
115typedef IntegerFilterState<int> IntFilterState;
116
117template <class F> class Matcher;
118template <class M1, class M2 = M1> class SequenceComposeFilter;
119template <class M1, class M2 = M1> class AltSequenceComposeFilter;
120template <class M1, class M2 = M1> class MatchComposeFilter;
121
122}  // namespace fst
123
124#endif  // FST_LIB_FST_DECL_H__
125