00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VAUCANSON_AUTOMATA_IMPLEMENTATION_BMIG_ITERATOR_HXX
00018 # define VAUCANSON_AUTOMATA_IMPLEMENTATION_BMIG_ITERATOR_HXX
00019
00020 # include <vaucanson/automata/implementation/bmig_graph_impl.hh>
00021 # include <vaucanson/automata/implementation/bmig/iterator.hh>
00022
00023 namespace vcsn
00024 {
00025 namespace bmig
00026 {
00027
00028
00029 # define BMIG_ITERATOR_TPARAM template <typename Graph, typename I>
00030 # define BMIG_ITERATOR DeltaConstIterator<Graph, I>
00031
00032 BMIG_ITERATOR_TPARAM
00033 BMIG_ITERATOR::DeltaConstIterator(const graph_type& g,
00034 typename graph_type::hstate_t s)
00035 : graph_(g)
00036 {
00037 range_type tmp = graph_.deltai(s, iterator_type());
00038 i_ = tmp.first;
00039 end_ = tmp.second;
00040 }
00041
00042 BMIG_ITERATOR_TPARAM
00043 BMIG_ITERATOR::~DeltaConstIterator()
00044 { }
00045
00046 BMIG_ITERATOR_TPARAM
00047 void
00048 BMIG_ITERATOR::next()
00049 {
00050 ++i_;
00051 }
00052
00053 BMIG_ITERATOR_TPARAM
00054 bool
00055 BMIG_ITERATOR::done() const
00056 {
00057 return i_ == end_;
00058 }
00059
00060 BMIG_ITERATOR_TPARAM
00061 typename BMIG_ITERATOR::graph_type::htransition_t
00062 BMIG_ITERATOR::operator*() const
00063 {
00064 return graph_.get_htransition(i_);
00065 }
00066
00067 # undef BMIG_ITERATOR_TPARAM
00068 # undef BMIG_ITERATOR
00069
00070 }
00071
00072 }
00073
00074 #endif // ! VAUCANSON_AUTOMATA_IMPLEMENTATION_BMIG_ITERATOR_HXX