gem-graph-client/doc/docbook/dd/d01/fsm_8h.xml

1587 lines
66 KiB
XML

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_fsm_8h" xml:lang="en-US">
<title>include/fsm.h File Reference</title>
<indexterm><primary>include/fsm.h</primary></indexterm>
<para>
<para>FSM (Finite State Machine) header. </para>
</para>
<programlisting linenumbering="unnumbered">#include &lt;stdbool.h&gt;<?linebreak?>#include &lt;stddef.h&gt;<?linebreak?>#include &lt;string.h&gt;<?linebreak?>#include &lt;gtk-4.0/gtk/gtk.h&gt;<?linebreak?></programlisting><simplesect>
<title>Classes </title>
<itemizedlist>
<listitem><para>struct <link linkend="_structfsm__struct__journal__unit">fsm_struct_journal_unit</link></para>
<para>structure of a journal element </para>
</listitem>
<listitem><para>struct <link linkend="_structfsm__struct__journal">fsm_struct_journal</link></para>
<para>required to initialise a double-chained list </para>
</listitem>
<listitem><para>struct <link linkend="_structfsm__struct__list__tool">fsm_struct_list_tool</link></para>
<para>phantom documentation </para>
</listitem>
<listitem><para>struct <link linkend="_structfsm__struct__list__data">fsm_struct_list_data</link></para>
<para>phantom documentation </para>
</listitem>
<listitem><para>struct <link linkend="_structfsm__struct__list__disp">fsm_struct_list_disp</link></para>
<para>phantom documentation </para>
</listitem>
</itemizedlist>
</simplesect>
<simplesect>
<title>Macros </title>
<itemizedlist>
<listitem><para><anchor xml:id="_fsm_8h_1a47ac95b770c96c317621e1296488e576"/>#define <emphasis role="strong">JOURNAL_LOG_MAX_LENGTH</emphasis>&#160;&#160;&#160;255</para>
<para>arbitrary </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1a7af169265cd716e940b65232410d462e"/>#define <emphasis role="strong">n_rules</emphasis>&#160;&#160;&#160;128</para>
<para>arbitrary </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1a1c57f0fbc36487a6b6a61a688968bd5f"/>#define <emphasis role="strong">n_objects</emphasis>&#160;&#160;&#160;32</para>
<para>arbitrary too, </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1a6ac624784cce4cd90e2845b9a2d86412"/>#define <emphasis role="strong">n_situations</emphasis>&#160;&#160;&#160;128</para>
<para>and so on... </para>
</listitem>
</itemizedlist>
</simplesect>
<simplesect>
<title>Typedefs </title>
<itemizedlist>
<listitem><para>typedef struct <link linkend="_structfsm__struct__journal__unit">fsm_struct_journal_unit</link> <link linkend="_fsm_8h_1a6160d10d0af3ce294bde1326f8afba6d">fsm_struct_journal_unit</link></para>
<para>structure of a journal element </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1a78376e470b28fc9869a090d21f2bf9a0"/>typedef struct <link linkend="_structfsm__struct__list__tool">fsm_struct_list_tool</link> <emphasis role="strong">fsm_struct_list_tool</emphasis></para>
<para>phantom documentation </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1a1448aeec62ef3a2adf8f4d364c794ab0"/>typedef struct <link linkend="_structfsm__struct__list__data">fsm_struct_list_data</link> <emphasis role="strong">fsm_struct_list_data</emphasis></para>
<para>phantom documentation </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1ae905cedfa44ca2088de1b4cb5d3777db"/>typedef struct <link linkend="_structfsm__struct__list__disp">fsm_struct_list_disp</link> <emphasis role="strong">fsm_struct_list_disp</emphasis></para>
<para>phantom documentation </para>
</listitem>
</itemizedlist>
</simplesect>
<simplesect>
<title>Enumerations </title>
<itemizedlist>
<listitem><para>enum <link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7">fsm_enum_journal_severity</link> { <?linebreak?><link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a651d8a47a6976d6fe05c0e03fb4cd2d0">FATAL</link>
, <link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a2fd6f336d08340583bd620a7f5694c90">ERROR</link>
, <link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a74dac7ac23d5b810db6d4067f14e8676">WARN</link>
, <link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a748005382152808a72b1a9177d9dc806">INFO</link>
, <?linebreak?><link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a0593585da9181e972974c1274d8f2b4f">DEBUG</link>
, <link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a7fa27e82c6c4f69434225ed81e5d151e">TRACE</link>
}</para>
<para>Conforms to canonical log levels: FATAL, ERROR, WARN, INFO, DEBUG, TRACE. </para>
</listitem>
<listitem><para>enum <link linkend="_fsm_8h_1ae17fff59df266673b42b150568f1804c">fsm_enum_journal_source</link> { <?linebreak?><emphasis role="strong">SOURCE</emphasis>
, <emphasis role="strong">TARGET</emphasis>
, <emphasis role="strong">JOURNAL</emphasis>
, <emphasis role="strong">FSM</emphasis>
, <?linebreak?><emphasis role="strong">PREFER</emphasis>
, <emphasis role="strong">MAIN</emphasis>
, <emphasis role="strong">APP</emphasis>
, <emphasis role="strong">WIDGETS</emphasis>
, <?linebreak?><emphasis role="strong">SIGNAL</emphasis>
, <emphasis role="strong">MAIN_WINDOW</emphasis>
, <emphasis role="strong">DIALOG_WINDOW</emphasis>
, <emphasis role="strong">MODAL_WINDOW</emphasis>
, <?linebreak?><emphasis role="strong">TEXT_WINDOW</emphasis>
, <emphasis role="strong">AUTO_NOTIFICATION</emphasis>
, <emphasis role="strong">TOPBAR</emphasis>
, <emphasis role="strong">TOPBAR_LEFT</emphasis>
, <?linebreak?><emphasis role="strong">TOPBAR_RIGHT</emphasis>
, <emphasis role="strong">TOPBAR_CENTER</emphasis>
, <emphasis role="strong">SYNTH_PAGE</emphasis>
, <emphasis role="strong">STATE_PAGE</emphasis>
, <?linebreak?><emphasis role="strong">RULES_PAGE</emphasis>
, <emphasis role="strong">MEASURES_PAGE</emphasis>
, <emphasis role="strong">RESULTS_PAGE</emphasis>
, <emphasis role="strong">SYNTH_GLAREA</emphasis>
, <?linebreak?><emphasis role="strong">SYNTH_ALL_RESULTS</emphasis>
, <emphasis role="strong">SYNTH_TIME_DEP_RESULTS</emphasis>
, <emphasis role="strong">SYNTH_TIME_INDEP_RESULTS</emphasis>
, <emphasis role="strong">STATE_TOP</emphasis>
, <?linebreak?><emphasis role="strong">STATE_BOTTOM</emphasis>
, <emphasis role="strong">STATE_GLAREA</emphasis>
, <emphasis role="strong">STATE_CAMERA</emphasis>
, <emphasis role="strong">RULE_GEOMETRY</emphasis>
, <?linebreak?><emphasis role="strong">RULE_GLAREA</emphasis>
, <emphasis role="strong">RULE_CAMERA</emphasis>
, <emphasis role="strong">RULE_ALGEBRA</emphasis>
, <emphasis role="strong">RULE_CONDITION</emphasis>
, <?linebreak?><emphasis role="strong">RULE_ASSIGN</emphasis>
, <emphasis role="strong">RULE_ID</emphasis>
, <emphasis role="strong">RULES_TREE</emphasis>
, <emphasis role="strong">RULES_COMPARE</emphasis>
, <?linebreak?><emphasis role="strong">RULES_USE</emphasis>
, <emphasis role="strong">MEASURES_TOOLS</emphasis>
, <emphasis role="strong">MEASURES__ACTIVITY</emphasis>
, <emphasis role="strong">MEASURES__DISPLAY</emphasis>
, <?linebreak?><emphasis role="strong">RESULTS</emphasis>
, <emphasis role="strong">TIME_DEP_RESULTS</emphasis>
, <emphasis role="strong">TIME_INDEP_RESULTS</emphasis>
, <emphasis role="strong">WIDGET</emphasis>
, <?linebreak?><emphasis role="strong">BUTTON</emphasis>
, <emphasis role="strong">SCROLL</emphasis>
, <emphasis role="strong">GLAREA</emphasis>
, <emphasis role="strong">TEXT</emphasis>
, <?linebreak?><emphasis role="strong">LABEL</emphasis>
, <emphasis role="strong">TREE</emphasis>
, <emphasis role="strong">SLIDER</emphasis>
, <emphasis role="strong">EXPANDER</emphasis>
, <?linebreak?><emphasis role="strong">ENTRY</emphasis>
, <emphasis role="strong">ON_SWITCH_STATE_RULES_DATA</emphasis>
, <emphasis role="strong">SLIDER_X</emphasis>
, <emphasis role="strong">SLIDER_Y</emphasis>
, <?linebreak?><emphasis role="strong">SLIDER_Z</emphasis>
, <emphasis role="strong">SLIDER_A</emphasis>
, <emphasis role="strong">SLIDER_B</emphasis>
, <emphasis role="strong">SLIDER_C</emphasis>
}</para>
<para>arbitrary values that can help the logging filter work more efficiently </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1a7804536bf1011457f3d850e350772dca"/>enum <link linkend="_fsm_8h_1a7804536bf1011457f3d850e350772dca">fsm_enum_exec_edit</link> { <emphasis role="strong">EXEC</emphasis>
, <emphasis role="strong">EDIT</emphasis>
}</para>
<para>phantom documentation </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1aa1132278a581ee80526ff5806e6ffa04"/>enum <link linkend="_fsm_8h_1aa1132278a581ee80526ff5806e6ffa04">fsm_enum_state_rules_data</link> { <emphasis role="strong">SYNTH</emphasis>
, <emphasis role="strong">STATE</emphasis>
, <emphasis role="strong">RULES</emphasis>
, <emphasis role="strong">DATA</emphasis>
}</para>
<para>phantom documentation </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1a5063f92d2c3765c7a4b664f5fc46143f"/>enum <link linkend="_fsm_8h_1a5063f92d2c3765c7a4b664f5fc46143f">fsm_enum_store_restore_reset</link> { <emphasis role="strong">STORE</emphasis>
, <emphasis role="strong">RESTORE</emphasis>
, <emphasis role="strong">RESET</emphasis>
}</para>
<para>phantom documentation </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1a06801f1f421dca2f4390645cb5b53c0c"/>enum <link linkend="_fsm_8h_1a06801f1f421dca2f4390645cb5b53c0c">fsm_enum_measure_type</link> { <emphasis role="strong">DATE_RULE_EXEC</emphasis>
, <emphasis role="strong">RULE_EXEC_NB</emphasis>
, <emphasis role="strong">OBJECT_NB</emphasis>
, <emphasis role="strong">ELAPSED_TIME</emphasis>
}</para>
<para>phantom documentation </para>
</listitem>
</itemizedlist>
</simplesect>
<simplesect>
<title>Functions </title>
<itemizedlist>
<listitem><para>void <link linkend="_fsm_8h_1a76c4b511ecf3ddbc9e6d110641be665b">fsm_journal_publish</link> (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> jj)</para>
<para>publish all the logs today just print in the console TODO &gt; in a file </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1ae6db4255fc3be03e0df09e7eda86b079">fsm_journal_init</link> (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> *jj)</para>
<para>init the journal </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1a00a6887e7c3875580234d3a621589b72">fsm_journal_push_front</link> (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> *jj, const char *file_source, const char *function_source, const char *string_value)</para>
<para>add an event </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1af6738f8ff2fb7cb835d3ac62f1428c68">fsm_journal_clear</link> (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> *jj, const char *file_source, const char *function_source, const char *string_value)</para>
<para>usefulness ? (systematic ^c) </para>
</listitem>
<listitem><para>long <link linkend="_fsm_8h_1a9e063d297e80c32e2bac1ec04f24ecc2">fsm_journal_pop_back</link> (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> *jj, const char *file_source, const char *function_source, const char *string_value)</para>
<para>remove an event </para>
</listitem>
<listitem><para>int <link linkend="_fsm_8h_1a2bc11a62378ff09ae3cbd8f40fa7fecd">fsm_journal_length</link> (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> jj)</para>
<para>get journal_length </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1aa414af4170798735875067122c33df8f">fsm_journal_seek</link> (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> jj, long usec, const char *file_source, const char *function_source, const char *string_value)</para>
<para>seek for an event </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1a435d1a5171a7d69662d701234722fee2">fsm_journal_publication_request</link> ()</para>
<para>The <link linkend="_fsm_2dispatch_8c_1a435d1a5171a7d69662d701234722fee2">fsm_journal_publication_request()</link> is called only once, by <link linkend="_main_8c_1a3c04138a5bfe5d72780bb7e82a18e627">main()</link>, just after closing the app and before ending the program. </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1a8c67f42f95d48ee2469c9a27d65db3e6">fsm_journal_event</link> (int severity, int source, const char *file_source, const char *function_source, const char *string_value)</para>
<para>It is mandatory for any event to call this function to be published in the journal. </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1a9d131c81f05d5ee502b715db0e4e172a">fsm_init</link> (char *message)</para>
<para>fsm init is the first function called by <link linkend="_main_8c">main.c</link> It initiates the journal and the four lists: &apos;measures&apos;, &apos;results&apos;, &apos;displayables results&apos; and &apos;preferences&apos;. </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1aa02db2c62f7507eabfcc9a41f0e660b6">fsm_list_init_preferences</link> ()</para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1a5da29952715596bf17643f907bd64daf">fsm_list_init_measures</link> ()</para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1ae228c78b1697ffd299d415ce2bdce515"/>void <emphasis role="strong">fsm_list_init_results</emphasis> ()</para>
<para>phantom documentation </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1a8eaa768708ebc21d710a8cc6144af1d3">fsm_list_init_displayables</link> ()</para>
</listitem>
<listitem><para>int <link linkend="_fsm_8h_1a9123915ffd10fe1ae18254898b1c0ebf">fsm_get_exec_edit</link> ()</para>
<para>some client pages (in particular &quot;state&quot; and &quot;rules&quot;) will be displayed and behave differently depending on whether the fsm is in edit or run state. </para>
</listitem>
<listitem><para>int <link linkend="_fsm_8h_1a90ab14081a88752d3721947a4922ee25">fsm_get_state_rules_data</link> ()</para>
<para>The value of the static int choice_STATE_RULES_DATA can be one of the enum include/fsm enum fsm_enum_state_rules_data. </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1a1f8ada2e7bb701277fc6c5a378b93c88">fsm_set_exec_edit</link> (int value)</para>
<para>setter for the static value: &apos;choice_STATE_RULES_DATA&apos; (in this file) </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1a1cd2f8cf1891095e1496c76b17aed7f2">fsm_set_state_rules_data</link> (int value)</para>
<para>setter for the static value: &apos;choice_STATE_RULES_DATA&apos; (in this file) </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1a42a491a3a432cf572b3c2ed84a00d927">fsm_set_store_restore_reset</link> (int choice, int value)</para>
</listitem>
<listitem><para>bool <link linkend="_fsm_8h_1a0b0231a311d0e85723ef9fcf38be88e3">fsm_get_preferences_state</link> ()</para>
<para>getter for the static boolean: &apos;preferences_have_been_modified&apos; </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1a770bcaeb0bd6f81cddcc3cd506468fff">fsm_set_preferences_modified</link> (bool value)</para>
<para>setter for the static boolean: &apos;preferences_have_been_modified&apos; </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1a6c711a88f128da33895ebd6cdf96ed66">fsm_add_measure</link> (char *measure_name)</para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1ac59294a7ff6934d0704c85aaf08dc268"/>void <emphasis role="strong">fsm_add_result</emphasis> (char *result_name)</para>
<para>phantom documentation </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1aa69a9ce07b26ad1863960c6f0d1303b5">fsm_add_displayable</link> (char *displayable_name)</para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1abb1b857c9ec1ab39d6cb7cdf683a08d1">fsm_reset_all_situations_values</link> (int value)</para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1ae5d5ccdff72b50a67c62ae920224c927"/>void <emphasis role="strong">fsm_tools_list_insert</emphasis> (<link linkend="_structfsm__struct__list__tool">fsm_struct_list_tool</link> **tl, int value)</para>
<para>phantom documentation </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1a680078a92dca5a303408d5d997b47848"/>int <emphasis role="strong">fsm_tools_list_pop</emphasis> (<link linkend="_structfsm__struct__list__tool">fsm_struct_list_tool</link> **tl)</para>
<para>phantom documentation </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1a5849dc2b70ef4683f15e6f4b33575780"/>int <emphasis role="strong">fsm_tools_list_length</emphasis> (<link linkend="_structfsm__struct__list__tool">fsm_struct_list_tool</link> *tl)</para>
<para>phantom documentation </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1ac25c0b170bac58e699bb9e1533393b6a"/>void <emphasis role="strong">fsm_tools_list_clear</emphasis> (<link linkend="_structfsm__struct__list__tool">fsm_struct_list_tool</link> **tl)</para>
<para>phantom documentation </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1a1c87d4ebbff9faab298659b295b5ea15"/>void <emphasis role="strong">fsm_tools_list_view</emphasis> (<link linkend="_structfsm__struct__list__tool">fsm_struct_list_tool</link> *tl)</para>
<para>phantom documentation </para>
</listitem>
<listitem><para><anchor xml:id="_fsm_8h_1a274e703d76bfc06daa46ec5924187fa3"/>void <emphasis role="strong">fsm_tools_list_test</emphasis> ()</para>
<para>phantom documentation </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1ae81ba1733710f5b2db1a5b253d7adaf7">fsm_rule_trig_measure</link> (int rule_id, int object_id, int measure_id)</para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1aeb8e63af534703319fa3d909f166501c">fsm_add_data</link> (<link linkend="_structfsm__struct__list__data">fsm_struct_list_data</link> d, int *p_data, int *p_target)</para>
<para>phantom documentation </para>
</listitem>
<listitem><para>int <link linkend="_fsm_8h_1a51424f38912d7ac0f5df50d6f073bfff">fsm_get_data</link> (<link linkend="_structfsm__struct__list__data">fsm_struct_list_data</link> d, int from, int to)</para>
<para>phantom documentation </para>
</listitem>
<listitem><para>void <link linkend="_fsm_8h_1a9682b83c800a1d48695a58744997d4d8">fsm_remove_data</link> (<link linkend="_structfsm__struct__list__data">fsm_struct_list_data</link> d, int *p_data)</para>
<para>phantom documentation </para>
</listitem>
</itemizedlist>
</simplesect>
<section>
<title>Detailed Description</title>
<para>FSM (Finite State Machine) header. </para>
<para>This file is part of Gem-graph. </para>
</section>
<section>
<title>Typedef Documentation</title>
<anchor xml:id="_fsm_8h_1a6160d10d0af3ce294bde1326f8afba6d"/><section>
<title>fsm_struct_journal_unit</title>
<indexterm><primary>fsm_struct_journal_unit</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_struct_journal_unit</secondary></indexterm>
<para><computeroutput>typedef struct <link linkend="_structfsm__struct__journal__unit">fsm_struct_journal_unit</link> <link linkend="_structfsm__struct__journal__unit">fsm_struct_journal_unit</link></computeroutput></para><para>
<para>structure of a journal element </para>
</para>
<para><formalpara><title>See also</title>
<para>use in src/fsm/dispatch/fsm_journal_event() </para>
<para>use in src/journal/fsm_journal_push_front() </para>
</formalpara>
</para>
</section>
</section>
<section>
<title>Enumeration Type Documentation</title>
<anchor xml:id="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7"/><section>
<title>fsm_enum_journal_severity</title>
<indexterm><primary>fsm_enum_journal_severity</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_enum_journal_severity</secondary></indexterm>
<para><computeroutput>enum <link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7">fsm_enum_journal_severity</link></computeroutput></para><para>
<para>Conforms to canonical log levels: FATAL, ERROR, WARN, INFO, DEBUG, TRACE. </para>
</para>
<para><itemizedlist>
<listitem>
<para>* * * - J O U R N A L M E T A R U L E S - * * * *</para>
<para>ref: sudo cat /var/log/messages</para>
<para>structure d&apos;un log:</para>
</listitem><listitem>
<para>date</para>
</listitem><listitem>
<para>rang (n° d&apos;ordre)</para>
</listitem><listitem>
<para>fichier</para>
</listitem><listitem>
<para>fonction</para>
</listitem><listitem>
<para>valeur, paramètre, descriptif, contexte,... (tout ce qui peut contribuer à améliorer la compréhension du journal) any value that can qualify the event and provides useful information when reading the log.</para>
</listitem></itemizedlist>
</para>
<para><informaltable frame='bottom'><tgroup cols='1'><colspec align='center'/><tbody><row><entry align='center'>
</entry></row></tbody></tgroup></informaltable>
</para>
<para>Un seul <link linkend="_fsm_8h_1a8c67f42f95d48ee2469c9a27d65db3e6">fsm_journal_event()</link> par fonction ? sauf si cette fonction génère plusieurs autres fonctions d&apos;intérêt ?</para>
<para>S&apos;il y a deux <link linkend="_fsm_8h_1a8c67f42f95d48ee2469c9a27d65db3e6">fsm_journal_event()</link> (begin / end) dans une fonction, ils doivent avoir la même étiquette (les mêmes valeurs) : SEVERITY &amp; SOURCE</para>
<para><itemizedlist>
<listitem>
<para>* * * - J O U R N A L M E T A R U L E S - * * * <?linebreak?></para>
</listitem></itemizedlist>
</para>
<para><link xlink:href="https://betterstack.com/community/guides/logging/logging-best-practices/">https://betterstack.com/community/guides/logging/logging-best-practices/</link> <link xlink:href="https://en.wikipedia.org/wiki/Syslog">https://en.wikipedia.org/wiki/Syslog</link> </para>
<informaltable frame="all">
<title>Enumerator</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
<row><entry><indexterm><primary>FATAL</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>FATAL</secondary></indexterm>
<anchor xml:id="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a651d8a47a6976d6fe05c0e03fb4cd2d0"/>FATAL</entry><entry>
<para>(or CRITICAL) an unrecoverable failure that prevents the whole application from doing any further useful work </para>
</entry></row><row><entry><indexterm><primary>ERROR</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>ERROR</secondary></indexterm>
<anchor xml:id="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a2fd6f336d08340583bd620a7f5694c90"/>ERROR</entry><entry>
<para>a conditions that hinder the execution of a specific operation within an application and is unrecoverable </para>
</entry></row><row><entry><indexterm><primary>WARN</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>WARN</secondary></indexterm>
<anchor xml:id="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a74dac7ac23d5b810db6d4067f14e8676"/>WARN</entry><entry>
<para>something unexpected has occurred, but the application can continue to function normally for the time being </para>
</entry></row><row><entry><indexterm><primary>INFO</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>INFO</secondary></indexterm>
<anchor xml:id="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a748005382152808a72b1a9177d9dc806"/>INFO</entry><entry>
<para>(or MESSAGE) a significant event occurs while the system is operating normally </para>
</entry></row><row><entry><indexterm><primary>DEBUG</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>DEBUG</secondary></indexterm>
<anchor xml:id="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a0593585da9181e972974c1274d8f2b4f"/>DEBUG</entry><entry>
<para>a description of system states in sufficient detail to give developers clues as to the cause of an error </para>
</entry></row><row><entry><indexterm><primary>TRACE</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>TRACE</secondary></indexterm>
<anchor xml:id="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a7fa27e82c6c4f69434225ed81e5d151e"/>TRACE</entry><entry>
<para>provides a systematic overview of code execution but comes at a cost in terms of performance </para>
</entry></row> </tbody>
</tgroup>
</informaltable>
</section>
<anchor xml:id="_fsm_8h_1ae17fff59df266673b42b150568f1804c"/><section>
<title>fsm_enum_journal_source</title>
<indexterm><primary>fsm_enum_journal_source</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_enum_journal_source</secondary></indexterm>
<para><computeroutput>enum <link linkend="_fsm_8h_1ae17fff59df266673b42b150568f1804c">fsm_enum_journal_source</link></computeroutput></para><para>
<para>arbitrary values that can help the logging filter work more efficiently </para>
</para>
<para><formalpara><title>See also</title>
<para>src/fsm/dispatch/fsm_journal_event()) </para>
</formalpara>
</para>
</section>
</section>
<section>
<title>Function Documentation</title>
<anchor xml:id="_fsm_8h_1aeb8e63af534703319fa3d909f166501c"/><section>
<title>fsm_add_data()</title>
<indexterm><primary>fsm_add_data</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_add_data</secondary></indexterm>
<para><computeroutput>void fsm_add_data (<link linkend="_structfsm__struct__list__data">fsm_struct_list_data</link> d, int * p_data, int * p_target)</computeroutput></para><para>
<para>phantom documentation </para>
</para>
<para>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>d</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*p_data</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*p_target</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1aa69a9ce07b26ad1863960c6f0d1303b5"/><section>
<title>fsm_add_displayable()</title>
<indexterm><primary>fsm_add_displayable</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_add_displayable</secondary></indexterm>
<para><computeroutput>void fsm_add_displayable (char * displayable_name)</computeroutput></para>
<para><formalpara><title>Date</title>
<para></para>
</formalpara>
<formalpara><title>Author</title>
<para></para>
</formalpara>
<formalpara><title>See also</title>
<para></para>
<para></para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>displayable_name</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a6c711a88f128da33895ebd6cdf96ed66"/><section>
<title>fsm_add_measure()</title>
<indexterm><primary>fsm_add_measure</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_add_measure</secondary></indexterm>
<para><computeroutput>void fsm_add_measure (char * measure_name)</computeroutput></para>
<para><formalpara><title>Since</title>
<para>2024-09</para>
</formalpara>
<formalpara><title>See also</title>
<para>src/widget/measure/dispatch/widget_measure_event_occurences_nb() </para>
<para>src/widget/measure/dispatch/widget_measure_event_occurences_dates() </para>
<para>src/widget/measure/dispatch/widget_measure_event_occurences_situations() </para>
<para>src/widget/measure/dispatch/widget_measure_time_elapsed_between_two_events() </para>
<para>src/widget/measure/dispatch/widget_measure_third_event_occurences_in_between()</para>
<para>src/fsm/dispatch/fsm_journal_event() </para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>*measure_name</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a51424f38912d7ac0f5df50d6f073bfff"/><section>
<title>fsm_get_data()</title>
<indexterm><primary>fsm_get_data</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_get_data</secondary></indexterm>
<para><computeroutput>int fsm_get_data (<link linkend="_structfsm__struct__list__data">fsm_struct_list_data</link> d, int from, int to)</computeroutput></para><para>
<para>phantom documentation </para>
</para>
<para>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>d</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>from</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>to</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a9123915ffd10fe1ae18254898b1c0ebf"/><section>
<title>fsm_get_exec_edit()</title>
<indexterm><primary>fsm_get_exec_edit</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_get_exec_edit</secondary></indexterm>
<para><computeroutput>int fsm_get_exec_edit ( )</computeroutput></para><para>
<para>some client pages (in particular &quot;state&quot; and &quot;rules&quot;) will be displayed and behave differently depending on whether the fsm is in edit or run state. </para>
</para>
<para>Any function which modifies the appearance or behavior of these pages must use this getter to access the choice_EXEC_EDIT value.</para>
<para>see include/fsm enum fsm_enum_exec_edit { EXEC, EDIT } The current int may be replaced by a boolean . TODO</para>
<para><formalpara><title>Since</title>
<para>2024-06</para>
</formalpara>
<formalpara><title>See also</title>
<para>src/widget/one_rule/dispatch </para>
<para>src/widget/state/dispatch * 2 </para>
<para>src/signal</para>
<para>choice_EXEC_EDIT and </para>
<para>include/fsm/enum <link linkend="_fsm_8h_1a7804536bf1011457f3d850e350772dca">fsm_enum_exec_edit</link> {}</para>
</formalpara>
<formalpara><title>Returns</title>
<para>choice_EXEC_EDIT </para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a0b0231a311d0e85723ef9fcf38be88e3"/><section>
<title>fsm_get_preferences_state()</title>
<indexterm><primary>fsm_get_preferences_state</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_get_preferences_state</secondary></indexterm>
<para><computeroutput>bool fsm_get_preferences_state ( )</computeroutput></para><para>
<para>getter for the static boolean: &apos;preferences_have_been_modified&apos; </para>
</para>
<para><formalpara><title>Since</title>
<para>2024-08</para>
</formalpara>
<formalpara><title>See also</title>
<para>TODO A function must obtain this boolean when it stores the current state of the fsm (including <link linkend="_structpreferences">preferences</link>) before closing the current session.</para>
</formalpara>
<formalpara><title>Returns</title>
<para>preferences_have_been_modified </para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a90ab14081a88752d3721947a4922ee25"/><section>
<title>fsm_get_state_rules_data()</title>
<indexterm><primary>fsm_get_state_rules_data</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_get_state_rules_data</secondary></indexterm>
<para><computeroutput>int fsm_get_state_rules_data ( )</computeroutput></para><para>
<para>The value of the static int choice_STATE_RULES_DATA can be one of the enum include/fsm enum fsm_enum_state_rules_data. </para>
</para>
<para>To each value is associated a different page and different possible behaviors. Any function that modifies the client window must get this value.</para>
<para>see include/fsm enum fsm_enum_state_rules_data { SYNTH, STATE, RULES, DATA }</para>
<para><formalpara><title>Since</title>
<para>2024-06</para>
</formalpara>
<formalpara><title>See also</title>
<para>src/widget/topbar/left </para>
<para>src/signal</para>
</formalpara>
<formalpara><title>Returns</title>
<para>choice_STATE_RULES_DATA </para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a9d131c81f05d5ee502b715db0e4e172a"/><section>
<title>fsm_init()</title>
<indexterm><primary>fsm_init</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_init</secondary></indexterm>
<para><computeroutput>void fsm_init (char * initial_INFO_from_main)</computeroutput></para><para>
<para>fsm init is the first function called by <link linkend="_main_8c">main.c</link> It initiates the journal and the four lists: &apos;measures&apos;, &apos;results&apos;, &apos;displayables results&apos; and &apos;preferences&apos;. </para>
</para>
<para>The items selected in these lists define the current state of the fsm.</para>
<para><formalpara><title>Since</title>
<para>2024-08</para>
</formalpara>
<formalpara><title>See also</title>
<para>src/main/main()</para>
<para>src/journal/fsm_journal_init() </para>
<para>src/fsm/dispatch/fsm_journal_event() </para>
<para>src/fsm/measures/manager/fsm_list_init_measures() </para>
<para>src/fsm/results/manager/fsm_list_init_results() </para>
<para>src/fsm/preferences/manager/fsm_list_init_displayables() </para>
<para>src/fsm/preferences/manager/fsm_list_init_preferences()</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>*initial_INFO_from_main</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1af6738f8ff2fb7cb835d3ac62f1428c68"/><section>
<title>fsm_journal_clear()</title>
<indexterm><primary>fsm_journal_clear</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_journal_clear</secondary></indexterm>
<para><computeroutput>void fsm_journal_clear (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> * jj, const char * file_source, const char * function_source, const char * string_value)</computeroutput></para><para>
<para>usefulness ? (systematic ^c) </para>
</para>
<para><formalpara><title>Since</title>
<para>2024-09</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>*jj</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*file_source</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*function_source</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*string_value</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a8c67f42f95d48ee2469c9a27d65db3e6"/><section>
<title>fsm_journal_event()</title>
<indexterm><primary>fsm_journal_event</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_journal_event</secondary></indexterm>
<para><computeroutput>void fsm_journal_event (int severity, int source, const char * file_source, const char * function_source, const char * string_value)</computeroutput></para><para>
<para>It is mandatory for any event to call this function to be published in the journal. </para>
</para>
<para>Before publication, a filter can be applied here (and only here) to select only some events of interest (during debugging, for example)</para>
<para>If there are too many events, a filter can be applied here to select a few interesting events for publication in the log.</para>
<para>This filter can operate on any the following five parameters: severity, source, *file_source, *function_source, *string_value. <formalpara><title>See also</title>
<para>below (params)</para>
</formalpara>
Simple filters (on a single parameter) can be combined using the logical operators &apos;and&apos; and &apos;or&apos; and parentheses.</para>
<para>Use: $ grep -r &quot;fsm_journal_event&quot; to confirm the callergraph calls.</para>
<para><formalpara><title>Since</title>
<para>2024-08</para>
</formalpara>
<formalpara><title>See also</title>
<para><link linkend="_journal_8c">src/journal.c</link>/fsm_journal_push_front()</para>
<para>src/main/main() </para>
<para>src/widget/topbar/modal.c </para>
<para>src/widget/topbar/right.c </para>
<para>src/widget/topbar/dialog.c </para>
<para>src/widget/topbar/left.c </para>
<para>src/widget/topbar/dispatch.c * 3 </para>
<para>src/widget/one_rule/dispatch.c </para>
<para>src/widget/one_rule/algebra/conditions.c * 2 </para>
<para>src/widget/measure/dispatch.c </para>
<para>src/widget/dispatch.c * 3 </para>
<para>src/widget/all_rules/dispatch.c </para>
<para><link linkend="_fsm_2preferences_2manager_8c">src/fsm/preferences/manager.c</link> * 8 </para>
<para><link linkend="_fsm_2measures_2manager_8c">src/fsm/measures/manager.c</link> * 2 </para>
<para><link linkend="_tools__list_8c">src/fsm/measures/tools_list.c</link> * 4 </para>
<para><link linkend="_fsm_2dispatch_8c">src/fsm/dispatch.c</link> * 10 </para>
<para><link linkend="_fsm_2results_2manager_8c">src/fsm/results/manager.c</link> </para>
<para><link linkend="_util_2tree_8c">src/util/tree.c</link> </para>
<para><link linkend="_signal_8c">src/signal.c</link> * 38</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>severity</entry><entry>
<para>&lt;&gt; </para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
<formalpara><title>See also</title>
<para>enum <link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7">fsm_enum_journal_severity</link> in <link linkend="_fsm_8h">include/fsm.h</link> &apos;severity&apos; is a pre-defined value that must be associated to each event. It ranges from zero to six : CRITICAL <link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a2fd6f336d08340583bd620a7f5694c90">ERROR</link> WARNING <link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a748005382152808a72b1a9177d9dc806">INFO</link> <link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a748005382152808a72b1a9177d9dc806">INFO</link> <link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a0593585da9181e972974c1274d8f2b4f">DEBUG</link> <link linkend="_fsm_8h_1ab761a6fdf1ac1e26a44f8f9524aa6da7a7fa27e82c6c4f69434225ed81e5d151e">TRACE</link> 0 1 2 3 4 5 6</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>source</entry><entry>
<para>&lt;&gt; </para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
<formalpara><title>See also</title>
<para>enum <link linkend="_fsm_8h_1ae17fff59df266673b42b150568f1804c">fsm_enum_journal_source</link> in <link linkend="_fsm_8h">include/fsm.h</link> &apos;source&apos; is a pre-defined value that can be associated to each event. It is not mandatory. It can be set to &apos;NULL&apos;.</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>*file_source</entry><entry>
<para>&lt;&gt; the name of the file that emits the event. </para>
</entry>
</row>
<row>
<entry>*function_source</entry><entry>
<para>&lt;&gt; the function that emits the event. </para>
</entry>
</row>
<row>
<entry>*string_value</entry><entry>
<para>&lt;&gt; any value that can qualify the event and provides useful information when reading the log. </para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1ae6db4255fc3be03e0df09e7eda86b079"/><section>
<title>fsm_journal_init()</title>
<indexterm><primary>fsm_journal_init</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_journal_init</secondary></indexterm>
<para><computeroutput>void fsm_journal_init (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> * jj)</computeroutput></para><para>
<para>init the journal </para>
</para>
<para><formalpara><title>Since</title>
<para>2024-09</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>*jj</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a2bc11a62378ff09ae3cbd8f40fa7fecd"/><section>
<title>fsm_journal_length()</title>
<indexterm><primary>fsm_journal_length</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_journal_length</secondary></indexterm>
<para><computeroutput>int fsm_journal_length (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> jj)</computeroutput></para><para>
<para>get journal_length </para>
</para>
<para><formalpara><title>Since</title>
<para>2024-09</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>*jj</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
<formalpara><title>Returns</title>
<para>journal length </para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a9e063d297e80c32e2bac1ec04f24ecc2"/><section>
<title>fsm_journal_pop_back()</title>
<indexterm><primary>fsm_journal_pop_back</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_journal_pop_back</secondary></indexterm>
<para><computeroutput>long fsm_journal_pop_back (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> * jj, const char * file_source, const char * function_source, const char * string_value)</computeroutput></para><para>
<para>remove an event </para>
</para>
<para><formalpara><title>Since</title>
<para>2024-09</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>*jj</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*file_source</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*function_source</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*string_value</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a435d1a5171a7d69662d701234722fee2"/><section>
<title>fsm_journal_publication_request()</title>
<indexterm><primary>fsm_journal_publication_request</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_journal_publication_request</secondary></indexterm>
<para><computeroutput>void fsm_journal_publication_request ( )</computeroutput></para><para>
<para>The <link linkend="_fsm_2dispatch_8c_1a435d1a5171a7d69662d701234722fee2">fsm_journal_publication_request()</link> is called only once, by <link linkend="_main_8c_1a3c04138a5bfe5d72780bb7e82a18e627">main()</link>, just after closing the app and before ending the program. </para>
</para>
<para>This is to guarantee the chronological order of the events in the journal.</para>
<para>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 &quot;main()&quot;, Its chronological order is therefore guaranteed.</para>
<para><link linkend="_journal_8c">src/journal.c</link>/fsm_journal_publish() (called here) is the last function of the program to be executed.</para>
<para>The <link linkend="_structfsm__struct__journal">fsm_struct_journal</link> (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.</para>
<para><formalpara><title>Since</title>
<para>2024-08</para>
</formalpara>
<formalpara><title>See also</title>
<para>src/main/main()</para>
<para>src/journal/fsm_journal_publish() </para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a76c4b511ecf3ddbc9e6d110641be665b"/><section>
<title>fsm_journal_publish()</title>
<indexterm><primary>fsm_journal_publish</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_journal_publish</secondary></indexterm>
<para><computeroutput>void fsm_journal_publish (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> jj)</computeroutput></para><para>
<para>publish all the logs today just print in the console TODO &gt; in a file </para>
</para>
<para><formalpara><title>Since</title>
<para>2024-09</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>*jj</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a00a6887e7c3875580234d3a621589b72"/><section>
<title>fsm_journal_push_front()</title>
<indexterm><primary>fsm_journal_push_front</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_journal_push_front</secondary></indexterm>
<para><computeroutput>void fsm_journal_push_front (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> * jj, const char * file_source, const char * function_source, const char * string_value)</computeroutput></para><para>
<para>add an event </para>
</para>
<para><formalpara><title>Since</title>
<para>2024-09</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>*jj</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*file_source</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*function_source</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*string_value</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1aa414af4170798735875067122c33df8f"/><section>
<title>fsm_journal_seek()</title>
<indexterm><primary>fsm_journal_seek</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_journal_seek</secondary></indexterm>
<para><computeroutput>void fsm_journal_seek (<link linkend="_structfsm__struct__journal">fsm_struct_journal</link> jj, long usec, const char * file_source, const char * function_source, const char * string_value)</computeroutput></para><para>
<para>seek for an event </para>
</para>
<para><formalpara><title>Since</title>
<para>2024-09</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>*jj</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>usec</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*file_source</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*function_source</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*string_value</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a8eaa768708ebc21d710a8cc6144af1d3"/><section>
<title>fsm_list_init_displayables()</title>
<indexterm><primary>fsm_list_init_displayables</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_list_init_displayables</secondary></indexterm>
<para><computeroutput>void fsm_list_init_displayables ( )</computeroutput></para>
<para><formalpara><title>Date</title>
<para></para>
</formalpara>
<formalpara><title>Author</title>
<para></para>
</formalpara>
<formalpara><title>See also</title>
<para></para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a5da29952715596bf17643f907bd64daf"/><section>
<title>fsm_list_init_measures()</title>
<indexterm><primary>fsm_list_init_measures</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_list_init_measures</secondary></indexterm>
<para><computeroutput>void fsm_list_init_measures ( )</computeroutput></para>
<para><formalpara><title>Since</title>
<para>2024-09</para>
</formalpara>
<formalpara><title>See also</title>
<para>src/fsm/dispatch/fsm_init() </para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1aa02db2c62f7507eabfcc9a41f0e660b6"/><section>
<title>fsm_list_init_preferences()</title>
<indexterm><primary>fsm_list_init_preferences</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_list_init_preferences</secondary></indexterm>
<para><computeroutput>void fsm_list_init_preferences ( )</computeroutput></para>
<para><formalpara><title>Date</title>
<para></para>
</formalpara>
<formalpara><title>Author</title>
<para></para>
</formalpara>
<formalpara><title>See also</title>
<para></para>
<para></para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a9682b83c800a1d48695a58744997d4d8"/><section>
<title>fsm_remove_data()</title>
<indexterm><primary>fsm_remove_data</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_remove_data</secondary></indexterm>
<para><computeroutput>void fsm_remove_data (<link linkend="_structfsm__struct__list__data">fsm_struct_list_data</link> d, int * p_data)</computeroutput></para><para>
<para>phantom documentation </para>
</para>
<para>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>d</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>*p_data</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1abb1b857c9ec1ab39d6cb7cdf683a08d1"/><section>
<title>fsm_reset_all_situations_values()</title>
<indexterm><primary>fsm_reset_all_situations_values</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_reset_all_situations_values</secondary></indexterm>
<para><computeroutput>void fsm_reset_all_situations_values (int value)</computeroutput></para>
<para><formalpara><title>Date</title>
<para></para>
</formalpara>
<formalpara><title>Author</title>
<para></para>
</formalpara>
<formalpara><title>See also</title>
<para></para>
<para></para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>value</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1ae81ba1733710f5b2db1a5b253d7adaf7"/><section>
<title>fsm_rule_trig_measure()</title>
<indexterm><primary>fsm_rule_trig_measure</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_rule_trig_measure</secondary></indexterm>
<para><computeroutput>void fsm_rule_trig_measure (int rule_id, int object_id, int measure_id)</computeroutput></para>
<para><formalpara><title>Since</title>
<para>2024-09 </para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>rule_id</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>object_id</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>measure_id</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a1f8ada2e7bb701277fc6c5a378b93c88"/><section>
<title>fsm_set_exec_edit()</title>
<indexterm><primary>fsm_set_exec_edit</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_set_exec_edit</secondary></indexterm>
<para><computeroutput>void fsm_set_exec_edit (int choice)</computeroutput></para><para>
<para>setter for the static value: &apos;choice_STATE_RULES_DATA&apos; (in this file) </para>
</para>
<para>see include/fsm enum fsm_enum_exec_edit { EXEC, EDIT }</para>
<para><formalpara><title>Since</title>
<para>2024-08</para>
</formalpara>
<formalpara><title>See also</title>
<para>src/signal * 2</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>choice</entry><entry>
<para>&lt; a boolean value which can be &quot;EXEC&quot; or &quot;EDIT&quot; </para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a770bcaeb0bd6f81cddcc3cd506468fff"/><section>
<title>fsm_set_preferences_modified()</title>
<indexterm><primary>fsm_set_preferences_modified</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_set_preferences_modified</secondary></indexterm>
<para><computeroutput>void fsm_set_preferences_modified (bool value)</computeroutput></para><para>
<para>setter for the static boolean: &apos;preferences_have_been_modified&apos; </para>
</para>
<para><formalpara><title>Since</title>
<para>2024-08</para>
</formalpara>
<formalpara><title>See also</title>
<para>TODO To be used by any function that modifies the current user <link linkend="_structpreferences">preferences</link></para>
<para><link linkend="_fsm_2dispatch_8c_1a8c67f42f95d48ee2469c9a27d65db3e6">fsm_journal_event()</link></para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>value</entry><entry>
<para>= TRUE if preferences_have_been_modified. </para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a1cd2f8cf1891095e1496c76b17aed7f2"/><section>
<title>fsm_set_state_rules_data()</title>
<indexterm><primary>fsm_set_state_rules_data</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_set_state_rules_data</secondary></indexterm>
<para><computeroutput>void fsm_set_state_rules_data (int choice)</computeroutput></para><para>
<para>setter for the static value: &apos;choice_STATE_RULES_DATA&apos; (in this file) </para>
</para>
<para>see include/fsm enum fsm_enum_state_rules_data { SYNTH, STATE, RULES, DATA } Today (2024-10) the initial page is set to &apos;SYNTH&apos;. <formalpara><title>See also</title>
<para>line 292 choice_STATE_RULES_DATA = SYNTH; NB This choice can be temporarily modified for debugging purpose: </para>
<para>end of the function: <link linkend="_fsm_2dispatch_8c">fsm/dispatch.c</link> <link linkend="_widget_8h_1a45d8a02844578e1c13d8b86b74e3c8b0">window_design_topbar_left()</link></para>
</formalpara>
<formalpara><title>Since</title>
<para>2024-08</para>
</formalpara>
<formalpara><title>See also</title>
<para>src/signal * 4</para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>choice</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
<anchor xml:id="_fsm_8h_1a42a491a3a432cf572b3c2ed84a00d927"/><section>
<title>fsm_set_store_restore_reset()</title>
<indexterm><primary>fsm_set_store_restore_reset</primary><secondary>fsm.h</secondary></indexterm>
<indexterm><primary>fsm.h</primary><secondary>fsm_set_store_restore_reset</secondary></indexterm>
<para><computeroutput>void fsm_set_store_restore_reset (int choice, int value)</computeroutput></para>
<para><formalpara><title>Date</title>
<para></para>
</formalpara>
<formalpara><title>Author</title>
<para></para>
</formalpara>
<formalpara><title>See also</title>
<para></para>
<para></para>
</formalpara>
<formalpara>
<title>
Parameters</title>
<para>
<table frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colwidth="1*"/>
<colspec colwidth="4*"/>
<tbody>
<row>
<entry>choice</entry><entry>
<para></para>
</entry>
</row>
<row>
<entry>value</entry><entry>
<para></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</formalpara>
</para>
</section>
</section>
</section>