Commit Graph

26 Commits

Author SHA1 Message Date
Adrien Bourmault 01af624424 Makefile: integrate makeinfo to build the manual
Signed-off-by: Adrien 'neox' Bourmault <neox@a-lec.org>
2024-11-29 11:35:34 +01:00
Adrien Bourmault ede7ecac07 manifest.scm: sort dependencies alphabetically 2024-11-29 11:35:34 +01:00
Jean Sirmai 2754ef0de7 manual: migrate from plain text to texinfo
This commit creates docs/rtfm/gem-graph.texi, which from now on will be the
Gem-graph manual source code.

Its first text includes just an introduction, the beginning of a chapter namely
"Gem-graph by example" and a first cross-reference to the section "Hello world".
2024-11-29 11:34:25 +01:00
Adrien Bourmault 30f844370c src/{fsm,widget}/*, include/fsm.h: reworked logging memory management and encapsulated calls
This commit fixes issues with memory management in the logging code of the FSM. It also
optimizes operations by restricting char* pointers, allowing the compiler knowing that they
do not overlap. Finally, it encapsulates calls to fsm_add_log in a macro that allows to
automatically get file and function names.

Signed-off-by: Adrien 'neox' Bourmault <neox@a-lec.org>
2024-11-22 17:07:22 +01:00
Adrien Bourmault 502fc8939f Makefile: integrate libasan to our build system
The libasan library allows to get reports for memory leaks and stack
issues at runtime, with very few performance drawbacks.

This commits add integration for this in the Makefile, for the default
target.

Signed-off-by: Adrien 'neox' Bourmault <neox@a-lec.org>
2024-11-22 16:38:30 +01:00
Adrien Bourmault 546497f349 manifest.scm: add doxygen as a dependency
Doxygen is used to generate documentation, this commit makes sure it is
loaded in the `guix shell` environment (which is useful for guix users).

Signed-off-by: Adrien 'neox' Bourmault <neox@a-lec.org>
2024-11-22 16:37:26 +01:00
Jean Sirmai d261ffee30
main() reintroducing strncat() instead of util_concat()
WIP: memory leaks evaluation
2024-11-22 14:03:07 +01:00
Jean Sirmai 794418e208
src/widget/main_window/design.c adding a title and a button in the header_bar
==3275== LEAK SUMMARY:
==3275==    definitely lost: 3,728 bytes in 52 blocks
==3275==    indirectly lost: 8,112 bytes in 337 blocks

no gtk_._unref() functions used

In previous valgrind report:
==23744== LEAK SUMMARY:
==23744==    definitely lost: 5,008 bytes in 54 blocks
==23744==    indirectly lost: 16,151 bytes in 673 blocks

reproducible result
2024-11-22 00:29:39 +01:00
Jean Sirmai e684cf9a1b
audits/* 2024-07-14 new dir "audits" added with its content 2024-11-21 23:27:25 +01:00
Jean Sirmai 1bcb74e3cb
src/util/* include/base.h makes available util_concat(), util_read_file()
introduces the enum axis { X_AXIS, Y_AXIS, Z_AXIS }

The use of util_concat() modifies the memory indirect leaks (not direct).
==23744== LEAK SUMMARY:
==23744==    definitely lost: 5,008 bytes in 54 blocks
==23744==    indirectly lost: 16,151 bytes in 673 blocks

Doc minor modifications (use __function_name__ instead of "function name").
2024-11-21 23:22:37 +01:00
Jean Sirmai f3564d0462
docs/rtfm/manual WIP: redaction
a version of the same text with lines length limited to 80 char is available
2024-11-20 17:59:09 +01:00
Jean Sirmai fcc2dd1c6e
include/fsm.h, src/fsm/*: reworked memory management of the logging system
This commits reworks the way that memory is allocated for the logging system.

We basically use a double-linked list, with the oldest and the latest elements
stored in a static variable. Most recent log entries are added at the latest
position in this structure.

A new function to clear and free a log unit has been implemented, and can be used
at many points. We take care that each log unit is freed at closing time.

Also, fsm docs have been a bit clarified.

Tested with valgrind:

==6161== LEAK SUMMARY:
==6161==    definitely lost: 5,008 bytes in 54 blocks
==6161==    indirectly lost: 16,119 bytes in 672 blocks

We can consider that as a basis for future work, as these leaks are due to external
causes (e.g. libraries).

Signed-off-by: Jean Sirmai <jean@a-lec.org>
Signed-off-by: Adrien Bourmault <neox@a-lec.org>
2024-11-20 17:59:09 +01:00
Jean Sirmai 4c375c5405
src/widget/*, src/main.c: catching window::close-request signal, and a few renames
We create a window in the app activation and it needs to be closed properly,
freeing all ressources in the meantime. For now, there is only the picture
(E. coli) to free.

From now on, freeing window ressources will be done in
src/widget/manager.c:on_window_close_request().

Signed-off-by: Jean Sirmai <jean@a-lec.org>
2024-11-20 17:59:09 +01:00
Jean Sirmai e32427912d
src/fsm/log/oper.c fsm_add_log_event() fixing a bug
The bug was caused by pointers to local variables sended to fsm_add_log().
malloc() are now realized in fsm_add_log_event().

+ cleaning (checking that the sentence "This file is part of Gem-graph."
is systematicaly added to legal mentions.)
2024-11-20 17:59:09 +01:00
Jean Sirmai 05bb7c4ec2
src/widget/main_window/design First visible window (with memory leaks)
To display this minimal window, three files and two functions must be
added simultaneously:

- include/widget/h
- src/manager.c
- src/main_window/design.c

main() now contains: g_signal_connect (on_windows_activation);
on_windows_activation () is in src/manager.c and calls
widget_main_window () which is in src/main_window/design.c

NB  The iconic image of E coli drawn by David S. Goodsell in 2009
is reproduced here with permission.

One goal of Gem-graph is to animate such static representations
i.e. use the best anatomy to try to achieve good physiology.
2024-11-20 17:59:09 +01:00
Jean Sirmai 56acc696b6
docs/rtfm/intro writing + cleaning details in src/ 2024-11-20 17:59:09 +01:00
Jean Sirmai 2a739928fb
rtfm/intro (writing the manual) + cleaning doc 2024-11-20 17:59:09 +01:00
Jean Sirmai c9edba046c
src/fsm/* modifies several names:
* - in fsm_trigger_log_init(), fsm_trigger_log_close() the word **trigger** is
 * replaced by **relay**
 * - fsm_log_struct_unit is replaced by: fsm_log_unit_struct
 *
 * docs/rtfm/intro (previously 'Once upon a time'... 🙃️) is also renamed and
 * extended.
 *
2024-11-20 17:58:16 +01:00
Jean Sirmai 98f69581b8
rtfm/intro Manual Introduction - a first version.
The same text is presented in two formats: for an external text editor (.txt)
or with lines limited to 80 characters.

The links are prepared but not functionnal.
2024-11-20 17:54:16 +01:00
Jean Sirmai 6e72f1f392
src/fsm/control.c fsm_init() and fsm_close() can be now triggered from main().
These two functions (defined in control.c) initiate the log and print it just
before the end of the program.
It is now possible to send messages that reports the events occuring during a
session: the creation of the log, then of the application and their closure in
the reverse order.
As previously,there is no g signal connect (activate) and no window is created.
This triggers the same error message in the console.
What is new, in this commit, is that a first log is printed in the console.
2024-11-20 17:54:16 +01:00
Jean Sirmai 55a43c7861
/src/fsm/log/* adds the three files:
- manager.c,
- oper.c and
- appendix.c

and the functions needed to init, edit and publish the log.

fsm_add_log() is in manager.c  There are the filters.

init(), add(), publish() are in oper.c
                   These are the executive functions.

and functions whose usefulness remains to be demonstrated
are in appendix.

In fsm.h remain the structures (fsm_log_struct, fsm_log_struct_unit)
and the two enums (severity and source)
2024-11-20 17:54:16 +01:00
Jean Sirmai d9b398c3b0
include/fsm.h: prepares the building of a log and 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-20 17:54:16 +01:00
Jean Sirmai 1676f36674
docs/*: integrate doxygen, create a documentation zone, adds notes
We wanted to have an automated documentation for our project. We choose doxygen
since this is a well-established project, with common standards.

To generate the documentation, simply type `make docs` and open `docs/html/index.html`.

The documentation zone actually contains:
	- archives: several files from past of the projects, historical purpose
	- GTK-docs: ressources on GTK internals and API
	- rtfm: first draft of a user manual
	- showcase: some pictures of the UI example, that were communicated on the Gem-graph discussion room (XMPP)
	- html: doxygen-generated docs
2024-11-20 17:54:06 +01:00
Jean Sirmai 2f33355180
scripts/*: add a script that can list every function name 2024-11-20 17:52:23 +01:00
Adrien Bourmault 5c0289217e
Makefile: fixes and parallel by default
This commit:
- fixes the OpenGL lib configurations (gl->epoxy)
- added an exclusion for bin/ and build/ in .gitignore
- make the Makefile parallel
2024-11-20 17:52:23 +01:00
Jean Sirmai 62987bbd33
src/*, simple Gtk application
This commit initiates the Gem-graph client development with a simple
main function that initializes a Gtk application (no window yet).
2024-11-20 17:38:36 +01:00