Very Simple Kernel 0.1.0
Loading...
Searching...
No Matches
vsk_State.h
Go to the documentation of this file.
1/**
2 * @file
3 */
4#ifndef VSK_STATE_H
5#define VSK_STATE_H
6/**
7 * @ingroup vsk
8 * @defgroup vsk_State vsk_State
9 * @{
10 */
11
12/**
13 * @brief State
14 */
15typedef struct vsk_State vsk_State_t;
16
17#include "vsk_StateContext.h"
18#include <stdbool.h>
19
20/**
21 * @brief On enter callback
22 */
23typedef void (*vsk_State_OnEnter_t)(vsk_State_t * const self);
24
25/**
26 * @brief On exit callback
27 */
28typedef void (*vsk_State_OnExit_t)(vsk_State_t * const self);
29
30/**
31 * @brief State
32 */
33struct vsk_State {
34 vsk_StateContext_t * stateContext; /**< State context */
35 vsk_State_OnEnter_t onEnter; /**< On enter callback */
36 vsk_State_OnExit_t onExit; /**< On exit callback */
37};
38
39/**
40 * @brief Initializes a state
41 *
42 * @param self State reference
43 * @param stateContext Corresponding state context
44 * @return Initialized state reference
45 */
47 vsk_State_t * const self, vsk_StateContext_t * const stateContext
48);
49
50/**
51 * @brief Executes entry logic
52 *
53 * @param self State reference
54 */
55void vsk_State_onEnter(vsk_State_t * const self);
56
57/**
58 * @brief Executes exit logic
59 *
60 * @param self State reference
61 */
62void vsk_State_onExit(vsk_State_t * const self);
63
64/** @} */
65#endif // VSK_STATE_H
void vsk_State_onExit(vsk_State_t *const self)
Executes exit logic.
Definition vsk_State.c:28
void vsk_State_onEnter(vsk_State_t *const self)
Executes entry logic.
Definition vsk_State.c:20
vsk_State_t * vsk_State_init(vsk_State_t *const self, vsk_StateContext_t *const stateContext)
Initializes a state.
Definition vsk_State.c:7
void(* vsk_State_OnExit_t)(vsk_State_t *const self)
On exit callback.
Definition vsk_State.h:28
void(* vsk_State_OnEnter_t)(vsk_State_t *const self)
On enter callback.
Definition vsk_State.h:23
State context.
Definition vsk_StateContext.h:22
State.
Definition vsk_State.h:33
vsk_StateContext_t * stateContext
Definition vsk_State.h:34
vsk_State_OnExit_t onExit
Definition vsk_State.h:36
vsk_State_OnEnter_t onEnter
Definition vsk_State.h:35