// 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_
|