spot  1.1.3
reachiter.hh
Go to the documentation of this file.
1 // Copyright (C) 2008, 2009, 2011 Laboratoire de Recherche et Développement
2 // de l'Epita (LRDE).
3 // Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6
4 // (LIP6), département Systèmes Répartis Coopératifs (SRC), Université
5 // Pierre et Marie Curie.
6 //
7 // This file is part of Spot, a model checking library.
8 //
9 // Spot is free software; you can redistribute it and/or modify it
10 // under the terms of the GNU General Public License as published by
11 // the Free Software Foundation; either version 3 of the License, or
12 // (at your option) any later version.
13 //
14 // Spot is distributed in the hope that it will be useful, but WITHOUT
15 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 // License for more details.
18 //
19 // You should have received a copy of the GNU General Public License
20 // along with this program. If not, see <http://www.gnu.org/licenses/>.
21 
22 #ifndef SPOT_TGBAALGOS_REACHITER_HH
23 # define SPOT_TGBAALGOS_REACHITER_HH
24 
25 #include "misc/hash.hh"
26 #include "tgba/tgba.hh"
27 #include <stack>
28 #include <deque>
29 
30 namespace spot
31 {
35  {
36  public:
37  tgba_reachable_iterator(const tgba* a);
38  virtual ~tgba_reachable_iterator();
39 
45  void run();
46 
54  virtual void add_state(const state* s) = 0;
56  virtual const state* next_state() = 0;
58 
61  virtual bool want_state(const state* s) const;
62 
64  virtual void start();
66  virtual void end();
67 
73  virtual void process_state(const state* s, int n, tgba_succ_iterator* si);
86  virtual void process_link(const state* in_s, int in,
87  const state* out_s, int out,
88  const tgba_succ_iterator* si);
89 
90  protected:
91  const tgba* aut_;
92 
93  typedef Sgi::hash_map<const state*, int,
96  };
97 
102  {
103  public:
105 
106  virtual void add_state(const state* s);
107  virtual const state* next_state();
108 
109  protected:
110  std::stack<const state*> todo;
111  };
112 
117  {
118  public:
120 
121  virtual void add_state(const state* s);
122  virtual const state* next_state();
123 
124  protected:
125  std::deque<const state*> todo;
126  };
127 
128 
129 }
130 
131 
132 #endif // SPOT_TGBAALGOS_REACHITER_HH

Please direct any question, comment, or bug report to the Spot mailing list at spot@lrde.epita.fr.
Generated on Tue Jul 9 2013 14:04:33 for spot by doxygen 1.8.4