00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VAUCANSON_AUTOMATA_IMPLEMENTATION_LISTG_ITERATOR_HH
00018 # define VAUCANSON_AUTOMATA_IMPLEMENTATION_LISTG_ITERATOR_HH
00019
00020 # include <set>
00021
00022 namespace vcsn
00023 {
00024 namespace listg
00025 {
00026 class backward_iterator { };
00027 class forward_iterator { };
00028
00037 template <typename Graph, typename Handler, typename Direction>
00038 class DeltaConstIterator
00039 {
00040 public:
00042 typedef Graph graph_type;
00044 typedef Handler data_type;
00046 typedef std::set<typename graph_type::htransition_t> container_type;
00048 typedef typename container_type::iterator iterator_type;
00050 typedef Direction direction;
00051 typedef DeltaConstIterator<Graph, Handler, Direction> self_t;
00052
00058 DeltaConstIterator(const graph_type& g, typename graph_type::hstate_t s);
00059 ~DeltaConstIterator();
00060
00064 void next();
00069 bool done() const;
00070
00074 data_type operator*() const;
00075
00076 private:
00077 const graph_type& graph_;
00078 typename graph_type::hstate_t s_;
00079 iterator_type i_;
00080 iterator_type end_;
00081
00082
00083
00084
00085
00086
00087 void initialize(const backward_iterator&);
00088 void initialize(const forward_iterator&);
00089
00090 };
00091
00092 }
00093
00094 }
00095
00096 # if !defined VCSN_USE_INTERFACE_ONLY
00097 # include <vaucanson/automata/implementation/listg/iterator.hxx>
00098 # endif // ! VCSN_USE_INTERFACE_ONLY
00099
00100 #endif // ! VAUCANSON_AUTOMATA_IMPLEMENTATION_LISTG_ITERATOR_HH