Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members

tgba/state.hh

Go to the documentation of this file.
00001 // Copyright (C) 2003 Laboratoire d'Informatique de Paris 6 (LIP6), 00002 // département Systèmes Répartis Coopératifs (SRC), Université Pierre 00003 // et Marie Curie. 00004 // 00005 // This file is part of Spot, a model checking library. 00006 // 00007 // Spot is free software; you can redistribute it and/or modify it 00008 // under the terms of the GNU General Public License as published by 00009 // the Free Software Foundation; either version 2 of the License, or 00010 // (at your option) any later version. 00011 // 00012 // Spot is distributed in the hope that it will be useful, but WITHOUT 00013 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 00014 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 00015 // License for more details. 00016 // 00017 // You should have received a copy of the GNU General Public License 00018 // along with Spot; see the file COPYING. If not, write to the Free 00019 // Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 00020 // 02111-1307, USA. 00021 00022 #ifndef SPOT_TGBA_STATE_HH 00023 # define SPOT_TGBA_STATE_HH 00024 00025 #include <cstddef> 00026 #include <bdd.h> 00027 #include <cassert> 00028 #include <functional> 00029 00030 namespace spot 00031 { 00032 00034 class state 00035 { 00036 public: 00047 virtual int compare(const state* other) const = 0; 00048 00068 virtual size_t hash() const = 0; 00069 00071 virtual state* clone() const = 0; 00072 00073 virtual ~state() 00074 { 00075 } 00076 }; 00077 00089 struct state_ptr_less_than : 00090 public std::binary_function<const state*, const state*, bool> 00091 { 00092 bool 00093 operator()(const state* left, const state* right) const 00094 { 00095 assert(left); 00096 return left->compare(right) < 0; 00097 } 00098 }; 00099 00112 struct state_ptr_equal : 00113 public std::binary_function<const state*, const state*, bool> 00114 { 00115 bool 00116 operator()(const state* left, const state* right) const 00117 { 00118 assert(left); 00119 return 0 == left->compare(right); 00120 } 00121 }; 00122 00135 struct state_ptr_hash : 00136 public std::unary_function<const state*, size_t> 00137 { 00138 size_t 00139 operator()(const state* that) const 00140 { 00141 assert(that); 00142 return that->hash(); 00143 } 00144 }; 00145 00146 } 00147 00148 #endif // SPOT_TGBA_STATE_HH

Generated on Tue Jun 29 17:00:35 2004 for spot by doxygen 1.3.7