spot
0.9.2
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
sabaalgos
sabareachiter.hh
Go to the documentation of this file.
1
// Copyright (C) 2009, 2010 Laboratoire de Recherche et Développement
2
// de l'Epita (LRDE).
3
//
4
// This file is part of Spot, a model checking library.
5
//
6
// Spot is free software; you can redistribute it and/or modify it
7
// under the terms of the GNU General Public License as published by
8
// the Free Software Foundation; either version 2 of the License, or
9
// (at your option) any later version.
10
//
11
// Spot is distributed in the hope that it will be useful, but WITHOUT
12
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
14
// License for more details.
15
//
16
// You should have received a copy of the GNU General Public License
17
// along with Spot; see the file COPYING. If not, write to the Free
18
// Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
// 02111-1307, USA.
20
21
#ifndef SPOT_SABAALGOS_SABAREACHITER_HH
22
# define SPOT_SABAALGOS_SABAREACHITER_HH
23
24
#include "
misc/hash.hh
"
25
#include "
saba/saba.hh
"
26
#include <stack>
27
#include <deque>
28
29
namespace
spot
30
{
33
class
saba_reachable_iterator
34
{
35
public
:
36
saba_reachable_iterator
(
const
saba
* a);
37
virtual
~saba_reachable_iterator
();
38
44
void
run
();
45
53
virtual
void
add_state
(
const
saba_state
* s) = 0;
55
virtual
const
saba_state
*
next_state
() = 0;
57
60
virtual
bool
want_state
(
const
saba_state
* s)
const
;
61
63
virtual
void
start
();
65
virtual
void
end
();
66
71
virtual
void
process_state
(
const
saba_state
* s,
int
n);
72
82
virtual
void
83
process_state_conjunction
(
const
saba_state
* in_s,
int
in,
84
const
saba_state_conjunction
* sc,
85
int
sc_id,
86
const
saba_succ_iterator
* si);
102
virtual
void
103
process_link
(
const
saba_state
* in_s,
int
in,
104
const
saba_state
* out_s,
int
out,
105
const
saba_state_conjunction
* sc,
106
int
sc_id,
107
const
saba_succ_iterator
* si);
108
109
protected
:
110
const
saba
*
automata_
;
111
112
typedef
Sgi::hash_map
<
const
saba_state
*, int,
113
saba_state_ptr_hash
,
saba_state_ptr_equal
>
seen_map
;
114
seen_map
seen
;
115
};
116
120
class
saba_reachable_iterator_depth_first
:
public
saba_reachable_iterator
121
{
122
public
:
123
saba_reachable_iterator_depth_first
(
const
saba
* a);
124
125
virtual
void
add_state
(
const
saba_state
* s);
126
virtual
const
saba_state
*
next_state
();
127
128
protected
:
129
std::stack<const saba_state*>
todo
;
130
};
131
135
class
saba_reachable_iterator_breadth_first
:
public
saba_reachable_iterator
136
{
137
public
:
138
saba_reachable_iterator_breadth_first
(
const
saba
* a);
139
140
virtual
void
add_state
(
const
saba_state
* s);
141
virtual
const
saba_state
*
next_state
();
142
143
protected
:
144
std::deque<const saba_state*>
todo
;
145
};
146
147
148
}
149
150
151
#endif // SPOT_SABAALGOS_SABAREACHITER_HH
Please
comment
this page and
report errors
about it on
the RefDocComments page
.
Generated on Mon Jul 2 2012 17:35:47 for spot by
1.8.1.1