gem-graph-client/doc/rtfm/man3/fsm.h.3

1124 lines
23 KiB
Groff

.TH "include/fsm.h" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
.ad l
.nh
.SH NAME
include/fsm.h \- FSM (Finite State Machine) header\&.
.SH SYNOPSIS
.br
.PP
\fC#include <stdbool\&.h>\fP
.br
\fC#include <stddef\&.h>\fP
.br
\fC#include <string\&.h>\fP
.br
\fC#include <gtk\-4\&.0/gtk/gtk\&.h>\fP
.br
.SS "Classes"
.in +1c
.ti -1c
.RI "struct \fBfsm_log_struct_unit\fP"
.br
.RI "structure of a log element "
.ti -1c
.RI "struct \fBfsm_log_struct\fP"
.br
.RI "required to initialise a double-chained list "
.ti -1c
.RI "struct \fBfsm_struct_list_tool\fP"
.br
.RI "phantom documentation "
.ti -1c
.RI "struct \fBfsm_struct_list_data\fP"
.br
.RI "phantom documentation "
.ti -1c
.RI "struct \fBfsm_struct_list_disp\fP"
.br
.RI "phantom documentation "
.in -1c
.SS "Macros"
.in +1c
.ti -1c
.RI "#define \fBLOG_MAX_LENGTH\fP 255"
.br
.RI "arbitrary "
.ti -1c
.RI "#define \fBn_rules\fP 128"
.br
.RI "arbitrary "
.ti -1c
.RI "#define \fBn_objects\fP 32"
.br
.RI "arbitrary too, "
.ti -1c
.RI "#define \fBn_situations\fP 128"
.br
.RI "and so on\&.\&.\&. "
.in -1c
.SS "Typedefs"
.in +1c
.ti -1c
.RI "typedef struct \fBfsm_log_struct_unit\fP \fBfsm_log_struct_unit\fP"
.br
.RI "structure of a log element "
.ti -1c
.RI "typedef struct \fBfsm_struct_list_tool\fP \fBfsm_struct_list_tool\fP"
.br
.RI "phantom documentation "
.ti -1c
.RI "typedef struct \fBfsm_struct_list_data\fP \fBfsm_struct_list_data\fP"
.br
.RI "phantom documentation "
.ti -1c
.RI "typedef struct \fBfsm_struct_list_disp\fP \fBfsm_struct_list_disp\fP"
.br
.RI "phantom documentation "
.in -1c
.SS "Enumerations"
.in +1c
.ti -1c
.RI "enum \fBfsm_enum_log_severity\fP { \fBFATAL\fP, \fBERROR\fP, \fBWARN\fP, \fBINFO\fP, \fBDEBUG\fP, \fBTRACE\fP }"
.br
.RI "Conforms to canonical log levels: FATAL, ERROR, WARN, INFO, DEBUG, TRACE\&. "
.ti -1c
.RI "enum \fBfsm_enum_log_source\fP { \fBSOURCE\fP, \fBTARGET\fP, \fBLOG\fP, \fBFSM\fP, \fBPREFER\fP, \fBMAIN\fP, \fBAPP\fP, \fBWIDGETS\fP, \fBSIGNAL\fP, \fBWINDOW\fP, \fBDIALOG_WINDOW\fP, \fBMODAL_WINDOW\fP, \fBTEXT_WINDOW\fP, \fBAUTO_NOTIFICATION\fP, \fBTOPBAR\fP, \fBTOPBAR_LEFT\fP, \fBTOPBAR_CENTER\fP, \fBTOPBAR_RIGHT\fP, \fBPAGE\fP, \fBSYNTH_PAGE\fP, \fBSTATE_PAGE\fP, \fBRULES_PAGE\fP, \fBMEASURES_PAGE\fP, \fBRESULTS_PAGE\fP, \fBSYNTH_GLAREA\fP, \fBSYNTH_ALL_RESULTS\fP, \fBSYNTH_TIME_DEP_RESULTS\fP, \fBSYNTH_TIME_INDEP_RESULTS\fP, \fBSTATE_TOP\fP, \fBSTATE_BOTTOM\fP, \fBSTATE_GLAREA\fP, \fBSTATE_CAMERA\fP, \fBRULE_GEOMETRY\fP, \fBRULE_GLAREA\fP, \fBRULE_CAMERA\fP, \fBRULE_ALGEBRA\fP, \fBRULE_CONDITION\fP, \fBRULE_ASSIGN\fP, \fBRULE_ID\fP, \fBRULES_TREE\fP, \fBRULES_COMPARE\fP, \fBRULES_USE\fP, \fBMEASURES_TOOLS\fP, \fBMEASURES__ACTIVITY\fP, \fBMEASURES__DISPLAY\fP, \fBRESULTS\fP, \fBTIME_DEP_RESULTS\fP, \fBTIME_INDEP_RESULTS\fP, \fBWIDGET\fP, \fBBUTTON\fP, \fBSCROLL\fP, \fBGLAREA\fP, \fBTEXT\fP, \fBLABEL\fP, \fBTREE\fP, \fBSLIDER\fP, \fBEXPANDER\fP, \fBENTRY\fP, \fBON_SWITCH_STATE_RULES_DATA\fP, \fBSLIDER_X\fP, \fBSLIDER_Y\fP, \fBSLIDER_Z\fP, \fBSLIDER_A\fP, \fBSLIDER_B\fP, \fBSLIDER_C\fP }"
.br
.RI "arbitrary values that can help the logging filter work more efficiently "
.ti -1c
.RI "enum \fBfsm_enum_exec_edit\fP { \fBEXEC\fP, \fBEDIT\fP }"
.br
.RI "phantom documentation "
.ti -1c
.RI "enum \fBfsm_enum_state_rules_data\fP { \fBSYNTH\fP, \fBSTATE\fP, \fBRULES\fP, \fBDATA\fP }"
.br
.RI "phantom documentation "
.ti -1c
.RI "enum \fBfsm_enum_store_restore_reset\fP { \fBSTORE\fP, \fBRESTORE\fP, \fBRESET\fP }"
.br
.RI "phantom documentation "
.ti -1c
.RI "enum \fBfsm_enum_measure_type\fP { \fBDATE_RULE_EXEC\fP, \fBRULE_EXEC_NB\fP, \fBOBJECT_NB\fP, \fBELAPSED_TIME\fP }"
.br
.RI "phantom documentation "
.in -1c
.SS "Functions"
.in +1c
.ti -1c
.RI "void \fBfsm_publish_log\fP (\fBfsm_log_struct\fP jj)"
.br
.RI "publish all the logs today just print in the console TODO > in a file "
.ti -1c
.RI "void \fBfsm_init_log\fP (\fBfsm_log_struct\fP *jj)"
.br
.RI "init the journal "
.ti -1c
.RI "void \fBfsm_add_log_event\fP (\fBfsm_log_struct\fP *jj, const char *file_source, const char *function_source, const char *string_value)"
.br
.RI "add an event "
.ti -1c
.RI "void \fBfsm_clear_log\fP (\fBfsm_log_struct\fP *jj, const char *file_source, const char *function_source, const char *string_value)"
.br
.RI "usefulness ? (systematic ^c) "
.ti -1c
.RI "long \fBfsm_pop_back_log\fP (\fBfsm_log_struct\fP *jj, const char *file_source, const char *function_source, const char *string_value)"
.br
.RI "remove an event "
.ti -1c
.RI "int \fBfsm_length_log\fP (\fBfsm_log_struct\fP jj)"
.br
.RI "get journal_length "
.ti -1c
.RI "void \fBfsm_seek_log\fP (\fBfsm_log_struct\fP jj, long usec, const char *file_source, const char *function_source, const char *string_value)"
.br
.RI "seek for an event "
.ti -1c
.RI "void \fBfsm_log_publication_request\fP ()"
.br
.RI "This request is called only once, by \fBmain()\fP, just after closing the app and before ending the program\&. "
.ti -1c
.RI "void \fBfsm_add_log\fP (int severity, int source, const char *file_source, const char *function_source, const char *string_value)"
.br
.RI "It is mandatory for any event to call this function to be published in the journal\&. "
.ti -1c
.RI "void \fBfsm_init\fP (char *message)"
.br
.RI "fsm init is the first function called by \fBmain\&.c\fP It initiates the journal and the four lists: 'measures', 'results', 'displayables results' and 'preferences'\&. "
.ti -1c
.RI "void \fBfsm_list_init_preferences\fP ()"
.br
.ti -1c
.RI "void \fBfsm_list_init_measures\fP ()"
.br
.ti -1c
.RI "void \fBfsm_list_init_results\fP ()"
.br
.ti -1c
.RI "void \fBfsm_list_init_displayables\fP ()"
.br
.ti -1c
.RI "int \fBfsm_get_exec_edit\fP ()"
.br
.RI "some client pages (in particular 'state' and 'rules') will be displayed and behave differently depending on whether the fsm is in edit or run state\&. "
.ti -1c
.RI "int \fBfsm_get_state_rules_data\fP ()"
.br
.RI "The value of the static int choice_STATE_RULES_DATA can be one of the enum include/fsm enum fsm_enum_state_rules_data\&. "
.ti -1c
.RI "void \fBfsm_set_exec_edit\fP (int value)"
.br
.RI "setter for the static value: 'choice_STATE_RULES_DATA' (in this file) "
.ti -1c
.RI "void \fBfsm_set_state_rules_data\fP (int value)"
.br
.RI "setter for the static value: 'choice_STATE_RULES_DATA' (in this file) "
.ti -1c
.RI "void \fBfsm_set_store_restore_reset\fP (int choice, int value)"
.br
.ti -1c
.RI "bool \fBfsm_get_preferences_state\fP ()"
.br
.RI "getter for the static boolean: 'preferences_have_been_modified' "
.ti -1c
.RI "void \fBfsm_set_preferences_modified\fP (bool value)"
.br
.RI "setter for the static boolean: 'preferences_have_been_modified' "
.ti -1c
.RI "void \fBfsm_add_measure\fP (char *measure_name)"
.br
.ti -1c
.RI "void \fBfsm_add_result\fP (char *result_name)"
.br
.ti -1c
.RI "void \fBfsm_add_displayable\fP (char *displayable_name)"
.br
.ti -1c
.RI "void \fBfsm_reset_all_situations_values\fP (int value)"
.br
.ti -1c
.RI "void \fBfsm_tools_list_insert\fP (\fBfsm_struct_list_tool\fP **tl, int value)"
.br
.ti -1c
.RI "int \fBfsm_tools_list_pop\fP (\fBfsm_struct_list_tool\fP **tl)"
.br
.ti -1c
.RI "int \fBfsm_tools_list_length\fP (\fBfsm_struct_list_tool\fP *tl)"
.br
.ti -1c
.RI "void \fBfsm_tools_list_clear\fP (\fBfsm_struct_list_tool\fP **tl)"
.br
.ti -1c
.RI "void \fBfsm_tools_list_view\fP (\fBfsm_struct_list_tool\fP *tl)"
.br
.ti -1c
.RI "void \fBfsm_tools_list_test\fP ()"
.br
.ti -1c
.RI "void \fBfsm_rule_trig_measure\fP (int rule_id, int object_id, int measure_id)"
.br
.ti -1c
.RI "void \fBfsm_add_data\fP (\fBfsm_struct_list_data\fP d, int *p_data, int *p_target)"
.br
.RI "phantom documentation "
.ti -1c
.RI "int \fBfsm_get_data\fP (\fBfsm_struct_list_data\fP d, int from, int to)"
.br
.RI "phantom documentation "
.ti -1c
.RI "void \fBfsm_remove_data\fP (\fBfsm_struct_list_data\fP d, int *p_data)"
.br
.RI "phantom documentation "
.in -1c
.SH "Detailed Description"
.PP
FSM (Finite State Machine) header\&.
This file is part of Gem-graph\&.
.SH "Typedef Documentation"
.PP
.SS "typedef struct \fBfsm_log_struct_unit\fP \fBfsm_log_struct_unit\fP"
.PP
structure of a log element
.PP
\fBSee also\fP
.RS 4
\fBfsm_add_log()\fP
.PP
\fBfsm_add_log_event()\fP
.RE
.PP
.SH "Enumeration Type Documentation"
.PP
.SS "enum \fBfsm_enum_log_severity\fP"
.PP
Conforms to canonical log levels: FATAL, ERROR, WARN, INFO, DEBUG, TRACE\&.
.PP
.SS "J O U R N A L - M E T A - R U L E S"
ref: sudo cat /var/log/messages
.PP
log structure:
.IP "\(bu" 2
date
.IP "\(bu" 2
rank
.IP "\(bu" 2
file
.IP "\(bu" 2
function
.IP "\(bu" 2
value, parameter, description, context,\&.\&.\&. (any value that can qualify the event and provides useful information when reading the log)
.PP
.PP
.PP
.PP
Un seul \fBfsm_add_log()\fP par fonction ? sauf si cette fonction génère plusieurs autres fonctions d'intérêt ?
.PP
S'il y a deux \fBfsm_add_log()\fP (begin / end) dans une fonction, ils doivent avoir la même étiquette (les mêmes valeurs) : SEVERITY & SOURCE
.PP
https://betterstack.com/community/guides/logging/logging-best-practices/ https://en.wikipedia.org/wiki/Syslog
.PP
\fBSee also\fP
.RS 4
\fBfsm_add_log()\fP)
.RE
.PP
.PP
\fBEnumerator\fP
.in +1c
.TP
\fB\fIFATAL \fP\fP
(or CRITICAL) an unrecoverable failure that prevents the whole application from doing any further useful work
.TP
\fB\fIERROR \fP\fP
a condition that hinders the execution of a specific operation within an application and is unrecoverable
.TP
\fB\fIWARN \fP\fP
something unexpected has occurred, but the application can continue to function normally for the time being
.TP
\fB\fIINFO \fP\fP
(or MESSAGE) a significant event occurs while the system is operating normally
.TP
\fB\fIDEBUG \fP\fP
a description of system states in sufficient detail to give developers clues as to the cause of an error
.TP
\fB\fITRACE \fP\fP
provides a systematic overview of code execution but comes at a cost in terms of performance
.SS "enum \fBfsm_enum_log_source\fP"
.PP
arbitrary values that can help the logging filter work more efficiently
.PP
\fBSee also\fP
.RS 4
\fBfsm_add_log()\fP)
.RE
.PP
.PP
\fBEnumerator\fP
.in +1c
.TP
\fB\fISOURCE \fP\fP
must each element of this enumeration be commented (enhanced) ?
.TP
\fB\fITARGET \fP\fP
let's observe first how the enumeration structures and evolves on usage
.TP
\fB\fIWINDOW \fP\fP
MAIN_WINDOW || DIALOG_WINDOW || MODAL_WINDOW || TEXT_WINDOW
.br
.TP
\fB\fITOPBAR \fP\fP
LEFT || CENTER || RIGHT\&.
.TP
\fB\fIPAGE \fP\fP
SYNTH_PAGE || STATE_PAGE || RULES_PAGE || MEASURES_PAGE || RESULTS_PAGE
.br
RULES_PAGE == USER TREE versus SELECTED (vertical separation)
.SH "Function Documentation"
.PP
.SS "void fsm_add_data (\fBfsm_struct_list_data\fP d, int * p_data, int * p_target)"
.PP
phantom documentation
.PP
\fBParameters\fP
.RS 4
\fId\fP
.br
\fI*p_data\fP
.br
\fI*p_target\fP
.RE
.PP
.SS "void fsm_add_displayable (char * displayable_name)"
.PP
\fBDate\fP
.RS 4
.RE
.PP
\fBAuthor\fP
.RS 4
.RE
.PP
\fBSee also\fP
.RS 4
.PP
.RE
.PP
\fBParameters\fP
.RS 4
\fIdisplayable_name\fP
.RE
.PP
.SS "void fsm_add_log (int severity, int source, const char * file_source, const char * function_source, const char * string_value)"
.PP
It is mandatory for any event to call this function to be published in the journal\&. Before publication, a filter can be applied here (and only here) to select only some events of interest (during debugging, for example)
.PP
If there are too many events, a filter can be applied here to select a few interesting events for publication in the log\&.
.PP
This filter can operate on any the following five parameters: severity, source, *file_source, *function_source, *string_value\&.
.PP
\fBSee also\fP
.RS 4
below (params)
.RE
.PP
Simple filters (on a single parameter) can be combined using the logical operators 'and' and 'or' and parentheses\&.
.PP
Use: $ grep -r 'fsm_add_log' to confirm the callergraph calls\&.
.PP
\fBSince\fP
.RS 4
2024-08
.RE
.PP
\fBSee also\fP
.RS 4
src/journal\&.c/fsm_journal_push_front()
.PP
src/main/main()
.PP
src/widget/topbar/modal\&.c
.PP
src/widget/topbar/right\&.c
.PP
src/widget/topbar/dialog\&.c
.PP
src/widget/topbar/left\&.c
.PP
src/widget/topbar/dispatch\&.c * 3
.PP
src/widget/one_rule/dispatch\&.c
.PP
src/widget/one_rule/algebra/conditions\&.c * 2
.PP
src/widget/measure/dispatch\&.c
.PP
src/widget/dispatch\&.c * 3
.PP
src/widget/all_rules/dispatch\&.c
.PP
\fBsrc/fsm/preferences/manager\&.c\fP * 8
.PP
\fBsrc/fsm/measures/manager\&.c\fP * 2
.PP
\fBsrc/fsm/measures/tools_list\&.c\fP * 4
.PP
\fBsrc/fsm/dispatch\&.c\fP * 10
.PP
\fBsrc/fsm/results/manager\&.c\fP
.PP
\fBsrc/util/tree\&.c\fP
.PP
\fBsrc/signal\&.c\fP * 38
.RE
.PP
\fBParameters\fP
.RS 4
\fIseverity\fP <>
.RE
.PP
\fBSee also\fP
.RS 4
enum fsm_enum_journal_severity in \fBinclude/fsm\&.h\fP 'severity' is a pre-defined value that must be associated to each event\&. It ranges from zero to six : CRITICAL \fBERROR\fP WARNING \fBINFO\fP \fBINFO\fP \fBDEBUG\fP \fBTRACE\fP 0 1 2 3 4 5 6
.RE
.PP
\fBParameters\fP
.RS 4
\fIsource\fP <>
.RE
.PP
\fBSee also\fP
.RS 4
enum fsm_enum_journal_source in \fBinclude/fsm\&.h\fP 'source' is a pre-defined value that can be associated to each event\&. It is not mandatory\&. It can be set to 'NULL'\&.
.RE
.PP
\fBParameters\fP
.RS 4
\fI*file_source\fP <> the name of the file that emits the event\&.
.br
\fI*function_source\fP <> the function that emits the event\&.
.br
\fI*string_value\fP <> any value that can qualify the event and provides useful information when reading the log\&.
.RE
.PP
.SS "void fsm_add_log_event (\fBfsm_log_struct\fP * jj, const char * file_source, const char * function_source, const char * string_value)"
.PP
add an event
.PP
\fBSince\fP
.RS 4
2024-09
.RE
.PP
\fBParameters\fP
.RS 4
\fI*jj\fP
.br
\fI*file_source\fP
.br
\fI*function_source\fP
.br
\fI*string_value\fP
.RE
.PP
.SS "void fsm_add_measure (char * measure_name)"
.PP
\fBSince\fP
.RS 4
2024-09
.RE
.PP
\fBSee also\fP
.RS 4
src/widget/measure/dispatch/widget_measure_event_occurences_nb()
.PP
src/widget/measure/dispatch/widget_measure_event_occurences_dates()
.PP
src/widget/measure/dispatch/widget_measure_event_occurences_situations()
.PP
src/widget/measure/dispatch/widget_measure_time_elapsed_between_two_events()
.PP
src/widget/measure/dispatch/widget_measure_third_event_occurences_in_between()
.PP
src/fsm/dispatch/fsm_add_log()
.RE
.PP
\fBParameters\fP
.RS 4
\fI*measure_name\fP
.RE
.PP
.SS "void fsm_add_result (char * result_name)"
.PP
\fBSee also\fP
.RS 4
\fButil_concat()\fP
.PP
\fBfsm_init()\fP
.RE
.PP
.SS "void fsm_clear_log (\fBfsm_log_struct\fP * jj, const char * file_source, const char * function_source, const char * string_value)"
.PP
usefulness ? (systematic ^c)
.PP
\fBSince\fP
.RS 4
2024-09
.RE
.PP
\fBParameters\fP
.RS 4
\fI*jj\fP
.br
\fI*file_source\fP
.br
\fI*function_source\fP
.br
\fI*string_value\fP
.RE
.PP
.SS "int fsm_get_data (\fBfsm_struct_list_data\fP d, int from, int to)"
.PP
phantom documentation
.PP
\fBParameters\fP
.RS 4
\fId\fP
.br
\fIfrom\fP
.br
\fIto\fP
.RE
.PP
.SS "int fsm_get_exec_edit ()"
.PP
some client pages (in particular 'state' and 'rules') will be displayed and behave differently depending on whether the fsm is in edit or run state\&. Any function which modifies the appearance or behavior of these pages must use this getter to access the choice_EXEC_EDIT value\&.
.PP
see include/fsm enum fsm_enum_exec_edit { EXEC, EDIT } The current int may be replaced by a boolean \&. TODO
.PP
\fBSince\fP
.RS 4
2024-06
.RE
.PP
\fBSee also\fP
.RS 4
src/widget/one_rule/dispatch
.PP
src/widget/state/dispatch * 2
.PP
src/signal
.PP
choice_EXEC_EDIT and
.PP
include/fsm/enum \fBfsm_enum_exec_edit\fP {}
.RE
.PP
\fBReturns\fP
.RS 4
choice_EXEC_EDIT
.RE
.PP
.SS "bool fsm_get_preferences_state ()"
.PP
getter for the static boolean: 'preferences_have_been_modified'
.PP
\fBSince\fP
.RS 4
2024-08
.RE
.PP
\fBSee also\fP
.RS 4
TODO A function must obtain this boolean when it stores the current state of the fsm (including \fBpreferences\fP) before closing the current session\&.
.RE
.PP
\fBReturns\fP
.RS 4
preferences_have_been_modified
.RE
.PP
.SS "int fsm_get_state_rules_data ()"
.PP
The value of the static int choice_STATE_RULES_DATA can be one of the enum include/fsm enum fsm_enum_state_rules_data\&. To each value is associated a different page and different possible behaviors\&. Any function that modifies the client window must get this value\&.
.PP
see include/fsm enum fsm_enum_state_rules_data { SYNTH, STATE, RULES, DATA }
.PP
\fBSince\fP
.RS 4
2024-06
.RE
.PP
\fBSee also\fP
.RS 4
src/widget/topbar/left
.PP
src/signal
.RE
.PP
\fBReturns\fP
.RS 4
choice_STATE_RULES_DATA
.RE
.PP
.SS "void fsm_init (char * initial_INFO_from_main)"
.PP
fsm init is the first function called by \fBmain\&.c\fP It initiates the journal and the four lists: 'measures', 'results', 'displayables results' and 'preferences'\&. The items selected in these lists define the current state of the fsm\&.
.PP
\fBSince\fP
.RS 4
2024-08
.RE
.PP
\fBSee also\fP
.RS 4
src/main/main()
.PP
src/journal/fsm_init_log()
.PP
src/fsm/dispatch/fsm_add_log()
.PP
src/fsm/measures/manager/fsm_list_init_measures()
.PP
src/fsm/results/manager/fsm_list_init_results()
.PP
src/fsm/preferences/manager/fsm_list_init_displayables()
.PP
src/fsm/preferences/manager/fsm_list_init_preferences()
.RE
.PP
\fBParameters\fP
.RS 4
\fI*initial_INFO_from_main\fP
.RE
.PP
.SS "void fsm_init_log (\fBfsm_log_struct\fP * jj)"
.PP
init the journal
.PP
\fBSince\fP
.RS 4
2024-09
.RE
.PP
\fBParameters\fP
.RS 4
\fI*jj\fP
.RE
.PP
.SS "int fsm_length_log (\fBfsm_log_struct\fP jj)"
.PP
get journal_length
.PP
\fBSince\fP
.RS 4
2024-09
.RE
.PP
\fBParameters\fP
.RS 4
\fI*jj\fP
.RE
.PP
\fBReturns\fP
.RS 4
journal length
.RE
.PP
.SS "void fsm_list_init_displayables ()"
.PP
\fBDate\fP
.RS 4
.RE
.PP
\fBAuthor\fP
.RS 4
.RE
.PP
\fBSee also\fP
.RS 4
.RE
.PP
.SS "void fsm_list_init_measures ()"
.PP
\fBSince\fP
.RS 4
2024-09
.RE
.PP
\fBSee also\fP
.RS 4
src/fsm/dispatch/fsm_init()
.RE
.PP
.SS "void fsm_list_init_preferences ()"
.PP
\fBDate\fP
.RS 4
.RE
.PP
\fBAuthor\fP
.RS 4
.RE
.PP
\fBSee also\fP
.RS 4
.PP
.RE
.PP
.SS "void fsm_list_init_results ()"
.PP
\fBSee also\fP
.RS 4
\fBfsm_init()\fP
.PP
\fBfsm_add_result()\fP
.PP
\fBfsm_add_log()\fP
.RE
.PP
.SS "void fsm_log_publication_request ()"
.PP
This request is called only once, by \fBmain()\fP, just after closing the app and before ending the program\&. This is to guarantee the chronological order of the events\&.
.PP
The log is modified for each event but events can be send asynchronously\&. This is why the journal is only published once, before the end of 'main()', Its chronological order is therefore guaranteed\&.
.PP
src/journal\&.c/fsm_publish_log() (called here) is the last function of the program to be executed\&.
.PP
The fsm_struct_journal (gg_logs) is a static instance in this file\&. Therefore, all the functions that read or write it are in this file\&. This is to avoid uncontrolled operations on it\&.
.PP
\fBSince\fP
.RS 4
2024-08
.RE
.PP
\fBSee also\fP
.RS 4
\fBmain()\fP
.PP
\fBfsm_publish_log()\fP
.RE
.PP
.SS "long fsm_pop_back_log (\fBfsm_log_struct\fP * jj, const char * file_source, const char * function_source, const char * string_value)"
.PP
remove an event
.PP
\fBSince\fP
.RS 4
2024-09
.RE
.PP
\fBParameters\fP
.RS 4
\fI*jj\fP
.br
\fI*file_source\fP
.br
\fI*function_source\fP
.br
\fI*string_value\fP
.RE
.PP
.SS "void fsm_publish_log (\fBfsm_log_struct\fP jj)"
.PP
publish all the logs today just print in the console TODO > in a file
.PP
\fBSince\fP
.RS 4
2024-09
.RE
.PP
\fBParameters\fP
.RS 4
\fI*jj\fP
.RE
.PP
.SS "void fsm_remove_data (\fBfsm_struct_list_data\fP d, int * p_data)"
.PP
phantom documentation
.PP
\fBParameters\fP
.RS 4
\fId\fP
.br
\fI*p_data\fP
.RE
.PP
.SS "void fsm_reset_all_situations_values (int value)"
.PP
\fBDate\fP
.RS 4
.RE
.PP
\fBAuthor\fP
.RS 4
.RE
.PP
\fBSee also\fP
.RS 4
.PP
.RE
.PP
\fBParameters\fP
.RS 4
\fIvalue\fP
.RE
.PP
.SS "void fsm_rule_trig_measure (int rule_id, int object_id, int measure_id)"
.PP
\fBSince\fP
.RS 4
2024-09
.RE
.PP
\fBParameters\fP
.RS 4
\fIrule_id\fP
.br
\fIobject_id\fP
.br
\fImeasure_id\fP
.RE
.PP
.SS "void fsm_seek_log (\fBfsm_log_struct\fP jj, long usec, const char * file_source, const char * function_source, const char * string_value)"
.PP
seek for an event
.PP
\fBSince\fP
.RS 4
2024-09
.RE
.PP
\fBParameters\fP
.RS 4
\fI*jj\fP
.br
\fIusec\fP
.br
\fI*file_source\fP
.br
\fI*function_source\fP
.br
\fI*string_value\fP
.RE
.PP
.SS "void fsm_set_exec_edit (int choice)"
.PP
setter for the static value: 'choice_STATE_RULES_DATA' (in this file) see include/fsm enum fsm_enum_exec_edit { EXEC, EDIT }
.PP
\fBSince\fP
.RS 4
2024-08
.RE
.PP
\fBSee also\fP
.RS 4
src/signal * 2
.RE
.PP
\fBParameters\fP
.RS 4
\fIchoice\fP < a boolean value which can be 'EXEC' or 'EDIT'
.RE
.PP
.SS "void fsm_set_preferences_modified (bool value)"
.PP
setter for the static boolean: 'preferences_have_been_modified'
.PP
\fBSince\fP
.RS 4
2024-08
.RE
.PP
\fBSee also\fP
.RS 4
TODO To be used by any function that modifies the current user \fBpreferences\fP
.PP
\fBfsm_add_log()\fP
.RE
.PP
\fBParameters\fP
.RS 4
\fIvalue\fP = TRUE if preferences_have_been_modified\&.
.RE
.PP
.SS "void fsm_set_state_rules_data (int choice)"
.PP
setter for the static value: 'choice_STATE_RULES_DATA' (in this file) see include/fsm enum fsm_enum_state_rules_data { SYNTH, STATE, RULES, DATA } Today (2024-10) the initial page is set to 'SYNTH'\&.
.PP
\fBSee also\fP
.RS 4
line 292 choice_STATE_RULES_DATA = SYNTH; NB This choice can be temporarily modified for debugging purpose:
.PP
end of the function: \fBfsm/dispatch\&.c\fP \fBwindow_design_topbar_left()\fP
.RE
.PP
\fBSince\fP
.RS 4
2024-08
.RE
.PP
\fBSee also\fP
.RS 4
src/signal * 4
.RE
.PP
\fBParameters\fP
.RS 4
\fIchoice\fP
.RE
.PP
.SS "void fsm_set_store_restore_reset (int choice, int value)"
.PP
\fBDate\fP
.RS 4
.RE
.PP
\fBAuthor\fP
.RS 4
.RE
.PP
\fBSee also\fP
.RS 4
.PP
.RE
.PP
\fBParameters\fP
.RS 4
\fIchoice\fP
.br
\fIvalue\fP
.RE
.PP
.SS "void fsm_tools_list_clear (\fBfsm_struct_list_tool\fP ** ml)"
.PP
\fBParameters\fP
.RS 4
\fI**ml\fP
.RE
.PP
\fBSee also\fP
.RS 4
\fBfsm_tools_list_test()\fP
.RE
.PP
.SS "void fsm_tools_list_insert (\fBfsm_struct_list_tool\fP ** ml, int value)"
.PP
\fBParameters\fP
.RS 4
\fI**ml\fP
.br
\fIvalue\fP
.RE
.PP
\fBSee also\fP
.RS 4
\fBfsm_tools_list_test()\fP
.RE
.PP
.SS "int fsm_tools_list_length (\fBfsm_struct_list_tool\fP * ml)"
.PP
\fBParameters\fP
.RS 4
\fI**ml\fP
.RE
.PP
\fBSee also\fP
.RS 4
\fBfsm_tools_list_test()\fP
.RE
.PP
.SS "int fsm_tools_list_pop (\fBfsm_struct_list_tool\fP ** ml)"
.PP
\fBParameters\fP
.RS 4
\fI**ml\fP
.RE
.PP
\fBSee also\fP
.RS 4
\fBfsm_tools_list_test()\fP
.RE
.PP
.SS "void fsm_tools_list_test ()"
.PP
\fBSee also\fP
.RS 4
\fBfsm_list_init_measures()\fP()
.PP
\fBfsm_add_log()\fP
.PP
\fBfsm_tools_list_insert()\fP
.PP
\fBfsm_tools_list_pop()\fP
.PP
\fBfsm_tools_list_view()\fP
.PP
\fBfsm_tools_list_clear()\fP
.RE
.PP
.SS "void fsm_tools_list_view (\fBfsm_struct_list_tool\fP * ml)"
.PP
\fBParameters\fP
.RS 4
\fI**ml\fP
.RE
.PP
\fBSee also\fP
.RS 4
\fBfsm_tools_list_test()\fP
.RE
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for Gem-graph from the source code\&.