17 #ifndef VCSN_AUTOMATA_CONCEPT_HISTORY_HH
18 # define VCSN_AUTOMATA_CONCEPT_HISTORY_HH
24 # include <vaucanson/automata/concept/handlers.hh>
31 typedef std::string event_kind_t;
37 Event(event_kind_t e);
41 get_event_kind()
const;
49 class BinaryEvent :
public Event<T>
52 BinaryEvent(event_kind_t e,
const T& first,
const T& second);
65 class UnaryEvent :
public Event<T>
68 UnaryEvent(event_kind_t e,
const T& first);
79 operator<<(std::ostream& out, const Event<T>& e);
81 template <
class AutoType_>
82 class AutomatonHistory
85 typedef typename AutoType_::hstate_t hstate_t;
86 typedef typename AutoType_::htransition_t htransition_t;
87 typedef std::list<Event<AutoType_> > auto_events_t;
88 typedef std::list<Event<hstate_t> > state_events_t;
89 typedef std::list<Event<htransition_t> > transition_events_t;
90 typedef std::map<hstate_t, state_events_t> states_events_t;
91 typedef std::map<htransition_t, transition_events_t> transitions_events_t;
94 set_state_event_about(event_kind_t, hstate_t);
96 set_state_event_about(event_kind_t, hstate_t, hstate_t);
98 set_state_event_about(event_kind_t, hstate_t, hstate_t, hstate_t);
100 get_state_event_about(event_kind_t, hstate_t)
const;
103 set_transition_event_about(event_kind_t, htransition_t);
105 set_transition_event_about(event_kind_t, htransition_t, htransition_t);
107 set_transition_event_about(event_kind_t, htransition_t, htransition_t,
109 const Event<htransition_t>
110 get_transition_event_about(event_kind_t, htransition_t)
const;
113 set_auto_event_about(event_kind_t);
115 set_auto_event_about(event_kind_t, AutoType_);
117 set_auto_event_about(event_kind_t, AutoType_, AutoType_);
118 const Event<AutoType_>
119 get_auto_event_about(event_kind_t)
const;
122 states_events_t states_events_;
123 transitions_events_t transitions_events_;
124 auto_events_t auto_events_;
132 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
133 # include <vaucanson/automata/concept/history.hxx>
134 #endif // VCSN_USE_INTERFACE_ONLY
137 #endif // ! VCSN_AUTOMATA_CONCEPT_HISTORY_HH