Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/include/rv/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  automata.h   Sprache: C

 
/* 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
C=95 H=87 G=90

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.