Lines Matching refs:StateId
37 // typedef typename S StateId;
42 // StateId Head() const;
44 // void Enqueue(StateId s);
48 // void Update(StateId s);
69 // QueueBase, templated on the StateId, is the base class shared by the
74 typedef S StateId;
78 StateId Head() const { return Head_(); }
79 void Enqueue(StateId s) { Enqueue_(s); }
81 void Update(StateId s) { Update_(s); }
87 virtual StateId Head_() const = 0;
88 virtual void Enqueue_(StateId s) = 0;
90 virtual void Update_(StateId s) = 0;
98 // Trivial queue discipline, templated on the StateId. You may enqueue
104 typedef S StateId;
107 StateId Head() const { return front_; }
108 void Enqueue(StateId s) { front_ = s; }
110 void Update(StateId s) {}
116 virtual StateId Head_() const { return Head(); }
117 virtual void Enqueue_(StateId s) { Enqueue(s); }
119 virtual void Update_(StateId s) { Update(s); }
123 StateId front_;
127 // First-in, first-out queue discipline, templated on the StateId.
137 typedef S StateId;
140 StateId Head() const { return back(); }
141 void Enqueue(StateId s) { push_front(s); }
143 void Update(StateId s) {}
148 virtual StateId Head_() const { return Head(); }
149 virtual void Enqueue_(StateId s) { Enqueue(s); }
151 virtual void Update_(StateId s) { Update(s); }
157 // Last-in, first-out queue discipline, templated on the StateId.
167 typedef S StateId;
170 StateId Head() const { return front(); }
171 void Enqueue(StateId s) { push_front(s); }
173 void Update(StateId s) {}
178 virtual StateId Head_() const { return Head(); }
179 virtual void Enqueue_(StateId s) { Enqueue(s); }
181 virtual void Update_(StateId s) { Update(s); }
187 // Shortest-first queue discipline, templated on the StateId and
194 typedef S StateId;
200 StateId Head() const { return heap_.Top(); }
202 void Enqueue(StateId s) {
203 for (StateId i = key_.size(); i <= s; ++i)
212 void Update(StateId s) {
213 if (s >= (StateId)key_.size() || key_[s] == kNoKey) {
231 virtual StateId Head_() const { return Head(); }
232 virtual void Enqueue_(StateId s) { Enqueue(s); }
234 virtual void Update_(StateId s) { Update(s); }
248 typedef S StateId;
263 // Shortest-first queue discipline, templated on the StateId and Weight is
279 // Topological-order queue discipline, templated on the StateId.
284 typedef S StateId;
304 TopOrderQueue(const vector<StateId> &order)
308 StateId Head() const { return state_[front_]; }
310 void Enqueue(StateId s) {
322 void Update(StateId s) {}
327 for (StateId i = front_; i <= back_; ++i) state_[i] = kNoStateId;
333 StateId front_;
334 StateId back_;
335 vector<StateId> order_;
336 vector<StateId> state_;
338 virtual StateId Head_() const { return Head(); }
339 virtual void Enqueue_(StateId s) { Enqueue(s); }
341 virtual void Update_(StateId s) { Update(s); }
348 // State order queue discipline, templated on the StateId.
353 typedef S StateId;
358 StateId Head() const { return front_; }
360 void Enqueue(StateId s) {
364 while ((StateId)enqueued_.size() <= s) enqueued_.push_back(false);
373 void Update(StateId s) {}
378 for (StateId i = front_; i <= back_; ++i) enqueued_[i] = false;
384 StateId front_;
385 StateId back_;
388 virtual StateId Head_() const { return Head(); }
389 virtual void Enqueue_(StateId s) { Enqueue(s); }
391 virtual void Update_(StateId s) { Update(s); }
398 // SCC topological-order meta-queue discipline, templated on the StateId S
405 typedef S StateId;
410 SccQueue(const vector<StateId> &scc, vector<Queue*> *queue)
414 StateId Head() const {
418 ((front_ > (StateId)trivial_queue_.size())
429 void Enqueue(StateId s) {
436 while ( (StateId)trivial_queue_.size() <= scc_[s])
447 else if (front_ < (StateId)trivial_queue_.size())
451 void Update(StateId s) {
464 return (front_ > (StateId)trivial_queue_.size())
469 for (StateId i = front_; i <= back_; ++i)
472 else if (i < (StateId)trivial_queue_.size())
480 const vector<StateId> &scc_;
481 mutable StateId front_;
482 StateId back_;
483 vector<StateId> trivial_queue_;
485 virtual StateId Head_() const { return Head(); }
486 virtual void Enqueue_(StateId s) { Enqueue(s); }
488 virtual void Update_(StateId s) { Update(s); }
494 // Automatic queue discipline, templated on the StateId. It selects a
499 typedef S StateId;
508 typedef StateWeightCompare< StateId, NaturalLess<Weight> > Compare;
514 queue_ = new StateOrderQueue<StateId>();
517 queue_ = new TopOrderQueue<StateId>(fst, filter);
520 queue_ = new LifoQueue<StateId>();
527 StateId nscc = *max_element(scc_.begin(), scc_.end()) + 1;
542 queue_ = new LifoQueue<StateId>();
551 queue_ = new TopOrderQueue<StateId>(scc_);
559 for (StateId i = 0; i < nscc; ++i) {
568 queues_[i] = new ShortestFirstQueue<StateId, Compare>(*comp);
573 queues_[i] = new LifoQueue<StateId>();
579 queues_[i] = new FifoQueue<StateId>();
585 queue_ = new SccQueue< StateId, QueueBase<StateId> >(scc_, &queues_);
592 for (StateId i = 0; i < (StateId)queues_.size(); ++i) /*naucen-edit*/
597 StateId Head() const { return queue_->Head(); }
599 void Enqueue(StateId s) { queue_->Enqueue(s); }
603 void Update(StateId s) { queue_->Update(s); }
611 QueueBase<StateId> *queue_;
612 vector< QueueBase<StateId>* > queues_;
613 vector<StateId> scc_;
617 const vector<StateId> &scc,
622 virtual StateId Head_() const { return Head(); }
624 virtual void Enqueue_(StateId s) { Enqueue(s); }
628 virtual void Update_(StateId s) { Update(s); }
644 template <class StateId>
646 void AutoQueue<StateId>::SccQueueType(const Fst<A> &fst,
647 const vector<StateId> &scc,
652 typedef typename A::StateId StateId;
658 for (StateId i = 0; i < (StateId)queue_type->size(); ++i)
662 StateId state = sit.Value();