From d2af43dcc90594532626533ce817941a2aa1d0c3 Mon Sep 17 00:00:00 2001 From: Jean Sirmai Date: Mon, 26 Aug 2024 22:11:51 +0200 Subject: [PATCH] =?UTF-8?q?struct=20pile=20//=201er=20essai=20:=20measures?= =?UTF-8?q?=20=20=20(2024-08-26)=20=20<=20=20g=C3=A9n=C3=A9rique=20=3D=3D?= =?UTF-8?q?=20compliqu=C3=A9=20=20=20Comment=20faire=20=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/fsm.h | 16 ++++++++++--- include/util.h | 16 +++++++++---- src/fsm/dispatch.c | 21 ++++++++-------- src/fsm/measure.c | 25 ++++++++++++------- src/util/pile.c | 4 ++-- src/util/sorted_list.c | 2 +- src/util/tests.c | 54 +++++++++++++++++++++--------------------- 7 files changed, 82 insertions(+), 56 deletions(-) diff --git a/include/fsm.h b/include/fsm.h index 1aa6b41..183e7e7 100644 --- a/include/fsm.h +++ b/include/fsm.h @@ -38,10 +38,20 @@ /******************************************************************************/ // called by widgets through signal functions -enum fsm_choice_EXEC_EDIT { EXEC, EDIT }; -enum fsm_choice_STATE_RULES_DATA { SYNTH, STATE, RULES, DATA }; -enum fsm_choice_STORE_RESTORE_RESET { STORE, RESTORE, RESET }; +enum fsm_select_EXEC_EDIT { EXEC, EDIT }; +enum fsm_select_STATE_RULES_DATA { SYNTH, STATE, RULES, DATA }; +enum fsm_select_STORE_RESTORE_RESET { STORE, RESTORE, RESET }; +enum fsm_measure_type {DATE_RULE_EXEC, RULE_EXEC_NB, OBJECT_NB, ELAPSED_TIME }; + +typedef struct pile // 1er essai : measures (2024-08-26) +{ + int value; // to replace + int measure_type; + int *at_rule; // réserve un emplacement pour stocker une adresse mémoire. + // at_rule = &rule; < écrira l'adresse de rule dans cet emplacement. + struct pile *prev; +} pile; #define n_rules 128 // arbitrary #define n_objects 32 // arbitrary too, diff --git a/include/util.h b/include/util.h index e9ddcc7..b66e04f 100644 --- a/include/util.h +++ b/include/util.h @@ -33,6 +33,7 @@ #include #include +#include "../include/fsm.h" char *util_read_file (char *filename); @@ -48,8 +49,15 @@ char *util_read_file (char *filename); // Le piratage est illégal, // de même que sont interdits: cracks, warez, sérials (sauf évaluation), etc. // Est bien sûr autorisé tout ce qui concerne les logiciels gratuits, freewares et évaluation. +//------------------------------------------------------------------------------ + +// typedef struct pile {int value; struct pile *prev;} pile; // structure d'un élément +// LE TYPE 'pile' EST REDÉFINI DANS fsm.h ET UTILISÉ DANS fsm/measure.c + +// 2024-08-26 J'avais - trop vite ! - imaginé des piles ou listes génériques, mais +// en fait, chaque structure sera très typée et très spécifique +// (des règles, groupes de règles, objets, dates, durées, etc.) -typedef struct pile {int value; struct pile *prev;} pile; // structure d'un élément void util_pile_clear (pile **); // vide toute la pile void util_pile_view (pile *); // affiche la pile en commençant par le sommet int util_pile_push (pile **, int); // ajoute une valeur sur la pile @@ -80,7 +88,7 @@ int util_sorted_list_length (slist *sl); // renvoie le nombre d'él //------------------------------------------------------------------------------ -void util_pile_test(); -void util_double_list_test(); -void util_sorted_list_test(); +void util_pile_test(); // called in fsm/measure.c +void util_double_list_test(); // " " +void util_sorted_list_test(); // " " diff --git a/src/fsm/dispatch.c b/src/fsm/dispatch.c index 9fd4936..939013c 100644 --- a/src/fsm/dispatch.c +++ b/src/fsm/dispatch.c @@ -34,14 +34,14 @@ /******************************************************************************/ /* */ -/* FFFFFFFFFFFF SSSS MM MM */ -/* FF SS SS MMMM MMMM */ -/* FF SS MM MM MM MM */ -/* FFFFFFF SS MM MM MM MM */ -/* FF SS MM MMM MM */ -/* FF SS MM MM */ -/* FF SS SS MM MM */ -/* FF SSSSS MM MM */ +/* OOOOOOOOOOO OOOOO OOO OOO */ +/* OO OO OO OOOO OOOO */ +/* OO OO OO OO OO OO */ +/* OOOOOO OO OO OO OO OO */ +/* OO OO OO OOO OO */ +/* OO OO OO OO */ +/* OO OO OOO OO OO */ +/* OO OOOOOO OO OO */ /* */ /******************************************************************************/ @@ -82,7 +82,8 @@ bool fsm_get_preferences_state() {return preferences_have_been_modified;} static int choice_EXEC_EDIT = EXEC; -static int choice_STATE_RULES_DATA = STATE; +static int choice_STATE_RULES_DATA = SYNTH; // THE FIRST PAGE TO BE PRESENTED + // SEE ALSO fsm/dispatch.c window_design_topbar_left() (the end) int fsm_get_exec_edit() {return choice_EXEC_EDIT;} int fsm_get_state_rules_data() {return choice_STATE_RULES_DATA;} @@ -111,7 +112,7 @@ void fsm_set_state_rules_data (int choice) /******************************************************************************/ -/* D E B U G G E R S */ +/* D E B U G G I N G */ /******************************************************************************/ static char *tab_0 [] = { "EXEC", "EDIT" }; diff --git a/src/fsm/measure.c b/src/fsm/measure.c index fec16a7..c63dc72 100644 --- a/src/fsm/measure.c +++ b/src/fsm/measure.c @@ -35,14 +35,14 @@ /******************************************************************************/ /* */ -/* FFFFFFFFFFFF SSSSS MM MM */ -/* FF SSS SS MMMM MMMM */ -/* FF SS MM MM MM MM */ -/* FFFFFFF SS MM MM MM MM */ -/* FF SS MM MM MM */ -/* FF SSS MM MM */ -/* FF SS SSS MM MM */ -/* FF SSSSSS MM MM */ +/* FFFFFFFFFFF SSSSS MM MM */ +/* FF SSS SS MMMM MMMM */ +/* FF SS MM MM MM MM */ +/* FFFFFFF SS MM MM MM MM */ +/* FF SS MM MM MM */ +/* FF SSS MM MM */ +/* FF SS SSS MM MM */ +/* FF SSSSSS MM MM */ /* */ /******************************************************************************/ @@ -105,5 +105,12 @@ void fsm_measures_list_init () fsm_debug_msg (0,0, "fsm_measures_list_init()", 2); // sub_automaton 2 if (0) util_pile_test(); if (0) util_double_list_test(); - util_sorted_list_test(); + if (0) util_sorted_list_test(); + + pile *exemple = NULL; // doit être initialisée à NULL + printf ("push > %d\n", util_pile_push (&exemple, 4)); + util_pile_view (exemple); + printf ("pop > %d\n", util_pile_pop (&exemple)); + util_pile_view (exemple); + } diff --git a/src/util/pile.c b/src/util/pile.c index 740c171..fb11bd4 100644 --- a/src/util/pile.c +++ b/src/util/pile.c @@ -78,10 +78,10 @@ int util_pile_length (pile *p) void util_pile_view (pile *p) { - printf ("------ view pile (n = %d)\n", util_pile_length (p)); + printf ("view pile (n = %d)\n", util_pile_length (p)); while (p) { - printf ("%d\n", p->value); + printf ("> %d\n", p->value); p = p->prev; } puts ("------"); diff --git a/src/util/sorted_list.c b/src/util/sorted_list.c index 30f2f16..821ca2c 100644 --- a/src/util/sorted_list.c +++ b/src/util/sorted_list.c @@ -78,7 +78,7 @@ int util_sorted_list_pop (slist **sl) if (! *sl) return -1; tmp = (*sl)->suiv; value = (*sl)->value; - printf("value = %d <> pb with free(sl) in pop()\n", (*sl)->value); + printf("value = %d <> removed from the list by pop()\n", (*sl)->value); free (*sl); *sl = tmp; return value; diff --git a/src/util/tests.c b/src/util/tests.c index 7193f53..6272d5b 100644 --- a/src/util/tests.c +++ b/src/util/tests.c @@ -35,6 +35,7 @@ void util_pile_test() { pile *exemple = NULL; // doit être initialisée à NULL + puts ("------"); printf ("push > %d\n", util_pile_push (&exemple, 1)); printf ("push > %d\n", util_pile_push (&exemple, 2)); @@ -85,37 +86,36 @@ void util_double_list_test() void util_sorted_list_test() { - slist *Mysl = NULL; + slist *Mysl = NULL; - puts("création d'une liste de 9 elements :"); - util_sorted_list_insert (&Mysl,9); - util_sorted_list_insert (&Mysl,8); - util_sorted_list_insert (&Mysl,3); - util_sorted_list_insert (&Mysl,5); - util_sorted_list_insert (&Mysl,1); - util_sorted_list_insert (&Mysl,5); - util_sorted_list_insert (&Mysl,2); - util_sorted_list_insert (&Mysl,0); - util_sorted_list_insert (&Mysl,7); - util_sorted_list_view (Mysl); + puts("\ncréation d'une liste de 10 elements :"); + util_sorted_list_insert (&Mysl,9); + util_sorted_list_insert (&Mysl,-8); + util_sorted_list_insert (&Mysl,3); + util_sorted_list_insert (&Mysl,5); + util_sorted_list_insert (&Mysl,-1); + util_sorted_list_insert (&Mysl,4); + util_sorted_list_insert (&Mysl,-6); + util_sorted_list_insert (&Mysl,2); + util_sorted_list_insert (&Mysl,0); + util_sorted_list_insert (&Mysl,7); + util_sorted_list_view (Mysl); - puts("retrait des 3 premiers elements :"); - printf("%d\n",util_sorted_list_pop (&Mysl)); - printf("%d\n",util_sorted_list_pop (&Mysl)); - printf("%d\n",util_sorted_list_pop (&Mysl)); - printf("Nb d'elements : %d\n", util_sorted_list_length (Mysl)); - util_sorted_list_view (Mysl); + puts("retrait des 3 premiers elements :"); + util_sorted_list_pop (&Mysl); + util_sorted_list_pop (&Mysl); + util_sorted_list_pop (&Mysl); + util_sorted_list_view (Mysl); - puts("on vide de la liste puis on ajoute 4 elements :"); - util_sorted_list_clear (&Mysl); - util_sorted_list_insert (&Mysl,3); - util_sorted_list_insert (&Mysl,1); - util_sorted_list_insert (&Mysl,9); - util_sorted_list_insert (&Mysl,5); - printf("nb d'elements : %d\n", util_sorted_list_length (Mysl)); - util_sorted_list_view (Mysl); + puts("ajout des 3 elements (8, 1, 6) :"); + util_sorted_list_insert (&Mysl,8); + util_sorted_list_insert (&Mysl,1); + util_sorted_list_insert (&Mysl,6); + util_sorted_list_view (Mysl); - util_sorted_list_clear (&Mysl); + util_sorted_list_clear (&Mysl); + printf("clear()\n> nombre d'éléments restant = %d\n\n", + util_sorted_list_length(Mysl)); }