struct pile // 1er essai : measures (2024-08-26) < générique == compliqué Comment faire ?
This commit is contained in:
parent
432a0202a2
commit
d2af43dcc9
|
@ -38,10 +38,20 @@
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
// called by widgets through signal functions
|
// called by widgets through signal functions
|
||||||
|
|
||||||
enum fsm_choice_EXEC_EDIT { EXEC, EDIT };
|
enum fsm_select_EXEC_EDIT { EXEC, EDIT };
|
||||||
enum fsm_choice_STATE_RULES_DATA { SYNTH, STATE, RULES, DATA };
|
enum fsm_select_STATE_RULES_DATA { SYNTH, STATE, RULES, DATA };
|
||||||
enum fsm_choice_STORE_RESTORE_RESET { STORE, RESTORE, RESET };
|
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_rules 128 // arbitrary
|
||||||
#define n_objects 32 // arbitrary too,
|
#define n_objects 32 // arbitrary too,
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <gtk-4.0/gtk/gtk.h>
|
#include <gtk-4.0/gtk/gtk.h>
|
||||||
|
|
||||||
|
#include "../include/fsm.h"
|
||||||
|
|
||||||
char *util_read_file (char *filename);
|
char *util_read_file (char *filename);
|
||||||
|
|
||||||
|
@ -48,8 +49,15 @@ char *util_read_file (char *filename);
|
||||||
// Le piratage est illégal,
|
// Le piratage est illégal,
|
||||||
// de même que sont interdits: cracks, warez, sérials (sauf évaluation), etc.
|
// 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.
|
// 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_clear (pile **); // vide toute la pile
|
||||||
void util_pile_view (pile *); // affiche la pile en commençant par le sommet
|
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
|
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_pile_test(); // called in fsm/measure.c
|
||||||
void util_double_list_test();
|
void util_double_list_test(); // " "
|
||||||
void util_sorted_list_test();
|
void util_sorted_list_test(); // " "
|
||||||
|
|
||||||
|
|
|
@ -34,14 +34,14 @@
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* FFFFFFFFFFFF SSSS MM MM */
|
/* OOOOOOOOOOO OOOOO OOO OOO */
|
||||||
/* FF SS SS MMMM MMMM */
|
/* OO OO OO OOOO OOOO */
|
||||||
/* FF SS MM MM MM MM */
|
/* OO OO OO OO OO OO */
|
||||||
/* FFFFFFF SS MM MM MM MM */
|
/* OOOOOO OO OO OO OO OO */
|
||||||
/* FF SS MM MMM MM */
|
/* OO OO OO OOO OO */
|
||||||
/* FF SS MM MM */
|
/* OO OO OO OO */
|
||||||
/* FF SS SS MM MM */
|
/* OO OO OOO OO OO */
|
||||||
/* FF SSSSS MM MM */
|
/* 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_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_exec_edit() {return choice_EXEC_EDIT;}
|
||||||
int fsm_get_state_rules_data() {return choice_STATE_RULES_DATA;}
|
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" };
|
static char *tab_0 [] = { "EXEC", "EDIT" };
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* FFFFFFFFFFFF SSSSS MM MM */
|
/* FFFFFFFFFFF SSSSS MM MM */
|
||||||
/* FF SSS SS MMMM MMMM */
|
/* FF SSS SS MMMM MMMM */
|
||||||
/* FF SS MM MM MM MM */
|
/* FF SS MM MM MM MM */
|
||||||
/* FFFFFFF SS MM MM MM MM */
|
/* FFFFFFF SS MM MM MM MM */
|
||||||
|
@ -105,5 +105,12 @@ void fsm_measures_list_init ()
|
||||||
fsm_debug_msg (0,0, "fsm_measures_list_init()", 2); // sub_automaton 2
|
fsm_debug_msg (0,0, "fsm_measures_list_init()", 2); // sub_automaton 2
|
||||||
if (0) util_pile_test();
|
if (0) util_pile_test();
|
||||||
if (0) util_double_list_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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,10 +78,10 @@ int util_pile_length (pile *p)
|
||||||
|
|
||||||
void util_pile_view (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)
|
while (p)
|
||||||
{
|
{
|
||||||
printf ("%d\n", p->value);
|
printf ("> %d\n", p->value);
|
||||||
p = p->prev;
|
p = p->prev;
|
||||||
}
|
}
|
||||||
puts ("------");
|
puts ("------");
|
||||||
|
|
|
@ -78,7 +78,7 @@ int util_sorted_list_pop (slist **sl)
|
||||||
if (! *sl) return -1;
|
if (! *sl) return -1;
|
||||||
tmp = (*sl)->suiv;
|
tmp = (*sl)->suiv;
|
||||||
value = (*sl)->value;
|
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);
|
free (*sl);
|
||||||
*sl = tmp;
|
*sl = tmp;
|
||||||
return value;
|
return value;
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
void util_pile_test()
|
void util_pile_test()
|
||||||
{
|
{
|
||||||
pile *exemple = NULL; // doit être initialisée à NULL
|
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, 1));
|
||||||
printf ("push > %d\n", util_pile_push (&exemple, 2));
|
printf ("push > %d\n", util_pile_push (&exemple, 2));
|
||||||
|
@ -87,35 +88,34 @@ void util_sorted_list_test()
|
||||||
{
|
{
|
||||||
slist *Mysl = NULL;
|
slist *Mysl = NULL;
|
||||||
|
|
||||||
puts("création d'une liste de 9 elements :");
|
puts("\ncréation d'une liste de 10 elements :");
|
||||||
util_sorted_list_insert (&Mysl,9);
|
util_sorted_list_insert (&Mysl,9);
|
||||||
util_sorted_list_insert (&Mysl,8);
|
util_sorted_list_insert (&Mysl,-8);
|
||||||
util_sorted_list_insert (&Mysl,3);
|
util_sorted_list_insert (&Mysl,3);
|
||||||
util_sorted_list_insert (&Mysl,5);
|
util_sorted_list_insert (&Mysl,5);
|
||||||
util_sorted_list_insert (&Mysl,1);
|
util_sorted_list_insert (&Mysl,-1);
|
||||||
util_sorted_list_insert (&Mysl,5);
|
util_sorted_list_insert (&Mysl,4);
|
||||||
|
util_sorted_list_insert (&Mysl,-6);
|
||||||
util_sorted_list_insert (&Mysl,2);
|
util_sorted_list_insert (&Mysl,2);
|
||||||
util_sorted_list_insert (&Mysl,0);
|
util_sorted_list_insert (&Mysl,0);
|
||||||
util_sorted_list_insert (&Mysl,7);
|
util_sorted_list_insert (&Mysl,7);
|
||||||
util_sorted_list_view (Mysl);
|
util_sorted_list_view (Mysl);
|
||||||
|
|
||||||
puts("retrait des 3 premiers elements :");
|
puts("retrait des 3 premiers elements :");
|
||||||
printf("%d\n",util_sorted_list_pop (&Mysl));
|
util_sorted_list_pop (&Mysl);
|
||||||
printf("%d\n",util_sorted_list_pop (&Mysl));
|
util_sorted_list_pop (&Mysl);
|
||||||
printf("%d\n",util_sorted_list_pop (&Mysl));
|
util_sorted_list_pop (&Mysl);
|
||||||
printf("Nb d'elements : %d\n", util_sorted_list_length (Mysl));
|
|
||||||
util_sorted_list_view (Mysl);
|
util_sorted_list_view (Mysl);
|
||||||
|
|
||||||
puts("on vide de la liste puis on ajoute 4 elements :");
|
puts("ajout des 3 elements (8, 1, 6) :");
|
||||||
util_sorted_list_clear (&Mysl);
|
util_sorted_list_insert (&Mysl,8);
|
||||||
util_sorted_list_insert (&Mysl,3);
|
|
||||||
util_sorted_list_insert (&Mysl,1);
|
util_sorted_list_insert (&Mysl,1);
|
||||||
util_sorted_list_insert (&Mysl,9);
|
util_sorted_list_insert (&Mysl,6);
|
||||||
util_sorted_list_insert (&Mysl,5);
|
|
||||||
printf("nb d'elements : %d\n", util_sorted_list_length (Mysl));
|
|
||||||
util_sorted_list_view (Mysl);
|
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue