00001 // iterator.hh: this file is part of the Vaucanson project. 00002 // 00003 // Vaucanson, a generic library for finite state machines. 00004 // 00005 // Copyright (C) 2008 The Vaucanson Group. 00006 // 00007 // This program is free software; you can redistribute it and/or 00008 // modify it under the terms of the GNU General Public License 00009 // as published by the Free Software Foundation; either version 2 00010 // of the License, or (at your option) any later version. 00011 // 00012 // The complete GNU General Public Licence Notice can be found as the 00013 // `COPYING' file in the root directory. 00014 // 00015 // The Vaucanson Group consists of people listed in the `AUTHORS' file. 00016 // 00017 #ifndef VAUCANSON_AUTOMATA_IMPLEMENTATION_BMIG_ITERATOR_HH 00018 # define VAUCANSON_AUTOMATA_IMPLEMENTATION_BMIG_ITERATOR_HH 00019 00020 # include <map> 00021 00022 namespace vcsn 00023 { 00024 namespace bmig 00025 { 00034 template <typename Graph, typename Handler, typename I> 00035 class DeltaConstIterator 00036 { 00037 public: 00039 typedef Graph graph_type; 00041 typedef Handler data_type; 00043 typedef I iterator_type; 00045 typedef std::pair<I, I> range_type; 00046 typedef DeltaConstIterator<Graph, Handler, I> self_t; 00047 00053 DeltaConstIterator(const graph_type& g, typename graph_type::hstate_t s); 00054 ~DeltaConstIterator(); 00055 00059 void next(); 00064 bool done() const; 00065 00069 data_type operator*() const; 00070 00071 private: 00072 const graph_type& graph_; 00073 iterator_type i_; 00074 iterator_type end_; 00075 00076 }; // End of class DeltaConstIterator 00077 00078 } // End of namespace bmig 00079 00080 } // End of namespace vcsn 00081 00082 # if !defined VCSN_USE_INTERFACE_ONLY 00083 # include <vaucanson/automata/implementation/bmig/iterator.hxx> 00084 # endif // ! VCSN_USE_INTERFACE_ONLY 00085 00086 #endif // ! VAUCANSON_AUTOMATA_IMPLEMENTATION_BMIG_ITERATOR_HH