/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright ( C ) 2019 - 2022 Red Hat , Inc . Daniel Bristot de Oliveira < bristot @ kernel . org >
*
* Deterministic automata helper functions , to be used with the automata
* models in C generated by the dot2k tool .
*/
/*
* DECLARE_AUTOMATA_HELPERS - define a set of helper functions for automata
*
* Define a set of helper functions for automata . The ' name ' argument is used
* as suffix for the functions and data . These functions will handle automaton
* with data type ' type ' .
*/
#define DECLARE_AUTOMATA_HELPERS(name, type) \
\
/* \
* model_get_state_name_ # # name - return the ( string ) name of the given state \
*/ \
static char *model_get_state_name_## name(enum states_## name state) \
{ \
if ((state < 0 ) || (state >= state_max_## name)) \
return "INVALID" ; \
\
return automaton_## name.state_names[state]; \
} \
\
/* \
* model_get_event_name_ # # name - return the ( string ) name of the given event \
*/ \
static char *model_get_event_name_## name(enum events_## name event) \
{ \
if ((event < 0 ) || (event >= event_max_## name)) \
return "INVALID" ; \
\
return automaton_## name.event_names[event]; \
} \
\
/* \
* model_get_initial_state_ # # name - return the automaton ' s initial state \
*/ \
static inline type model_get_initial_state_## name(void ) \
{ \
return automaton_## name.initial_state; \
} \
\
/* \
* model_get_next_state_ # # name - process an automaton event occurrence \
* \
* Given the current state ( curr_state ) and the event ( event ) , returns \
* the next state , or INVALID_STATE in case of error . \
*/ \
static inline type model_get_next_state_## name(enum states_## name curr_state, \
enum events_## name event) \
{ \
if ((curr_state < 0 ) || (curr_state >= state_max_## name)) \
return INVALID_STATE; \
\
if ((event < 0 ) || (event >= event_max_## name)) \
return INVALID_STATE; \
\
return automaton_## name.function[curr_state][event]; \
} \
\
/* \
* model_is_final_state_ # # name - check if the given state is a final state \
*/ \
static inline bool model_is_final_state_## name(enum states_## name state) \
{ \
if ((state < 0 ) || (state >= state_max_## name)) \
return 0 ; \
\
return automaton_## name.final_states[state]; \
}
Messung V0.5 in Prozent C=91 H=100 G=95
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet am 2026-09-28)
¤
*© Formatika GbR, Deutschland