Wt operator()(Arc* a) const { Wt const& arcw = ArcWtFn::operator()(a); Wt w(arcOnRight ? Wt::one() : arcw); StateIdContainer const& tails = a->tails(); for (StateIdContainer::const_iterator i = tails.begin(), e = tails.end(); i != e; ++i) StateWtFn::timesByState(*i, w); if (arcOnRight) timesBy(arcw, w); return w; }
result_type operator()(FeatureWeight const& inputWt, FeatureWeight const& matchWt) const { result_type r((inputWt)); timesBy(matchWt, r); return r; }
void timesByState(StateId s, Weight& w) { if (isAxiom()) timesBy(axiomWt(s), w); }