17 #ifndef VCSN_AUTOMATA_IMPLEMENTATION_BMIG_BMIG_HANDLERS_HH
18 # define VCSN_AUTOMATA_IMPLEMENTATION_BMIG_BMIG_HANDLERS_HH
20 # include <vaucanson/automata/concept/handlers.hh>
21 # include <boost/multi_index_container.hpp>
22 # include <boost/multi_index/hashed_index.hpp>
23 # include <boost/shared_ptr.hpp>
29 class handler<state_h, boost::shared_ptr<std::size_t> >
33 typedef handler<state_h, boost::shared_ptr<std::size_t> > self_t;
37 explicit handler(boost::shared_ptr<std::size_t> h);
39 handler(
const self_t& h);
41 self_t& operator=(
const self_t& h);
43 boost::shared_ptr<std::size_t> value()
const;
45 operator unsigned()
const;
47 bool is_valid()
const;
50 boost::shared_ptr<std::size_t> v_;
53 using boost::multi_index::detail::hashed_index_iterator;
55 template<
typename T,
typename U>
56 bool operator==(
const handler<transition_h, hashed_index_iterator<T, U> >& h1,
57 const handler<transition_h, hashed_index_iterator<T, U> >& h2);
58 template<
typename T,
typename U>
59 bool operator!=(
const handler<transition_h, hashed_index_iterator<T, U> >& h1,
60 const handler<transition_h, hashed_index_iterator<T, U> >& h2);
61 template<
typename T,
typename U>
62 bool operator<(const handler<transition_h, hashed_index_iterator<T, U> >& h1,
63 const handler<transition_h, hashed_index_iterator<T, U> >& h2);
64 template<
typename T,
typename U>
65 bool operator>(
const handler<transition_h, hashed_index_iterator<T, U> >& h1,
66 const handler<transition_h, hashed_index_iterator<T, U> >& h2);
67 template<
typename T,
typename U>
68 bool operator<=(const handler<transition_h, hashed_index_iterator<T, U> >& h1,
69 const handler<transition_h, hashed_index_iterator<T, U> >& h2);
70 template<
typename T,
typename U>
71 bool operator>=(
const handler<transition_h, hashed_index_iterator<T, U> >& h1,
72 const handler<transition_h, hashed_index_iterator<T, U> >& h2);
75 bool operator==(
const handler<state_h, boost::shared_ptr<std::size_t> >& h1,
76 const handler<state_h, boost::shared_ptr<std::size_t> >& h2);
78 bool operator!=(
const handler<state_h, boost::shared_ptr<std::size_t> >& h1,
79 const handler<state_h, boost::shared_ptr<std::size_t> >& h2);
81 bool operator<(const handler<state_h, boost::shared_ptr<std::size_t> >& h1,
82 const handler<state_h, boost::shared_ptr<std::size_t> >& h2);
84 bool operator>(
const handler<state_h, boost::shared_ptr<std::size_t> >& h1,
85 const handler<state_h, boost::shared_ptr<std::size_t> >& h2);
87 bool operator<=(const handler<state_h, boost::shared_ptr<std::size_t> >& h1,
88 const handler<state_h, boost::shared_ptr<std::size_t> >& h2);
90 bool operator>=(
const handler<state_h, boost::shared_ptr<std::size_t> >& h1,
91 const handler<state_h, boost::shared_ptr<std::size_t> >& h2);
96 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
97 # include <vaucanson/automata/implementation/bmig/bmig_handlers.hxx>
98 # include <vaucanson/automata/implementation/bmig/bmig_handlers_op.hxx>
99 #endif // VCSN_USE_INTERFACE_ONLY