/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Gem-graph client * * * * Finite State Machine (fsm) header * * * * Copyright © 2021 Libre en Communs * * Copyright © 2021 Adrien Bourmault * * Copyright © 2021 Jean Sirmai * * * * This file is part of Gem-graph. * * * * 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 . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #pragma once #include #include #include char *util_read_file (char *filename); //------------------------------------------------------------------------------ // https://chgi.developpez.com/liste/ < ^c^v // Copyright © 2016 CGi. // Aucune reproduction, même partielle, ne peut être faite de ce site // ni de l'ensemble de son contenu : textes, documents, images, etc. // sans l'autorisation expresse de l'auteur. // Sinon vous encourez selon la loi jusqu'à trois ans de prison // et jusqu'à 300 000 € de dommages et intérêts. // 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 valeur; struct pile *prec;} pile; // structure d'un élément int util_pile_push (pile **, int); // empile une valeur sur la pile int util_pile_pop (pile **); // retire la dernière valeur empilée void util_pile_clear (pile **); // vide la pile int util_pile_length (pile *p); // retourne le nombre d'éléments de la pile void util_pile_view (pile *); // affiche la pile en commençant par le sommet //------------------------------------------------------------------------------ typedef struct elem {int value; struct elem *prev; struct elem *next;} elem; typedef struct {elem *first; elem *last;} dblist; // structure d'accès à la liste void util_list_2x2_init (dblist *l); // initialisation int util_list_2x2_push_back (dblist *l, int val); // ajoute une valeur en fin de liste int util_list_2x2_push_front (dblist *l, int val); // ajoute une valeur en début de liste int util_list_2x2_pop_back (dblist *l); // retire une valeur en fin de liste int util_list_2x2_pop_front (dblist *l); // retire une valeur en début de liste int util_list_2x2_length (dblist l); // retourne le nombre d'éléments de la liste void util_list_2x2_view (dblist l); // affiche les valeurs de toute la liste void util_list_2x2_clear (dblist *l); // vide toute la liste //------------------------------------------------------------------------------ void util_pile_test(); void util_double_list_test();