gem-graph-client/src
Jean Sirmai ce6a46b6d3
include/fsm.h: prepares the building of a log; create src/readme.doc
This commit is the first in a series that will make the fsm apt to build the log.

The log (or journal) records events chronologically from the start to the end of the programme. Its quantitatively most important part is to report on the execution of the session.

The log will be created from the fsm (finite state machine) which describes all the possible states of the Gem-graph client and all the transitions between them.

The fsm header is introduced in this commit.

It lists the structures, functions and tools that the log will need and details the presentation of events in the log [date - rank - source file - source function - value].

The src/readme.docs file provides an initial overview of the missions and their distribution in the code files.
2024-11-06 18:45:52 +01:00
..
main.c include/fsm.h: prepares the building of a log; create src/readme.doc 2024-11-06 18:45:52 +01:00
readme.docs.c include/fsm.h: prepares the building of a log; create src/readme.doc 2024-11-06 18:45:52 +01:00

readme.docs.c

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
 * @file
 * Gem-graph-client src/readme.docs file
 *
 *  This file is part of Gem-graph.
 *
 * @cond LICENSE
 * Copyright © 2021 Libre en Communs <contact@a-lec.org>
 * Copyright © 2021-2024 Adrien Bourmault <neox@a-lec.org>
 * Copyright © 2021-2024 Jean Sirmai <jean@a-lec.org>
 *
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU Affero General Public License as published by the Free
 * Software Foundation, either version 3 of the License, or (at your option) any
 * later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
 * details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * @endcond
 *
 * @details
 * The code files are all located in the src (sources) directory.
 *
 * They are divided according to several *types of organisation*:
 *
 * - *hierarchical*: the widgets that give the windows their appearance are
 *    organised in the form of a tree.
 *    Windows are the first level of depth.
 *    Next come the windows contents: the title bars and the pages.
 *    The pages are designed to occupy the windows space below the title bars.
 *    Each of these pages has its own hierarchical structure: it can be divided
 *    into horizontal or vertical strips, which can themselves be divided in the
 *    same way, with varying levels of depth right down to the last containers
 *    which contain lists of widgets such as buttons, bars, entries or images.
 *
 * - *list*: the main *sections* of the fsm (finite state machine) constitute
 *   a list of at least four elements, each of which defines a set of possible
 *   states :
 *   -# execute or edit (managing the appropriate tools states in both cases)
 *   -# measure, operate on data, prepare displayable results
 *   -# user preferences
 *   -# desired state of windows and widgets
 *
 *   The state of the fsm is uniquely defined at all times by all the parameters
 *   listed in these sections. All program actions depend on this state.
 *
 * - *transversal*: the other functions that must be easily accessible by all
 *   the previous functions. They are therefore all located at the root.
 *   These are the functions that manage graphics, callbacks and utilities.
 *   Although 'transversal', the log is part of the fsm.
 *
 * ---
 *
 * @see
 * Modelviewcontroller || Modelviewviewmodel || Actiondomainresponder ||
 * Multitier_architecture https://en.wikipedia.org/wiki/Multitier_architecture
 * (presentation, logic, data)
 */