Lines Matching full:stateid
41 // typedef typename S StateId;
46 // StateId Head() const;
48 // void Enqueue(StateId s);
52 // void Update(StateId s);
73 // QueueBase, templated on the StateId, is the base class shared by the
78 typedef S StateId;
82 StateId Head() const { return Head_(); }
83 void Enqueue(StateId s) { Enqueue_(s); }
85 void Update(StateId s) { Update_(s); }
96 virtual StateId Head_() const = 0;
97 virtual void Enqueue_(StateId s) = 0;
99 virtual void Update_(StateId s) = 0;
108 // Trivial queue discipline, templated on the StateId. You may enqueue
114 typedef S StateId;
117 StateId Head() const { return front_; }
118 void Enqueue(StateId s) { front_ = s; }
120 void Update(StateId s) {}
129 virtual StateId Head_() const { return Head(); }
130 virtual void Enqueue_(StateId s) { Enqueue(s); }
132 virtual void Update_(StateId s) { Update(s); }
136 StateId front_;
140 // First-in, first-out queue discipline, templated on the StateId.
150 typedef S StateId;
153 StateId Head() const { return back(); }
154 void Enqueue(StateId s) { push_front(s); }
156 void Update(StateId s) {}
164 virtual StateId Head_() const { return Head(); }
165 virtual void Enqueue_(StateId s) { Enqueue(s); }
167 virtual void Update_(StateId s) { Update(s); }
173 // Last-in, first-out queue discipline, templated on the StateId.
183 typedef S StateId;
186 StateId Head() const { return front(); }
187 void Enqueue(StateId s) { push_front(s); }
189 void Update(StateId s) {}
197 virtual StateId Head_() const { return Head(); }
198 virtual void Enqueue_(StateId s) { Enqueue(s); }
200 virtual void Update_(StateId s) { Update(s); }
206 // Shortest-first queue discipline, templated on the StateId and
214 typedef S StateId;
220 StateId Head() const { return heap_.Top(); }
222 void Enqueue(StateId s) {
224 for (StateId i = key_.size(); i <= s; ++i)
239 void Update(StateId s) {
263 virtual StateId Head_() const { return Head(); }
264 virtual void Enqueue_(StateId s) { Enqueue(s); }
266 virtual void Update_(StateId s) { Update(s); }
280 typedef S StateId;
295 // Shortest-first queue discipline, templated on the StateId and Weight, is
310 // Topological-order queue discipline, templated on the StateId.
315 typedef S StateId;
336 TopOrderQueue(const vector<StateId> &order)
340 StateId Head() const { return state_[front_]; }
342 void Enqueue(StateId s) {
354 void Update(StateId s) {}
359 for (StateId i = front_; i <= back_; ++i) state_[i] = kNoStateId;
365 StateId front_;
366 StateId back_;
367 vector<StateId> order_;
368 vector<StateId> state_;
373 virtual StateId Head_() const { return Head(); }
374 virtual void Enqueue_(StateId s) { Enqueue(s); }
376 virtual void Update_(StateId s) { Update(s); }
382 // State order queue discipline, templated on the StateId.
387 typedef S StateId;
392 StateId Head() const { return front_; }
394 void Enqueue(StateId s) {
407 void Update(StateId s) {}
412 for (StateId i = front_; i <= back_; ++i) enqueued_[i] = false;
418 StateId front_;
419 StateId back_;
425 virtual StateId Head_() const { return Head(); }
426 virtual void Enqueue_(StateId s) { Enqueue(s); }
428 virtual void Update_(StateId s) { Update(s); }
435 // SCC topological-order meta-queue discipline, templated on the StateId S
442 typedef S StateId;
447 SccQueue(const vector<StateId> &scc, vector<Queue*> *queue)
451 StateId Head() const {
464 void Enqueue(StateId s) {
484 void Update(StateId s) {
502 for (StateId i = front_; i <= back_; ++i)
513 const vector<StateId> &scc_;
514 mutable StateId front_;
515 StateId back_;
516 vector<StateId> trivial_queue_;
521 virtual StateId Head_() const { return Head(); }
522 virtual void Enqueue_(StateId s) { Enqueue(s); }
524 virtual void Update_(StateId s) { Update(s); }
532 // Automatic queue discipline, templated on the StateId. It selects a
537 typedef S StateId;
546 typedef StateWeightCompare< StateId, NaturalLess<Weight> > Compare;
552 queue_ = new StateOrderQueue<StateId>();
555 queue_ = new TopOrderQueue<StateId>(fst, filter);
558 queue_ = new LifoQueue<StateId>();
565 StateId nscc = *max_element(scc_.begin(), scc_.end()) + 1;
580 queue_ = new LifoQueue<StateId>();
589 queue_ = new TopOrderQueue<StateId>(scc_);
597 for (StateId i = 0; i < nscc; ++i) {
605 queues_[i] = new ShortestFirstQueue<StateId, Compare, false>(*comp);
610 queues_[i] = new LifoQueue<StateId>();
616 queues_[i] = new FifoQueue<StateId>();
622 queue_ = new SccQueue< StateId, QueueBase<StateId> >(scc_, &queues_);
629 for (StateId i = 0; i < queues_.size(); ++i)
634 StateId Head() const { return queue_->Head(); }
636 void Enqueue(StateId s) { queue_->Enqueue(s); }
640 void Update(StateId s) { queue_->Update(s); }
648 QueueBase<StateId> *queue_;
649 vector< QueueBase<StateId>* > queues_;
650 vector<StateId> scc_;
654 const vector<StateId> &scc,
662 virtual StateId Head_() const { return Head(); }
664 virtual void Enqueue_(StateId s) { Enqueue(s); }
668 virtual void Update_(StateId s) { Update(s); }
686 template <class StateId>
688 void AutoQueue<StateId>::SccQueueType(const Fst<A> &fst,
689 const vector<StateId> &scc,
694 typedef typename A::StateId StateId;
700 for (StateId i = 0; i < queue_type->size(); ++i)
704 StateId state = sit.Value();
750 typedef S StateId;
769 // A* queue discipline, templated on the StateId, Weight and an
803 class PruneQueue : public QueueBase<typename Q::StateId> {
805 typedef typename Q::StateId StateId;
810 : QueueBase<StateId>(OTHER_QUEUE),
819 StateId Head() const { return queue_->Head(); }
821 void Enqueue(StateId s) {
822 StateId c = class_func_(s);
836 void Update(StateId s) {
837 StateId c = class_func_(s);
850 virtual StateId Head_() const { return Head(); }
851 virtual void Enqueue_(StateId s) { Enqueue(s); }
853 virtual void Update_(StateId s) { Update(s); }
875 typedef typename Q::StateId StateId;
893 class FilterQueue : public QueueBase<typename Q::StateId> {
895 typedef typename Q::StateId StateId;
898 : QueueBase<StateId>(OTHER_QUEUE),
904 StateId Head() const { return queue_->Head(); }
907 void Enqueue(StateId s) {
915 void Update(StateId s) {}
923 virtual StateId Head_() const { return Head(); }
924 virtual void Enqueue_(StateId s) { Enqueue(s); }
926 virtual void Update_(StateId s) { Update(s); }