63 (void)memset(machine->
states, 0,
sizeof(machine->
states));
85 infinite_state_machine_exit(
machine);
118 if ((
err = infinite_state_machine_push(
machine, state)) < 0)
137 struct infinite_state *state = infinite_state_machine_pop(machine);
150 if (state->
exit != NULL)
152 state->
exit(state, machine);
174 if (machine->
depth == 0)
struct infinite_state ** infinite_state_topology(struct infinite_state *state, int depth, struct infinite_state **topology)
Get the topology of the infinite state machine.
void infinite_state_machine_jump(struct infinite_state_machine *machine, struct infinite_state *state)
Jumps to a state in the infinite state machine.
void infinite_state_machine_init(struct infinite_state_machine *machine)
Initialises the infinite state machine. The machine is reset to its initial state....
int infinite_state_machine_in(struct infinite_state_machine *machine, struct infinite_state *state)
Checks if a state is currently active in the infinite state machine.
void infinite_state_machine_goto(struct infinite_state_machine *machine, struct infinite_state *state)
Goes to a state in the infinite state machine.
struct infinite_state * infinite_state_machine_top(const struct infinite_state_machine *machine)
Gets the top state of the infinite state machine.
Public API for the infinite state machine. Provides functions to initialise, perform hierarchical tra...
#define INFINITE_STATE_MACHINE_MAX_DEPTH
Maximum depth of any infinite state machine. Defaults to 7 unless already defined before the inclusio...
Represents an infinite state machine. This structure holds the current state hierarchy and allows for...
int depth
The current depth of the infinite state machine.
struct infinite_state * states[INFINITE_STATE_MACHINE_MAX_DEPTH]
The states in the infinite state machine.
The state structure for the infinite state. This structure represents a state in the infinite state m...
void(* exit)(struct infinite_state *state, struct infinite_state_machine *machine)
The exit action for this state.
void(* enter)(struct infinite_state *state, struct infinite_state_machine *machine)
The enter action for this state.