22 #ifndef FST_ARC_MAP_H_ 23 #define FST_ARC_MAP_H_ 29 #include <type_traits> 45 #include <unordered_map> 134 template <
class A,
class C>
138 using Weight =
typename FromArc::Weight;
147 const auto final_action = mapper->FinalAction();
155 const auto state = siter.Value();
157 !aiter.Done(); aiter.Next()) {
158 const auto &arc = aiter.Value();
159 aiter.SetValue((*mapper)(arc));
161 switch (final_action) {
165 const auto final_arc = (*mapper)(arc);
166 if (final_arc.ilabel != 0 || final_arc.olabel != 0) {
167 FSTERROR() <<
"ArcMap: Non-zero arc labels for superfinal arc";
170 fst->
SetFinal(state, final_arc.weight);
174 if (state != superfinal) {
176 auto final_arc = (*mapper)(arc);
177 if (final_arc.ilabel != 0 || final_arc.olabel != 0) {
183 final_arc.nextstate = superfinal;
184 fst->
AddArc(state, std::move(final_arc));
185 fst->
SetFinal(state, Weight::Zero());
187 fst->
SetFinal(state, final_arc.weight);
193 if (state != superfinal) {
195 const auto final_arc = (*mapper)(arc);
196 if (final_arc.ilabel != 0 || final_arc.olabel != 0 ||
197 final_arc.weight != Weight::Zero()) {
198 fst->
AddArc(state, ToArc(final_arc.ilabel, final_arc.olabel,
199 final_arc.weight, superfinal));
201 fst->
SetFinal(state, Weight::Zero());
212 template <
class A,
class C>
220 template <
class A,
class B,
class C>
223 using StateId =
typename FromArc::StateId;
240 const auto final_action = mapper->FinalAction();
255 StateId s = siter.Value();
260 ofst->
AddArc(s, (*mapper)(aiter.Value()));
262 switch (final_action) {
266 if (final_arc.ilabel != 0 || final_arc.olabel != 0) {
267 FSTERROR() <<
"ArcMap: Non-zero arc labels for superfinal arc";
270 ofst->
SetFinal(s, final_arc.weight);
275 if (final_arc.ilabel != 0 || final_arc.olabel != 0) {
281 final_arc.nextstate = superfinal;
282 ofst->
AddArc(s, std::move(final_arc));
283 ofst->
SetFinal(s, B::Weight::Zero());
285 ofst->
SetFinal(s, final_arc.weight);
291 if (final_arc.ilabel != 0 || final_arc.olabel != 0 ||
292 final_arc.weight != B::Weight::Zero()) {
293 ofst->
AddArc(s, B(final_arc.ilabel, final_arc.olabel,
294 final_arc.weight, superfinal));
296 ofst->
SetFinal(s, B::Weight::Zero());
308 template <
class A,
class B,
class C>
310 ArcMap(ifst, ofst, &mapper);
321 template <
class A,
class B,
class C,
class CacheStore,
329 template <
template <
typename>
class Extract,
typename Obj,
typename>
333 template <
template <
typename>
class Extract,
typename Obj>
338 template <
template <
typename>
class Extract,
typename Obj>
346 template <
typename C>
352 template <
typename C>
360 template <
class A,
class B,
class C,
class CacheStore = DefaultCacheStore<B>,
361 bool is_expanded = false>
363 :
public CacheBaseImpl<typename CacheStore::State, CacheStore> {
375 using State =
typename CacheStore::State;
377 using CacheImpl::EmplaceArc;
378 using CacheImpl::HasArcs;
379 using CacheImpl::HasFinal;
380 using CacheImpl::HasStart;
381 using CacheImpl::PushArc;
382 using CacheImpl::SetArcs;
383 using CacheImpl::SetFinal;
384 using CacheImpl::SetStart;
389 ArcMapFst<A, B, C, CacheStore, PropagateKExpanded::kNo>>;
392 const ArcMapFstOptions &opts)
395 mapper_(new C(mapper)),
397 superfinal_(kNoStateId),
414 fst_(impl.fst_->Copy(true)),
415 mapper_(new C(*impl.mapper_)),
423 if (own_mapper_)
delete mapper_;
427 if (!HasStart()) SetStart(FindOState(fst_->Start()));
428 return CacheImpl::Start();
433 switch (final_action_) {
436 const auto final_arc =
437 (*mapper_)(A(0, 0, fst_->Final(FindIState(s)),
kNoStateId));
438 if (final_arc.ilabel != 0 || final_arc.olabel != 0) {
439 FSTERROR() <<
"ArcMapFst: Non-zero arc labels for superfinal arc";
442 SetFinal(s, final_arc.weight);
446 if (s == superfinal_) {
449 const auto final_arc =
450 (*mapper_)(A(0, 0, fst_->Final(FindIState(s)),
kNoStateId));
451 if (final_arc.ilabel == 0 && final_arc.olabel == 0) {
452 SetFinal(s, final_arc.weight);
454 SetFinal(s, Weight::Zero());
460 SetFinal(s, s == superfinal_ ? Weight::One() : Weight::Zero());
470 if (!HasArcs(s))
Expand(s);
475 if (!HasArcs(s))
Expand(s);
480 if (!HasArcs(s))
Expand(s);
486 static_assert(is_expanded,
487 "NumStates() only supported if the input is an ExpandedFst");
489 "NumStates() only supported for mappers that conserve the " 490 "expanded property and don't create a superfinal state");
491 return fst_->NumStates();
498 if ((mask &
kError) && (fst_->Properties(kError,
false) ||
499 (mapper_->Properties(0) &
kError))) {
500 SetProperties(kError, kError);
506 if (!HasArcs(s))
Expand(s);
507 CacheImpl::InitArcIterator(s, data);
512 if (s == superfinal_) {
518 auto aarc = aiter.Value();
519 aarc.nextstate = FindOState(aarc.nextstate);
520 PushArc(s, (*mapper_)(aarc));
524 if (!HasFinal(s) ||
Final(s) == Weight::Zero()) {
525 switch (final_action_) {
531 (*mapper_)(A(0, 0, fst_->Final(FindIState(s)),
kNoStateId));
532 if (final_arc.ilabel != 0 || final_arc.olabel != 0) {
533 if (superfinal_ ==
kNoStateId) superfinal_ = nstates_++;
534 final_arc.nextstate = superfinal_;
535 PushArc(s, std::move(final_arc));
540 const auto final_arc =
541 (*mapper_)(A(0, 0, fst_->Final(FindIState(s)),
kNoStateId));
542 if (final_arc.ilabel != 0 || final_arc.olabel != 0 ||
543 final_arc.weight != B::Weight::Zero()) {
544 EmplaceArc(s, final_arc.ilabel, final_arc.olabel, final_arc.weight,
558 SetInputSymbols(fst_->InputSymbols());
560 SetInputSymbols(
nullptr);
563 SetOutputSymbols(fst_->OutputSymbols());
565 SetOutputSymbols(
nullptr);
571 final_action_ = mapper_->FinalAction();
573 SetProperties(mapper_->Properties(props));
580 if (superfinal_ ==
kNoStateId || s < superfinal_) {
590 if (!(superfinal_ ==
kNoStateId || is < superfinal_)) ++os;
591 if (os >= nstates_) nstates_ = os + 1;
595 std::unique_ptr<const FromFst> fst_;
597 const bool own_mapper_;
603 template <
class A,
class B,
class C,
class CacheStore,
624 template <
class A,
class B,
class C,
class CacheStore = DefaultCacheStore<B>,
625 PropagateKExpanded propagate_expanded_fst = PropagateKExpanded::kNo>
627 propagate_expanded_fst> {
638 using typename Base::Impl;
642 ArcMapFst<A, B, C, CacheStore, propagate_expanded_fst>>;
644 ArcMapFst<A, B, C, CacheStore, propagate_expanded_fst>>;
648 : Base(std::make_shared<Impl>(fst, mapper, opts)) {}
652 : Base(std::make_shared<Impl>(fst, mapper, opts)) {}
665 GetMutableImpl()->InitArcIterator(s, data);
670 using Base::GetMutableImpl;
679 template <
class A,
class B,
class C,
class CacheStore,
688 : impl_(fst.GetImpl()),
689 siter_(*impl_->fst_),
695 bool Done() const final {
return siter_.Done() && !superfinal_; }
701 if (!siter_.Done()) {
704 }
else if (superfinal_) {
717 void CheckSuperfinal() {
719 if (!siter_.Done()) {
720 const auto final_arc =
721 (*impl_->mapper_)(A(0, 0, impl_->fst_->Final(s_),
kNoStateId));
722 if (final_arc.ilabel != 0 || final_arc.olabel != 0) superfinal_ =
true;
726 const typename FST::Impl *impl_;
733 template <
class A,
class B,
class C,
class CacheStore,
737 ArcMapFst<A, B, C, CacheStore, propagate_expanded_fst>> {
744 if (!fst.GetImpl()->HasArcs(s)) fst.GetMutableImpl()->Expand(s);
748 template <
class A,
class B,
class C,
class CacheStore,
753 data->
base = std::make_unique<StateIterator<ArcMapFst>>(*this);
763 template <
class ArcMapper>
765 ->
ArcMapFst<
typename ArcMapper::FromArc,
typename ArcMapper::ToArc,
768 template <
class ArcMapper,
769 typename = std::enable_if_t<
773 ->
ArcMapFst<
typename ArcMapper::FromArc,
typename ArcMapper::ToArc,
774 ArcMapper, DefaultCacheStore<typename ArcMapper::ToArc>,
778 template <
class ArcMapper>
780 ->
ArcMapFst<
typename ArcMapper::FromArc,
typename ArcMapper::ToArc,
781 ArcMapper, DefaultCacheStore<typename ArcMapper::ToArc>,
782 PropagateKExpanded::kNo>;
783 template <
class ArcMapper,
784 typename = std::enable_if_t<
788 ->
ArcMapFst<
typename ArcMapper::FromArc,
typename ArcMapper::ToArc,
789 ArcMapper, DefaultCacheStore<typename ArcMapper::ToArc>,
790 PropagateKExpanded::kIfPossible>;
813 constexpr uint64_t
Properties(uint64_t props)
const {
return props; }
824 return ToArc(0, arc.olabel, arc.weight, arc.nextstate);
850 return ToArc(arc.ilabel, 0, arc.weight, arc.nextstate);
875 using Label =
typename FromArc::Label;
880 : final_label_(final_label) {}
884 if (arc.nextstate ==
kNoStateId && arc.weight != Weight::Zero()) {
904 if (final_label_ == 0) {
913 const Label final_label_;
920 template <
class A,
class B,
935 : convert_weight_(c) {}
938 return ToArc(arc.ilabel, arc.olabel, convert_weight_(arc.weight),
952 constexpr uint64_t
Properties(uint64_t props)
const {
return props; }
979 template <
class A, GallicType G = GALLIC_LEFT>
986 using AW =
typename FromArc::Weight;
991 if (arc.nextstate ==
kNoStateId && arc.weight != AW::Zero()) {
997 }
else if (arc.olabel == 0) {
998 return ToArc(arc.ilabel, arc.ilabel,
GW(SW::One(), arc.weight),
1002 return ToArc(arc.ilabel, arc.ilabel,
GW(
SW(arc.olabel), arc.weight),
1023 template <
class A, GallicType G = GALLIC_LEFT>
1030 using AW =
typename ToArc::Weight;
1034 : superfinal_label_(superfinal_label), error_(false) {}
1042 AW weight = AW::Zero();
1044 FSTERROR() <<
"FromGallicMapper: Unrepresentable weight: " << arc.
weight 1045 <<
" for arc with ilabel = " << arc.
ilabel 1046 <<
", olabel = " << arc.
olabel 1070 if (error_) outprops |=
kError;
1075 template <GallicType GT>
1077 typename A::Weight *weight,
typename A::Label *label) {
1079 const GW &w1 = gallic_weight.
Value1();
1080 const AW &w2 = gallic_weight.
Value2();
1081 typename GW::Iterator iter1(w1);
1082 const Label l = w1.Size() == 1 ? iter1.Value() : 0;
1090 typename A::Weight *weight,
typename A::Label *label) {
1091 if (gallic_weight.Size() > 1)
return false;
1092 if (gallic_weight.Size() == 0) {
1094 *weight = A::Weight::Zero();
1097 return Extract<GALLIC_RESTRICT>(gallic_weight.Back(), weight, label);
1100 const Label superfinal_label_;
1101 mutable bool error_;
1105 template <
class A, GallicType G = GALLIC_LEFT>
1113 using AW =
typename ToArc::Weight;
1120 osymbols_(fst->OutputSymbols()),
1123 fst_->DeleteStates();
1124 state_ = fst_->AddState();
1125 fst_->SetStart(state_);
1126 fst_->SetFinal(state_);
1128 std::string name = osymbols_->Name() +
"_from_gallic";
1130 isymbols_ = fst_->MutableInputSymbols();
1131 const int64_t zero = 0;
1132 isymbols_->AddSymbol(osymbols_->Find(zero), 0);
1134 fst_->SetInputSymbols(
nullptr);
1146 if (w1.
Size() == 0) {
1148 }
else if (
auto [it, inserted] = map_.emplace(w1,
kNoLabel); !inserted) {
1156 for (
size_t i = 0, p = state_; i < w1.
Size(); ++i, iter1.
Next(), p = n) {
1157 n = i == w1.
Size() - 1 ? state_ : fst_->AddState();
1158 fst_->AddArc(p,
ToArc(i ? 0 : l, iter1.
Value(), n));
1161 s = s + osymbols_->Find(iter1.
Value());
1164 if (isymbols_) isymbols_->AddSymbol(s, l);
1167 FSTERROR() <<
"GallicToNewSymbolMapper: Unrepresentable weight: " << l;
1186 if (error_) outprops |=
kError;
1193 size_t operator()(
const SW &x)
const {
return x.
Hash(); }
1196 using Map = std::unordered_map<SW, Label, StringKey>;
1204 mutable bool error_;
1221 if (arc.weight == Weight::Zero())
return arc;
1222 return ToArc(arc.ilabel, arc.olabel,
Plus(arc.weight, weight_),
1255 if (arc.weight == Weight::Zero())
return arc;
1256 return ToArc(arc.ilabel, arc.olabel,
Times(arc.weight, weight_),
1293 return ToArc(arc.ilabel, arc.olabel,
Power(arc.weight, power_),
1312 const double power_;
1324 if (arc.weight == Weight::Zero())
return arc;
1325 return ToArc(arc.ilabel, arc.olabel,
Divide(Weight::One(), arc.weight),
1345 template <
class A,
class B = A>
1355 arc.ilabel, arc.olabel,
1356 arc.weight != FromWeight::Zero() ? ToWeight::One() : ToWeight::Zero(),
1376 template <
class A,
class B = A>
1389 return ToArc(arc.ilabel, arc.olabel, arc.weight.Quantize(delta_),
1418 template <
class A,
class B>
1423 static_assert(std::is_same_v<
typename ToArc::Weight,
1424 typename FromArc::Weight::ReverseWeight>,
1425 "ToArc::Weight must be FromArc::Weight::ReverseWeight");
1426 static_assert(std::is_same_v<typename ToArc::Label, typename FromArc::Label>,
1427 "ToArc::Label must be FromArc::Label");
1429 std::is_same_v<typename ToArc::StateId, typename FromArc::StateId>,
1430 "ToArc::StateId must be FromArc::StateId");
1433 return ToArc(arc.ilabel, arc.olabel, arc.weight.Reverse(), arc.nextstate);
1446 constexpr uint64_t
Properties(uint64_t props)
const {
return props; }
1451 #endif // FST_ARC_MAP_H_ typename B::StateId StateId
constexpr MapSymbolsAction InputSymbolsAction() const
ToArc operator()(const FromArc &arc) const
ssize_t NumOutputEpsilons(const ExpandedFst< Arc > &fst, typename Arc::StateId s)
void ArcMap(MutableFst< A > *fst, C *mapper)
constexpr MapSymbolsAction InputSymbolsAction() const
constexpr SuperFinalMapper(Label final_label=0)
typename FromArc::Weight Weight
constexpr MapSymbolsAction InputSymbolsAction() const
~ArcMapFstImpl() override
GallicToNewSymbolsMapper(MutableFst< ToArc > *fst)
constexpr uint64_t kWeightInvariantProperties
uint64_t Properties(uint64_t props) const
virtual uint64_t Properties(uint64_t mask, bool test) const =0
constexpr uint64_t kOEpsilons
ToArc operator()(const FromArc &arc) const
constexpr MapFinalAction FinalAction() const
constexpr MapSymbolsAction InputSymbolsAction() const
constexpr MapSymbolsAction OutputSymbolsAction() const
ToArc operator()(const FromArc &arc) const
ErrorWeight Plus(const ErrorWeight &, const ErrorWeight &)
constexpr MapSymbolsAction InputSymbolsAction() const
virtual size_t NumArcs(StateId) const =0
constexpr MapSymbolsAction OutputSymbolsAction() const
void InitStateIterator(StateIteratorData< B > *data) const override
constexpr MapSymbolsAction OutputSymbolsAction() const
ArcMapFstImpl(const FromFst &fst, C *mapper, const ArcMapFstOptions &opts)
typename ToArc::Weight ToWeight
constexpr uint64_t Properties(uint64_t props) const
const Label & Value() const
constexpr MapSymbolsAction OutputSymbolsAction() const
constexpr ToArc operator()(const FromArc &arc) const
constexpr ToArc operator()(const FromArc &arc) const
constexpr MapFinalAction FinalAction() const
Arc::Weight Final(const ExpandedFst< Arc > &fst, typename Arc::StateId s)
void InitArcIterator(StateId s, ArcIteratorData< B > *data) const override
constexpr ToArc operator()(const FromArc &arc) const
typename A::StateId StateId
typename FromArc::Weight Weight
constexpr MapFinalAction FinalAction() const
ErrorWeight Times(const ErrorWeight &, const ErrorWeight &)
typename FromArc::Label Label
ToArc operator()(const FromArc &arc) const
std::bool_constant<(C{}.FinalAction()==MAP_NO_SUPERFINAL)&&(C{}.Properties(kExpanded)==kExpanded)> CoreConditions
constexpr uint64_t kError
typename ToArc::Weight ToWeight
constexpr MapFinalAction FinalAction() const
virtual void SetInputSymbols(const SymbolTable *isyms)=0
typename FromArc::Weight Weight
constexpr MapSymbolsAction OutputSymbolsAction() const
constexpr uint64_t Properties(uint64_t props) const
constexpr MapSymbolsAction OutputSymbolsAction() const
virtual Weight Final(StateId) const =0
typename ToArc::Weight GW
uint64_t Properties(uint64_t mask) const override
constexpr MapFinalAction FinalAction() const
constexpr MapFinalAction FinalAction() const
virtual void SetStart(StateId)=0
constexpr uint64_t Properties(uint64_t props) const
ToArc operator()(const FromArc &arc) const
ssize_t NumArcs(const ExpandedFst< Arc > &fst, typename Arc::StateId s)
ToArc operator()(const FromArc &arc)
uint64_t Properties(uint64_t props) const
typename FromArc::Weight Weight
uint64_t Properties(uint64_t inprops) const
constexpr MapFinalAction FinalAction() const
constexpr uint64_t Properties(uint64_t props) const
FromGallicMapper(Label superfinal_label=0)
ToArc operator()(const FromArc &arc) const
constexpr MapSymbolsAction OutputSymbolsAction() const
constexpr MapSymbolsAction InputSymbolsAction() const
constexpr MapFinalAction FinalAction() const
constexpr TimesMapper(Weight weight)
ToArc operator()(const FromArc &arc) const
virtual void ReserveArcs(StateId, size_t)
StateId Value() const final
size_t NumInputEpsilons(StateId s)
ArcMapFst(const ArcMapFst &fst, bool safe=false)
constexpr PlusMapper(Weight weight)
constexpr int kStringInfinity
constexpr MapSymbolsAction OutputSymbolsAction() const
uint64_t Properties() const override
ssize_t NumInputEpsilons(const ExpandedFst< Arc > &fst, typename Arc::StateId s)
typename FromArc::Weight Weight
typename Arc::Weight Weight
std::conditional_t< is_expanded, ExpandedFst< A >, Fst< A >> FromFst
constexpr uint64_t kOLabelSorted
constexpr uint64_t kCopyProperties
constexpr uint64_t Properties(uint64_t props) const
virtual void SetProperties(uint64_t props, uint64_t mask)=0
typename CacheStore::State State
typename FirstCacheStore< VectorCacheStore< CacheState< Arc > > >::State State
typename ExtractOr< Extract, Obj, void >::type ExtractOrT
constexpr MapSymbolsAction OutputSymbolsAction() const
void InitArcIterator(StateId s, ArcIteratorData< B > *data)
constexpr MapSymbolsAction InputSymbolsAction() const
constexpr MapSymbolsAction InputSymbolsAction() const
virtual StateId Start() const =0
std::unique_ptr< StateIteratorBase< Arc > > base
StateIterator(const FST &fst)
constexpr uint64_t kOLabelInvariantProperties
constexpr uint64_t Properties(uint64_t props) const
constexpr uint64_t kNullProperties
constexpr MapSymbolsAction OutputSymbolsAction() const
constexpr WeightConvertMapper(const Converter &c)
constexpr uint64_t kIEpsilons
typename ToArc::StateId StateId
typename FromArc::Weight GW
typename FromArc::Weight GW
typename ToArc::Weight AW
constexpr uint64_t Properties(uint64_t props) const
virtual std::optional< StateId > NumStatesIfKnown() const
constexpr uint64_t kILabelInvariantProperties
constexpr MapFinalAction FinalAction() const
constexpr uint64_t kILabelSorted
constexpr uint64_t kFstProperties
virtual void AddArc(StateId, const Arc &)=0
constexpr uint64_t kUnweighted
constexpr MapFinalAction FinalAction() const
typename FromArc::Weight FromWeight
virtual const SymbolTable * InputSymbols() const =0
StateId NumStates() const
constexpr MapFinalAction FinalAction() const
typename ToArc::Label Label
ArcMapFst(const FromFst &fst, C *mapper, const ArcMapFstOptions &opts=ArcMapFstOptions())
ErrorWeight Divide(const ErrorWeight &, const ErrorWeight &)
virtual StateId AddState()=0
constexpr MapSymbolsAction OutputSymbolsAction() const
constexpr MapSymbolsAction InputSymbolsAction() const
typename ToArc::Label Label
virtual void ReserveStates(size_t)
virtual void SetFinal(StateId s, Weight weight=Weight::One())=0
typename Arc::StateId StateId
ArcMapFst(const FromFst &fst, const C &mapper=C(), const ArcMapFstOptions &opts=ArcMapFstOptions())
typename Arc::Weight Weight
ArcMapFst * Copy(bool safe=false) const override
virtual void DeleteStates(const std::vector< StateId > &)=0
constexpr MapSymbolsAction InputSymbolsAction() const
constexpr MapSymbolsAction InputSymbolsAction() const
ArcIterator(const FST &fst, StateId s)
uint64_t ProjectProperties(uint64_t inprops, bool project_input)
virtual void SetOutputSymbols(const SymbolTable *osyms)=0
typename Arc::StateId StateId
constexpr MapFinalAction FinalAction() const
typename FromArc::Weight AW
ArcMapFstImpl(const ArcMapFstImpl &impl)
void Expand(const Fst< Arc > &ifst, const std::vector< std::pair< typename Arc::Label, typename Arc::Label >> &parens, const std::vector< typename Arc::Label > &assignments, MutableFst< Arc > *ofst, const MPdtExpandOptions &opts)
void Extract(FarReader< Arc > &reader, int32_t generate_sources, const std::string &keys, std::string_view key_separator, std::string_view range_delimiter, std::string_view source_prefix, std::string_view source_suffix)
ToArc operator()(const FromArc &arc) const
constexpr MapFinalAction FinalAction() const
constexpr TropicalWeightTpl< T > Power(const TropicalWeightTpl< T > &w, V n)
typename FromArc::Weight FromWeight
constexpr uint64_t Properties(uint64_t props) const
ArcMapFstOptions(const CacheOptions &opts)
ArcMapFst(const Fst< typename ArcMapper::FromArc > &, const ArcMapper &) -> ArcMapFst< typename ArcMapper::FromArc, typename ArcMapper::ToArc, ArcMapper, DefaultCacheStore< typename ArcMapper::ToArc >, PropagateKExpanded::kNo >
typename Impl::FromFst FromFst
constexpr ToArc operator()(const FromArc &arc) const
uint64_t Properties(uint64_t inprops) const
constexpr uint64_t kExpanded
constexpr MapFinalAction FinalAction() const
size_t NumOutputEpsilons(StateId s)
constexpr uint64_t Properties(uint64_t props) const
constexpr MapSymbolsAction OutputSymbolsAction() const
constexpr uint64_t Properties(uint64_t props) const
typename Store::State State
constexpr MapSymbolsAction OutputSymbolsAction() const
constexpr MapSymbolsAction InputSymbolsAction() const
constexpr uint64_t kSetArcProperties
std::conditional_t< should_propagate_expanded_fst==PropagateKExpanded::kIfPossible &&internal::IsDefaultConstructibleExpandedNoSuperfinalArcMapper< C >::value, ImplToExpandedFst< internal::ArcMapFstImpl< A, B, C, CacheStore, true >>, ImplToFst< internal::ArcMapFstImpl< A, B, C, CacheStore, false >>> ArcMapFstBase
constexpr MapSymbolsAction InputSymbolsAction() const
constexpr MapSymbolsAction InputSymbolsAction() const
constexpr MapSymbolsAction OutputSymbolsAction() const
PowerMapper(double power)
ToArc operator()(const FromArc &arc) const
constexpr uint64_t kAddSuperFinalProperties
ExtractOrT< CoreConditions, C > IsDefaultConstructibleExpandedNoSuperfinalArcMapper
const StringWeight< Label, GallicStringType(G)> & Value1() const
size_t NumArcs(StateId s)
typename ToArc::Weight AW
typename ToArc::Weight ToWeight
virtual const SymbolTable * OutputSymbols() const =0
typename FromArc::Weight FromWeight