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
00036 template <typename Graph, typename Direction>
00037 class DeltaConstIterator
00038 {
00039 public:
00041 typedef Graph graph_type;
00043 typedef std::set<typename graph_type::htransition_t> container_type;
00045 typedef typename container_type::iterator iterator_type;
00047 typedef Direction direction;
00048 typedef DeltaConstIterator<Graph, Direction> self_t;
00049
00055 DeltaConstIterator(const graph_type& g, typename graph_type::hstate_t s);
00056 ~DeltaConstIterator();
00057
00061 void next();
00066 bool done() const;
00067
00071 typename graph_type::htransition_t operator*() const;
00072
00073 private:
00074 const graph_type& graph_;
00075 typename graph_type::hstate_t s_;
00076 iterator_type i_;
00077 iterator_type end_;
00078
00079
00080
00081
00082
00083
00084 void initialize(const backward_iterator&);
00085 void initialize(const forward_iterator&);
00086
00087 };
00088
00089 }
00090
00091 }
00092
00093 # if !defined VCSN_USE_INTERFACE_ONLY
00094 # include <vaucanson/automata/implementation/listg/iterator.hxx>
00095 # endif // ! VCSN_USE_INTERFACE_ONLY
00096
00097 #endif // ! VAUCANSON_AUTOMATA_IMPLEMENTATION_LISTG_ITERATOR_HH