Separate netbsd-specific from unix-specific projects
[eleutheria.git] / unix / misc / fsm / fsm.h
blobd17027dce4445123bbc52f19b47bceef2018b35f
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 **state, size_t size, unsigned int factor, unsigned int nqueues);
9 fsmret_t fsm_add_state(fsm_t *fsm, unsigned int key, state_t *state);
10 fsmret_t fsm_free(fsm_t *fsm);
11 void fsm_print_states(const fsm_t *fsm);
12 fsmret_t fsm_set_state(fsm_t *fsm, unsigned int stkey);
13 unsigned int fsm_get_current_state(const fsm_t *fsm);
14 fsmret_t fsm_queue_event(fsm_t *fsm, unsigned int evtkey, void *data, size_t size, unsigned int prio);
15 fsmret_t fsm_dequeue_event(fsm_t *fsm);
16 size_t fsm_get_queued_events(const fsm_t *fsm);
17 fsmret_t fsm_process_event(fsm_t *fsm, unsigned int evtkey, void *data);
18 fsmret_t fsm_validate(const fsm_t *fsm);
19 void fsm_export_to_dot(const fsm_t *fsm, FILE *fp);
21 #endif /* FSM_H */