Projet Informatique Théorique 2016
Instructions et Documentation
table.h
Aller à la documentation de ce fichier.
1 /*
2  * Ce fichier fait partie d'un projet de programmation donné en Licence 3
3  * à l'Université de Bordeaux.
4  *
5  * Copyright (C) 2014 Adrien Boussicault
6  *
7  * This Library is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This Library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this Library. If not, see <http://www.gnu.org/licenses/>.
19  */
20 
23 #ifndef __TABLE_H__
24 #define __TABLE_H__
25 
26 #include <stdint.h>
27 #include "avl.h"
28 
37 typedef struct Table Table;
38 
43 
148  int (*comparer_cle)( const intptr_t cle1, const intptr_t cle2),
149  intptr_t (*copier_cle)( const intptr_t cle ),
150  void (*supprimer_cle)(intptr_t cle)
151 );
152 
161 void liberer_table( Table* table );
162 
177 void add_table( Table* table, const intptr_t cle, const intptr_t valeur );
178 
179 
189 intptr_t delete_table( Table* table, const intptr_t cle );
190 
191 
196 void vider_table( Table* table );
197 
206 void print_table(
207  Table* table, void (*print_cle)( const intptr_t cle ),
208  void (*print_valeur)( const intptr_t valeur ),
209  const char* text_de_fin
210 );
211 
228  const Table* table,
229  void (*action)(intptr_t valeur )
230 );
231 
232 
247  const Table* table,
248  void (* action)( const intptr_t cle, intptr_t valeur, void* data ),
249  void* data
250 );
251 
258 Table_iterateur trouver_table( const Table* table, const intptr_t cle );
259 
268 
284 
300 
306 int iterateur_est_vide( Table_iterateur iterator );
307 
312 intptr_t get_cle( Table_iterateur it );
313 
318 intptr_t get_valeur( Table_iterateur it );
319 
324 int taille_table( Table* t );
325 
326 #endif
void vider_table(Table *table)
Supprime toutes les clés de la table.
Definition: table.c:201
Table_iterateur premier_iterateur_table(const Table *table)
Renvoie un itérateur positionné sur la première association de la table.
Definition: table.c:251
intptr_t get_cle(Table_iterateur it)
Renvoie la clé de l'association pointée par l'itérateur passé en paramètre.
Definition: table.c:47
int taille_table(Table *t)
Renvoie la taille de la table.
Definition: table.c:279
void pour_toute_cle_valeur_table(const Table *table, void(*action)(const intptr_t cle, intptr_t valeur, void *data), void *data)
La fonction passe en revue toutes les associaitons (clé, valeur) de la table, et apelle la fonction p...
Definition: table.c:169
void liberer_table(Table *table)
Cette fonction détruit une table. La mémoire qui a été allouée par la table pour stocker les clés son...
Definition: table.c:131
intptr_t delete_table(Table *table, const intptr_t cle)
Supprime une clé de la table. La mémoire de la clé est libérée et la valeur associée à la clé est per...
Definition: table.c:150
Table_iterateur iterateur_suivant_table(Table_iterateur iterator)
Renvoie l'itérateur suivant.
Definition: table.c:269
intptr_t get_valeur(Table_iterateur it)
Renvoie la valeur de l'association pointée par l'itérateur passé en paramètre.
Definition: table.c:52
void pour_toute_valeur_table(const Table *table, void(*action)(intptr_t valeur))
La fonction passe en revue toutes les valeurs de la table passée en paramètre et apelle la fonction p...
Definition: table.c:192
void print_table(Table *table, void(*print_cle)(const intptr_t cle), void(*print_valeur)(const intptr_t valeur), const char *text_de_fin)
Affiche la table. Vous devez donner en paramètres de print_table, des fonctions pour afficher les clé...
Definition: table.c:227
Table_iterateur iterateur_precedent_table(Table_iterateur iterator)
Renvoie l'itérateur précédent.
Definition: table.c:274
int iterateur_est_vide(Table_iterateur iterator)
Renvoie 1 si l'itérateur passé en paramètre est vide. Renvoie 0 sinon.
Definition: table.c:265
Table_iterateur trouver_table(const Table *table, const intptr_t cle)
Renvoie un itérateur positionné sur l'association dont la clé est identique (pour la fonction de comp...
Definition: table.c:241
Definition: table.c:39
Table * creer_table(int(*comparer_cle)(const intptr_t cle1, const intptr_t cle2), intptr_t(*copier_cle)(const intptr_t cle), void(*supprimer_cle)(intptr_t cle))
Renvoie une nouvelle table.
Definition: table.c:117
void add_table(Table *table, const intptr_t cle, const intptr_t valeur)
La fonction add_table() ajoute une association entre une clé et une valeur. Pour cela, add_table(), crée une copie de la clé passée en paramètre, l'enregistre dans la table et l'associe à la valeur passée en paramètre. La mémoire de la copie de la clé est gérée par la table. La mémoire de la clé passée en paramètre reste à la charge de l'utilisateur.
Definition: table.c:137