spot  1.1.4
tgbaunion.hh
Go to the documentation of this file.
1 // Copyright (C) 2009, 2011 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 3 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 this program. If not, see <http://www.gnu.org/licenses/>.
18 
19 #ifndef SPOT_TGBA_TGBAUNION_HH
20 # define SPOT_TGBA_TGBAUNION_HH
21 
22 #include "tgba.hh"
23 
24 namespace spot
25 {
35  class state_union : public state
36  {
37  public:
44  : left_(left),
45  right_(right)
46  {
47  }
48 
50  state_union(const state_union& o);
51 
52  virtual ~state_union();
53 
54  state*
55  left() const
56  {
57  return left_;
58  }
59 
60  state*
61  right() const
62  {
63  return right_;
64  }
65 
66  virtual int compare(const state* other) const;
67  virtual size_t hash() const;
68  virtual state_union* clone() const;
69 
70  private:
72  state* right_;
74  };
76 
79  {
80  public:
82  tgba_succ_iterator* right,
83  bdd left_missing,
84  bdd right_missing, bdd left_var, bdd right_var);
85 
86  virtual ~tgba_succ_iterator_union();
87 
88  // iteration
89  void first();
90  void next();
91  bool done() const;
92 
93  // inspection
94  state_union* current_state() const;
95  bdd current_condition() const;
97 
98  protected:
106  friend class tgba_union;
107  };
108 
110  class tgba_union: public tgba
111  {
112  public:
116  tgba_union(const tgba* left, const tgba* right);
117 
118  virtual ~tgba_union();
119 
120  virtual state* get_init_state() const;
121 
122  virtual tgba_succ_iterator_union*
123  succ_iter(const state* local_state,
124  const state* global_state = 0,
125  const tgba* global_automaton = 0) const;
126 
127  virtual bdd_dict* get_dict() const;
128 
129  virtual std::string format_state(const state* state) const;
130 
131  virtual state* project_state(const state* s, const tgba* t) const;
132 
133  virtual bdd all_acceptance_conditions() const;
134  virtual bdd neg_acceptance_conditions() const;
135 
136  protected:
137  virtual bdd compute_support_conditions(const state* state) const;
138  virtual bdd compute_support_variables(const state* state) const;
139 
140  private:
142  const tgba* left_;
143  const tgba* right_;
153  // Disallow copy.
154  tgba_union(const tgba_union&);
156  };
157 
158 
159 }
160 
161 #endif // SPOT_TGBA_TGBAUNION_HH

Please direct any question, comment, or bug report to the Spot mailing list at spot@lrde.epita.fr.
Generated on Mon Jul 29 2013 00:27:25 for spot by doxygen 1.8.4