My Project
Chargement...
Recherche...
Aucune correspondance
listetaches.c
Aller à la documentation de ce fichier.
1/*----------------------------------------------------------------------------*/
2/* Implantation des sous-programmes de gestion des listes de taches. */
3/* */
4/* (C) Manu Chaput 2000 */
5/*----------------------------------------------------------------------------*/
6#include <manux/listetaches.h>
7#include <manux/tache.h>
8#include <manux/debug.h> /* assert */
9#include <manux/memoire.h> /* NULL */
10
12{
13 listeTache->tete = NULL;
14 listeTache->queue = NULL;
15}
16
18 Tache * tache,
19 CelluleTache * celluleTache)
20{
21 assert(listeTaches != NULL);
22 assert(tache != NULL);
23 assert(celluleTache != NULL);
24
25 celluleTache->tache = tache;
26
27 celluleTache->suivant = NULL;
28
29 /* L'élément se retrouve aprés l'actuel dernier */
30 if (listeTaches->queue != NULL) {
31 listeTaches->queue->suivant = celluleTache;
32 }
33
34 /* L'élément inséré se retrouve à la fin */
35 listeTaches->queue = celluleTache;
36
37 /* Si la liste était vide, il se retrouve aussi en tête */
38 if (listeTaches->tete == NULL) {
39 listeTaches->tete = celluleTache;
40 }
41
42 assert(listeTaches->tete != NULL);
43 assert(listeTaches->queue->tache == tache);
44}
45
47{
48 CelluleTache * celluleTache;
49
50 celluleTache = listeTaches->tete;
51
52 /* Si c'est la dernière */
53 if (celluleTache == listeTaches->queue) {
54 listeTaches->queue = NULL;
55 }
56
57 /* On sort la cellule de la liste et on la renvoie */
58 if (celluleTache != NULL) {
59 listeTaches->tete = celluleTache->suivant;
60 return celluleTache->tache;
61 }
62
63 /* Si on est encore là, c'est que la liste est vide */
64 return NULL;
65}
66
#define NULL
Definition stddef.h:10
Tache * extraireTache(ListeTache *listeTaches)
Definition listetaches.c:46
void initialiserListeTache(ListeTache *listeTache)
Definition listetaches.c:11
void insererCelluleTache(ListeTache *listeTaches, Tache *tache, CelluleTache *celluleTache)
Definition listetaches.c:17
#define assert(cond)
Definition debug.h:126
struct _Tache * tache
Definition listetaches.h:14
struct _CelluleTache * suivant
Definition listetaches.h:15
CelluleTache * tete
Definition listetaches.h:19
CelluleTache * queue
Definition listetaches.h:20
: Définition du type décrivant une tache.
Definition tache.h:83