-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathliste.h
168 lines (143 loc) · 5.49 KB
/
liste.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
/**
* @file liste.h
* @author meo ([email protected])
* @brief fichier de mise en oeuvre de la liste
* @version 0.1
* @date 2022-10-03
*
* @copyright Copyright (c) 2022
*
*/
#ifndef LISTE_H
#define LISTE_H
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct element_liste_int{
int val;
struct element_liste_int *suivant;
struct element_liste_int *precedent;
}t_element_liste_int;
typedef struct element_liste_char{
char val;
struct element_liste_char *suivant;
struct element_liste_char *precedent;
}t_element_liste_char;
typedef struct element_liste_float{
float val;
struct element_liste_float *suivant;
struct element_liste_float *precedent;
}t_element_liste_float;
typedef struct element_liste_double{
double val;
struct element_liste_double *suivant;
struct element_liste_double *precedent;
}t_element_liste_double;
typedef struct element_liste_long{
long val;
struct element_liste_long *suivant;
struct element_liste_long *precedent;
}t_element_liste_long;
typedef struct element_liste_bool{
bool val;
struct element_liste_bool *suivant;
struct element_liste_bool *precedent;
}t_element_liste_bool;
typedef struct element_liste_string{
char *val;
struct element_liste_string *suivant;
struct element_liste_string *precedent;
}t_element_liste_string;
typedef enum type_liste{
LISTE_INT,
LISTE_CHAR,
LISTE_FLOAT,
LISTE_DOUBLE,
LISTE_LONG,
LISTE_BOOL,
LISTE_STRING
}t_type_liste;
typedef union type_liste_union{
t_element_liste_int *liste_int;
t_element_liste_char *liste_char;
t_element_liste_float *liste_float;
t_element_liste_double *liste_double;
t_element_liste_long *liste_long;
t_element_liste_bool *liste_bool;
t_element_liste_string *liste_string;
}t_type_liste_union;
typedef struct liste{
void * debut_liste;
void * fin_liste;
void * element_courant;
void (*precedent)(struct liste *);
void (*suivant)(struct liste *);
void (*valeur_elt)(struct liste *, void *);
void (*modif_elt)(struct liste *, void *);
void (*oter_elt)(struct liste *);
void (*ajout_droit)(struct liste *, void *);
void (*ajout_gauche)(struct liste *, void *);
t_type_liste type;
}t_liste;
extern t_liste * creer_liste(t_type_liste type);
extern bool liste_vide(t_liste * liste);
extern bool hors_liste(t_liste * liste);
extern void en_tete(t_liste * liste);
extern void en_queue(t_liste * liste);
extern void precedent(t_liste * liste);
extern void suivant(t_liste * liste);
extern void valeur_elt(t_liste * liste, void * val);
extern void modif_elt(t_liste * liste, void * val);
extern void oter_elt(t_liste * liste);
extern void ajout_droit(t_liste * liste, void * val);
extern void ajout_gauche(t_liste * liste, void * val);
static void precedent_int(t_liste * liste);
static void precedent_char(t_liste * liste);
static void precedent_float(t_liste * liste);
static void precedent_double(t_liste * liste);
static void precedent_long(t_liste * liste);
static void precedent_bool(t_liste * liste);
static void precedent_string(t_liste * liste);
static void suivant_int(t_liste * liste);
static void suivant_char(t_liste * liste);
static void suivant_float(t_liste * liste);
static void suivant_double(t_liste * liste);
static void suivant_long(t_liste * liste);
static void suivant_bool(t_liste * liste);
static void suivant_string(t_liste * liste);
static void valeur_elt_int(t_liste * liste, void * val);
static void valeur_elt_char(t_liste * liste, void * val);
static void valeur_elt_float(t_liste * liste, void * val);
static void valeur_elt_double(t_liste * liste, void * val);
static void valeur_elt_long(t_liste * liste, void * val);
static void valeur_elt_bool(t_liste * liste, void * val);
static void valeur_elt_string(t_liste * liste, void * val);
static void modif_elt_int(t_liste * liste, void * val);
static void modif_elt_char(t_liste * liste, void * val);
static void modif_elt_float(t_liste * liste, void * val);
static void modif_elt_double(t_liste * liste, void * val);
static void modif_elt_long(t_liste * liste, void * val);
static void modif_elt_bool(t_liste * liste, void * val);
static void modif_elt_string(t_liste * liste, void * val);
static void oter_elt_int(t_liste * liste);
static void oter_elt_char(t_liste * liste);
static void oter_elt_float(t_liste * liste);
static void oter_elt_double(t_liste * liste);
static void oter_elt_long(t_liste * liste);
static void oter_elt_bool(t_liste * liste);
static void oter_elt_string(t_liste * liste);
static void ajout_droit_int(t_liste * liste, void * val);
static void ajout_droit_char(t_liste * liste, void * val);
static void ajout_droit_float(t_liste * liste, void * val);
static void ajout_droit_double(t_liste * liste, void * val);
static void ajout_droit_long(t_liste * liste, void * val);
static void ajout_droit_bool(t_liste * liste, void * val);
static void ajout_droit_string(t_liste * liste, void * val);
static void ajout_gauche_int(t_liste * liste, void * val);
static void ajout_gauche_char(t_liste * liste, void * val);
static void ajout_gauche_float(t_liste * liste, void * val);
static void ajout_gauche_double(t_liste * liste, void * val);
static void ajout_gauche_long(t_liste * liste, void * val);
static void ajout_gauche_bool(t_liste * liste, void * val);
static void ajout_gauche_string(t_liste * liste, void * val);
#endif