You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

285 lines
6.3 KiB

// Copyright 2005-2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the 'License');
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an 'AS IS' BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// See www.openfst.org for extensive documentation on this weighted
// finite-state transducer library.
//
// This file contains declarations of classes in the Fst template library.
#ifndef FST_FST_DECL_H_
#define FST_FST_DECL_H_
// Do not let Include-What-You-Use suggest this file.
#include <sys/types.h>
#include <cstdint>
#include <memory> // for allocator<>
#include <fst/windows_defs.inc>
namespace fst {
// Symbol table and iterator.
class SymbolTable;
class SymbolTableIterator;
// Weight templates and weights.
template <class T>
class FloatWeightTpl;
template <class T>
class TropicalWeightTpl;
template <class T>
class LogWeightTpl;
template <class T>
class MinMaxWeightTpl;
using FloatWeight = FloatWeightTpl<float>;
using TropicalWeight = TropicalWeightTpl<float>;
using LogWeight = LogWeightTpl<float>;
using MinMaxWeight = MinMaxWeightTpl<float>;
// Arc templates and arcs.
template <class Weight, class Label = int, class StateId = int>
struct ArcTpl;
using StdArc = ArcTpl<TropicalWeight>;
using LogArc = ArcTpl<LogWeight>;
// Stores.
template <class Element, class U>
class CompactArcStore;
template <class Arc>
class DefaultCacheStore;
// Compactors.
template <class AC, class U, class S = CompactArcStore<typename AC::Element, U>>
class CompactArcCompactor;
// FST templates.
template <class Arc, class Compactor, class CacheStore = DefaultCacheStore<Arc>>
class CompactFst;
// The Unsigned type is used to represent indices into the compact arc array.
template <class Arc, class ArcCompactor, class Unsigned = uint32_t,
class CompactStore =
CompactArcStore<typename ArcCompactor::Element, Unsigned>,
class CacheStore = DefaultCacheStore<Arc>>
using CompactArcFst =
CompactFst<Arc, CompactArcCompactor<ArcCompactor, Unsigned, CompactStore>,
CacheStore>;
template <class Arc, class U = uint32_t>
class ConstFst;
template <class Arc, class Weight, class Matcher>
class EditFst;
template <class Arc>
class ExpandedFst;
template <class Arc>
class Fst;
template <class Arc>
class MutableFst;
template <class Arc, class Allocator = std::allocator<Arc>>
class VectorState;
template <class Arc, class State = VectorState<Arc>>
class VectorFst;
template <class Arc, class U = ssize_t>
class DefaultReplaceStateTable;
// On-the-fly operations.
template <class Arc, class Compare>
class ArcSortFst;
template <class Arc>
class ClosureFst;
template <class Arc, class Store = DefaultCacheStore<Arc>>
class ComposeFst;
template <class Arc>
class ConcatFst;
template <class Arc>
class DeterminizeFst;
template <class Arc>
class DifferenceFst;
template <class Arc>
class IntersectFst;
template <class Arc>
class InvertFst;
template <class AArc, class BArc, class Mapper>
class ArcMapFst;
template <class Arc>
class ProjectFst;
template <class AArc, class BArc, class Selector>
class RandGenFst;
template <class Arc>
class RelabelFst;
template <class Arc, class StateTable = DefaultReplaceStateTable<Arc>,
class Store = DefaultCacheStore<Arc>>
class ReplaceFst;
template <class Arc>
class RmEpsilonFst;
template <class Arc>
class UnionFst;
// Heap.
template <class T, class Compare>
class Heap;
// ArcCompactors.
template <class Arc>
class AcceptorCompactor;
template <class Arc>
class StringCompactor;
template <class Arc>
class UnweightedAcceptorCompactor;
template <class Arc>
class UnweightedCompactor;
template <class Arc>
class WeightedStringCompactor;
// Compact Arc FSTs.
template <class Arc, class U = uint32_t>
using CompactStringFst = CompactArcFst<Arc, StringCompactor<Arc>, U>;
template <class Arc, class U = uint32_t>
using CompactWeightedStringFst =
CompactArcFst<Arc, WeightedStringCompactor<Arc>, U>;
template <class Arc, class U = uint32_t>
using CompactAcceptorFst = CompactArcFst<Arc, AcceptorCompactor<Arc>, U>;
template <class Arc, class U = uint32_t>
using CompactUnweightedFst = CompactArcFst<Arc, UnweightedCompactor<Arc>, U>;
template <class Arc, class U = uint32_t>
using CompactUnweightedAcceptorFst =
CompactArcFst<Arc, UnweightedAcceptorCompactor<Arc>, U>;
// StdArc aliases for FSTs.
using StdConstFst = ConstFst<StdArc>;
using StdExpandedFst = ExpandedFst<StdArc>;
using StdFst = Fst<StdArc>;
using StdMutableFst = MutableFst<StdArc>;
using StdVectorFst = VectorFst<StdArc>;
// StdArc aliases for on-the-fly operations.
template <class Compare>
using StdArcSortFst = ArcSortFst<StdArc, Compare>;
using StdClosureFst = ClosureFst<StdArc>;
using StdComposeFst = ComposeFst<StdArc>;
using StdConcatFst = ConcatFst<StdArc>;
using StdDeterminizeFst = DeterminizeFst<StdArc>;
using StdDifferenceFst = DifferenceFst<StdArc>;
using StdIntersectFst = IntersectFst<StdArc>;
using StdInvertFst = InvertFst<StdArc>;
using StdProjectFst = ProjectFst<StdArc>;
using StdRelabelFst = RelabelFst<StdArc>;
using StdReplaceFst = ReplaceFst<StdArc>;
using StdRmEpsilonFst = RmEpsilonFst<StdArc>;
using StdUnionFst = UnionFst<StdArc>;
// Filter states.
template <class T>
class IntegerFilterState;
using CharFilterState = IntegerFilterState<signed char>;
using ShortFilterState = IntegerFilterState<short>; // NOLINT
using IntFilterState = IntegerFilterState<int>;
// Matchers and filters.
template <class FST>
class Matcher;
template <class Matcher1, class Matcher2 = Matcher1>
class NullComposeFilter;
template <class Matcher1, class Matcher2 = Matcher1>
class TrivialComposeFilter;
template <class Matcher1, class Matcher2 = Matcher1>
class SequenceComposeFilter;
template <class Matcher1, class Matcher2 = Matcher1>
class AltSequenceComposeFilter;
template <class Matcher1, class Matcher2 = Matcher1>
class MatchComposeFilter;
template <class Matcher1, class Matcher2 = Matcher1>
class NoMatchComposeFilter;
} // namespace fst
#endif // FST_FST_DECL_H_