test
[eleutheria.git] / fsm / fsm.h
blob6f6333659decc9d75a0f89722452f68f32745e11
1 #ifndef FSM_H
2 #define FSM_H
4 #include "types.h"
5 #include <stdio.h> /* for FILE type */
7 /* Function prototypes */
8 fsmret_t fsm_init(fsm_t **ppfsm, size_t size, unsigned int factor,
9 unsigned int nqueues);
10 fsmret_t fsm_add_state(fsm_t *pfsm, unsigned int key, state_t *pstate);
11 fsmret_t fsm_free(fsm_t *pfsm);
12 fsmret_t fsm_set_state(fsm_t *pfsm, unsigned int stkey);
13 unsigned int fsm_get_current_state(const fsm_t *pfsm);
14 fsmret_t fsm_queue_event(fsm_t *pfsm, unsigned int evtkey,
15 void *pdata, size_t size, unsigned int prio);
16 fsmret_t fsm_dequeue_event(fsm_t *pfsm);
17 size_t fsm_get_queued_events(const fsm_t *pfsm);
18 fsmret_t fsm_process_event(fsm_t *pfsm, unsigned int evtkey, void *pdata);
19 fsmret_t fsm_validate(const fsm_t *pfsm);
20 void fsm_export_to_dot(const fsm_t *pfsm, FILE *fp);
21 void fsm_print_states(const fsm_t *pfsm, FILE *fp);
22 void fsm_mark_reachable_states(fsm_t *pfsm);
23 void fsm_minimize(fsm_t *pfsm);
24 #endif /* FSM_H */