Dummy commit to test new ssh key
[eleutheria.git] / fsm / fsm.h
blob31fe0abc260911d7ef2e061f2e7040c094ee6878
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_remove_unreachable_state(fsm_t *pfsm, const state_t *pstate);
24 void fsm_minimize(fsm_t *pfsm);
25 #endif /* FSM_H */