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
|
||||
|
||||
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,
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include <stddef.h>
|
||||
#include <gtk-4.0/gtk/gtk.h>
|
||||
|
||||
#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(); // " "
|
||||
|
||||
|
|
|
@ -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" };
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
/******************************************************************************/
|
||||
/* */
|
||||
/* FFFFFFFFFFFF SSSSS MM MM */
|
||||
/* FFFFFFFFFFF SSSSS MM MM */
|
||||
/* FF SSS SS MMMM MMMM */
|
||||
/* FF 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
|
||||
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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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 ("------");
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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));
|
||||
|
@ -87,35 +88,34 @@ void util_sorted_list_test()
|
|||
{
|
||||
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,8);
|
||||
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,-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_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);
|
||||
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,9);
|
||||
util_sorted_list_insert (&Mysl,5);
|
||||
printf("nb d'elements : %d\n", util_sorted_list_length (Mysl));
|
||||
util_sorted_list_insert (&Mysl,6);
|
||||
util_sorted_list_view (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