61 JUNO_SM_OPTION_STATE_T tOptionNextState;
91 if(ptSmState->tOptionNextState.bIsSome)
103 ptStateRoot->_pfcnFailureHandler = pfcnFailureHandler;
104 ptStateRoot->_pvFailureUserData = pvFailureUserData;
105 ptStateRoot->ptApi = ptStateApi;
108 ptStateRoot->tOptionNextState.bIsSome =
true;
113 ptStateRoot->tOptionNextState.bIsSome =
false;
114 ptStateRoot->tOptionNextState.tSome = NULL;
124 ptSmRoot->_pfcnFailureHandler = pfcnFailureHandler;
125 ptSmRoot->_pvFailureUserData = pvFailureUserData;
138 tResult.tOk = ptSmRoot->ptCurrentState;
152 if(ptCurrentStateRoot->tOptionNextState.bIsSome)
154 ptSmRoot->ptCurrentState = ptCurrentStateRoot->tOptionNextState.tSome;
155 tResult.tOk.bIsSome =
true;
156 tResult.tOk.tSome = ptSmRoot->ptCurrentState;
160 tResult.tOk.bIsSome =
false;
161 tResult.tOk.tSome = NULL;
#define JUNO_ASSERT_EXISTS(ptr)
Returns JUNO_STATUS_NULLPTR_ERROR if the expression is falsy.
Definition macros.h:50
#define JUNO_ASSERT_SUCCESS(tStatus,...)
Execute the provided failure operation(s) if status is not success.
Definition macros.h:87
#define JUNO_ERR_RESULT(err, value)
Construct a result indicating error with a payload (may be default-initialized).
Definition module.h:225
#define JUNO_NONE_OPTION(default_value)
Construct an option in the empty state, carrying a default payload.
Definition module.h:270
#define JUNO_MODULE_RESULT(NAME_T, OK_T)
Define a result type combining a status and a success payload.
Definition module.h:193
#define JUNO_MODULE_ROOT(API_T,...)
Implement a module root struct containing ptApi and failure fields.
Definition module.h:126
#define JUNO_MODULE_OPTION(NAME_T, SOME_T)
Define an option type combining a presence flag and a payload.
Definition module.h:236
#define JUNO_STATUS_ERR
Unspecified error.
Definition status.h:58
#define JUNO_STATUS_SUCCESS
Operation completed successfully.
Definition status.h:56
void(* JUNO_FAILURE_HANDLER_T)(JUNO_STATUS_T tStatus, const char *pcCustomMessage, JUNO_USER_DATA_T *pvUserData)
Failure handler callback signature.
Definition status.h:104
int32_t JUNO_STATUS_T
Canonical status type for LibJuno functions.
Definition status.h:49
void JUNO_USER_DATA_T
Opaque user data type for failure callbacks.
Definition status.h:96
Common assertion and helper macros for LibJuno modules.
Module system and dependency injection primitives for LibJuno.
static JUNO_STATUS_T JunoSm_StateVerify(JUNO_SM_STATE_ROOT_T *ptSmState)
Definition sm_api.h:87
static JUNO_STATUS_T JunoSm_Init(JUNO_SM_ROOT_T *ptSmRoot, JUNO_SM_STATE_ROOT_T *ptStartState, JUNO_FAILURE_HANDLER_T pfcnFailureHandler, JUNO_USER_DATA_T *pvFailureUserData)
Initialize the state machine with a start state.
Definition sm_api.h:120
struct JUNO_SM_STATE_ROOT_TAG JUNO_SM_STATE_ROOT_T
Definition sm_api.h:48
static JUNO_STATUS_T JunoSm_StateInit(JUNO_SM_ROOT_T *ptSm, JUNO_SM_STATE_ROOT_T *ptStateRoot, JUNO_SM_STATE_ROOT_T *ptNextState, const JUNO_SM_STATE_API_T *ptStateApi, JUNO_FAILURE_HANDLER_T pfcnFailureHandler, JUNO_USER_DATA_T *pvFailureUserData)
Initialize a state, linking it to the SM and optional next state.
Definition sm_api.h:99
static JUNO_SM_RESULT_OPTION_STATE_T JunoSm_TransitionState(JUNO_SM_ROOT_T *ptSmRoot)
Transition to the next state if present; return the new state option.
Definition sm_api.h:143
static JUNO_STATUS_T JunoSm_Verify(JUNO_SM_ROOT_T *ptSmRoot)
Verify if this is a valid state machine.
Definition sm_api.h:80
static JUNO_SM_RESULT_STATE_T JunoSm_GetCurrentState(JUNO_SM_ROOT_T *ptSmRoot)
Get the current state pointer.
Definition sm_api.h:132
struct JUNO_SM_ROOT_TAG JUNO_SM_ROOT_T
Definition sm_api.h:45
Status codes and failure-handling helpers for LibJuno.
JUNO_STATUS_T(* StateAction)(JUNO_SM_STATE_ROOT_T *ptJunoSm)
Action executed while in this state.
Definition sm_api.h:67
JUNO_STATUS_T(* ResetState)(JUNO_SM_STATE_ROOT_T *ptJunoSm)
Reset any state-local data.
Definition sm_api.h:71
JUNO_RESULT_BOOL_T(* ShouldExit)(JUNO_SM_STATE_ROOT_T *ptJunoSm)
Return whether the current state should exit.
Definition sm_api.h:69
Common module result type aliases used throughout LibJuno.