~gabriel1984sibiu/gtk+1.2/gtk+1.2

« back to all changes in this revision

Viewing changes to docs/html/gtk_tut_fr-17.html

  • Committer: Bazaar Package Importer
  • Author(s): Akira TAGOH
  • Date: 2002-04-15 02:19:49 UTC
  • Revision ID: james.westby@ubuntu.com-20020415021949-eh01yrgh4b85p9z7
Tags: upstream-1.2.10
Import upstream version 1.2.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 
2
<HTML>
 
3
<HEAD>
 
4
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 
5
 <TITLE>Didacticiel: glib</TITLE>
 
6
 <LINK HREF="gtk_tut_fr-18.html" REL=next>
 
7
 <LINK HREF="gtk_tut_fr-16.html" REL=previous>
 
8
 <LINK HREF="gtk_tut_fr.html#toc17" REL=contents>
 
9
</HEAD>
 
10
<BODY BGCOLOR="#FFFFFF">
 
11
<A HREF="gtk_tut_fr-18.html">Page suivante</A>
 
12
<A HREF="gtk_tut_fr-16.html">Page pr�c�dente</A>
 
13
<A HREF="gtk_tut_fr.html#toc17">Table des mati�res</A>
 
14
<HR NOSHADE>
 
15
<H2><A NAME="sec_glib"></A> <A NAME="s17">17. glib</A></H2>
 
16
 
 
17
<P>La <EM>glib</EM> fournit de nombreuses fonctions et d�finitions utiles,
 
18
pr�tes � �tre utilis�es lorsqu'on cr�e des applications GDK et GTK. Je
 
19
les �num�rerais toutes avec une br�ve explication. Beaucoup sont des
 
20
r�pliques des fonctions standards de la <EM>libc</EM>, et je ne les
 
21
d�taillerais donc pas trop. Ceci doit surtout servir de r�f�rence afin
 
22
de savoir ce qui est disponible pour �tre utilis�.
 
23
<P>
 
24
<H2><A NAME="ss17.1">17.1 D�finitions</A>
 
25
</H2>
 
26
 
 
27
<P>Les d�finitions pour les bornes de la plupart des types standards sont&nbsp;:
 
28
<P>
 
29
<BLOCKQUOTE><CODE>
 
30
<PRE>
 
31
G_MINFLOAT
 
32
G_MAXFLOAT
 
33
G_MINDOUBLE
 
34
G_MAXDOUBLE
 
35
G_MINSHORT
 
36
G_MAXSHORT
 
37
G_MININT
 
38
G_MAXINT
 
39
G_MINLONG
 
40
G_MAXLONG
 
41
</PRE>
 
42
</CODE></BLOCKQUOTE>
 
43
<P>Voici aussi les red�finitions de types. Celles qui ne sont pas
 
44
sp�cifi�es sont configur�es dynamiquement selon l'architecture. �vitez
 
45
surtout de compter sur la taille d'un pointeur si vous voulez un
 
46
programme portable ! Un pointeur sur un Alpha fait 8 octets, mais il
 
47
en fait 4 sur un Intel.
 
48
<P>
 
49
<BLOCKQUOTE><CODE>
 
50
<PRE>
 
51
char   gchar;
 
52
short  gshort;
 
53
long   glong;
 
54
int    gint;
 
55
char   gboolean;
 
56
 
 
57
unsigned char   guchar;
 
58
unsigned short  gushort;
 
59
unsigned long   gulong;
 
60
unsigned int    guint;
 
61
 
 
62
float   gfloat;
 
63
double  gdouble;
 
64
long double gldouble;
 
65
 
 
66
void* gpointer;
 
67
 
 
68
gint8
 
69
guint8
 
70
gint16
 
71
guint16
 
72
gint32
 
73
guint32
 
74
</PRE>
 
75
</CODE></BLOCKQUOTE>
 
76
<P>
 
77
<H2><A NAME="ss17.2">17.2 Listes doublement cha�n�es</A>
 
78
</H2>
 
79
 
 
80
<P>Les fonctions suivantes servent � cr�er, g�rer et d�truire des listes
 
81
doublement cha�n�es. Je suppose que vous savez ce qu'est une liste
 
82
cha�n�e car leur explication n'entre pas dans le cadre de ce
 
83
document. Bien s�r, il n'y a pas besoin de les conna�tre pour une
 
84
utilisation g�n�rale de GTK, mais c'est bien de savoir comment elles
 
85
fonctionnent.
 
86
<P>
 
87
<BLOCKQUOTE><CODE>
 
88
<PRE>
 
89
GList* g_list_alloc       (void);
 
90
 
 
91
void   g_list_free        (GList     *list);
 
92
 
 
93
void   g_list_free_1      (GList     *list);
 
94
 
 
95
GList* g_list_append      (GList     *list,
 
96
                           gpointer   data);
 
97
                           
 
98
GList* g_list_prepend     (GList     *list,
 
99
                           gpointer   data);
 
100
                        
 
101
GList* g_list_insert      (GList     *list,
 
102
                           gpointer   data,
 
103
                           gint       position);
 
104
 
 
105
GList* g_list_remove      (GList     *list,
 
106
                           gpointer   data);
 
107
                           
 
108
GList* g_list_remove_link (GList     *list,
 
109
                           GList     *link);
 
110
 
 
111
GList* g_list_reverse     (GList     *list);
 
112
 
 
113
GList* g_list_nth         (GList     *list,
 
114
                           gint       n);
 
115
                           
 
116
GList* g_list_find        (GList     *list,
 
117
                           gpointer   data);
 
118
 
 
119
GList* g_list_last        (GList     *list);
 
120
 
 
121
GList* g_list_first       (GList     *list);
 
122
 
 
123
gint   g_list_length      (GList     *list);
 
124
 
 
125
void   g_list_foreach     (GList     *list,
 
126
                           GFunc      func,
 
127
                           gpointer   user_data);
 
128
</PRE>
 
129
</CODE></BLOCKQUOTE>
 
130
                                              
 
131
<P>
 
132
<P>
 
133
<H2><A NAME="ss17.3">17.3 Listes simplement cha�n�es</A>
 
134
</H2>
 
135
 
 
136
<P>La plupart des fonctions pour les listes simplement cha�n�es
 
137
ci-dessous sont identiques � celles vues plus haut. Voici une liste
 
138
compl�te&nbsp;:
 
139
<P>
 
140
<BLOCKQUOTE><CODE>
 
141
<PRE>
 
142
GSList* g_slist_alloc       (void);
 
143
 
 
144
void    g_slist_free        (GSList   *list);
 
145
 
 
146
void    g_slist_free_1      (GSList   *list);
 
147
 
 
148
GSList* g_slist_append      (GSList   *list,
 
149
                             gpointer  data);
 
150
                
 
151
GSList* g_slist_prepend     (GSList   *list,
 
152
                             gpointer  data);
 
153
                             
 
154
GSList* g_slist_insert      (GSList   *list,
 
155
                             gpointer  data,
 
156
                             gint      position);
 
157
                             
 
158
GSList* g_slist_remove      (GSList   *list,
 
159
                             gpointer  data);
 
160
                             
 
161
GSList* g_slist_remove_link (GSList   *list,
 
162
                             GSList   *link);
 
163
                             
 
164
GSList* g_slist_reverse     (GSList   *list);
 
165
 
 
166
GSList* g_slist_nth         (GSList   *list,
 
167
                             gint      n);
 
168
                             
 
169
GSList* g_slist_find        (GSList   *list,
 
170
                             gpointer  data);
 
171
                             
 
172
GSList* g_slist_last        (GSList   *list);
 
173
 
 
174
gint    g_slist_length      (GSList   *list);
 
175
 
 
176
void    g_slist_foreach     (GSList   *list,
 
177
                             GFunc     func,
 
178
                             gpointer  user_data);
 
179
        
 
180
</PRE>
 
181
</CODE></BLOCKQUOTE>
 
182
<P>
 
183
<H2><A NAME="ss17.4">17.4 Gestion de la m�moire</A>
 
184
</H2>
 
185
 
 
186
<P>
 
187
<BLOCKQUOTE><CODE>
 
188
<PRE>
 
189
gpointer g_malloc      (gulong    size);
 
190
</PRE>
 
191
</CODE></BLOCKQUOTE>
 
192
<P>Remplace <EM>malloc()</EM>.  On n'a pas besoin de v�rifier la valeur de
 
193
retour car cela est fait pour nous dans cette fonction.
 
194
<P>
 
195
<BLOCKQUOTE><CODE>
 
196
<PRE>
 
197
gpointer g_malloc0     (gulong    size);
 
198
</PRE>
 
199
</CODE></BLOCKQUOTE>
 
200
<P>Identique � la pr�c�dente, mais initialise la m�moire � z�ro avant de
 
201
retourner un pointeur vers la zone r�serv�e.
 
202
<P>
 
203
<BLOCKQUOTE><CODE>
 
204
<PRE>
 
205
gpointer g_realloc     (gpointer  mem,
 
206
                        gulong    size);
 
207
</PRE>
 
208
</CODE></BLOCKQUOTE>
 
209
<P>R�alloue <EM>size</EM> octets de m�moire � partir de <EM>mem</EM>. �videmment,
 
210
la m�moire doit avoir �t� allou�e auparavant.
 
211
<P>
 
212
<BLOCKQUOTE><CODE>
 
213
<PRE>
 
214
void     g_free        (gpointer  mem);
 
215
</PRE>
 
216
</CODE></BLOCKQUOTE>
 
217
<P>Lib�re la m�moire. Facile.
 
218
<P>
 
219
<BLOCKQUOTE><CODE>
 
220
<PRE>
 
221
void     g_mem_profile (void);
 
222
</PRE>
 
223
</CODE></BLOCKQUOTE>
 
224
<P>Produit un profil de la m�moire utilis�e, mais requiert l'ajout de
 
225
<EM>#define MEM_PROFILE</EM> au d�but de <EM>glib/gmem.c</EM>,
 
226
de refaire un <EM>make</EM> et un <EM>make install</EM>.
 
227
<P>
 
228
<BLOCKQUOTE><CODE>
 
229
<PRE>
 
230
void     g_mem_check   (gpointer  mem);
 
231
</PRE>
 
232
</CODE></BLOCKQUOTE>
 
233
<P>V�rifie qu'un emplacement m�moire est valide. N�cessite que l'on
 
234
ajoute <EM>#define MEM_CHECK</EM> au d�but de <EM>gmem.c</EM> que l'on refasse
 
235
un <EM>make</EM> et un <EM>make install</EM>.
 
236
<P>
 
237
<H2><A NAME="ss17.5">17.5 Timers</A>
 
238
</H2>
 
239
 
 
240
<P>Fonctions des timers...
 
241
<P>
 
242
<BLOCKQUOTE><CODE>
 
243
<PRE>
 
244
GTimer* g_timer_new     (void);
 
245
 
 
246
void    g_timer_destroy (GTimer  *timer);
 
247
 
 
248
void    g_timer_start   (GTimer  *timer);
 
249
 
 
250
void    g_timer_stop    (GTimer  *timer);
 
251
 
 
252
void    g_timer_reset   (GTimer  *timer);
 
253
 
 
254
gdouble g_timer_elapsed (GTimer  *timer,
 
255
                         gulong  *microseconds);
 
256
</PRE>
 
257
</CODE></BLOCKQUOTE>
 
258
                         
 
259
<P>
 
260
<H2><A NAME="ss17.6">17.6 Gestion des cha�nes</A>
 
261
</H2>
 
262
 
 
263
<P>Un ensemble complet de fonction de gestion des cha�nes. Elles semblent
 
264
toutes tr�s int�ressantes et sont s�rement meilleures, � bien des
 
265
�gards, que les fonctions C standards, mais elle n�cessitent de la
 
266
documentation.
 
267
<P>
 
268
<BLOCKQUOTE><CODE>
 
269
<PRE>
 
270
GString* g_string_new       (gchar   *init);
 
271
void     g_string_free      (GString *string,
 
272
                             gint     free_segment);
 
273
                             
 
274
GString* g_string_assign    (GString *lval,
 
275
                             gchar   *rval);
 
276
                             
 
277
GString* g_string_truncate  (GString *string,
 
278
                             gint     len);
 
279
                             
 
280
GString* g_string_append    (GString *string,
 
281
                             gchar   *val);
 
282
                            
 
283
GString* g_string_append_c  (GString *string,
 
284
                             gchar    c);
 
285
        
 
286
GString* g_string_prepend   (GString *string,
 
287
                             gchar   *val);
 
288
                             
 
289
GString* g_string_prepend_c (GString *string,
 
290
                             gchar    c);
 
291
        
 
292
void     g_string_sprintf   (GString *string,
 
293
                             gchar   *fmt,
 
294
                             ...);
 
295
        
 
296
void     g_string_sprintfa  (GString *string,
 
297
                             gchar   *fmt,
 
298
                             ...);
 
299
</PRE>
 
300
</CODE></BLOCKQUOTE>
 
301
                                                          
 
302
<P>
 
303
<H2><A NAME="ss17.7">17.7 Utilitaires et fonctions d'erreurs</A>
 
304
</H2>
 
305
 
 
306
<P>
 
307
<BLOCKQUOTE><CODE>
 
308
<PRE>
 
309
gchar* g_strdup    (const gchar *str);
 
310
</PRE>
 
311
</CODE></BLOCKQUOTE>
 
312
<P>Remplace la fonction <EM>strdup</EM>. Elle copie le contenu de la cha�ne
 
313
d'origine dans la m�moire venant d'�tre allou�e et retourne un
 
314
pointeur sur cette zone.
 
315
<P>
 
316
<BLOCKQUOTE><CODE>
 
317
<PRE>
 
318
gchar* g_strerror  (gint errnum);
 
319
</PRE>
 
320
</CODE></BLOCKQUOTE>
 
321
<P>Je recommande de l'utiliser pour tous les messages d'erreur. Elle est
 
322
beaucoup plus propre et plus portable que <EM>perror()</EM> ou les
 
323
autres. La sortie est habituellement de la forme&nbsp;:
 
324
<P>
 
325
<BLOCKQUOTE><CODE>
 
326
<PRE>
 
327
nom du programme:fonction qui a �chou�:fichier ou autre descripteur:strerror
 
328
</PRE>
 
329
</CODE></BLOCKQUOTE>
 
330
<P>Voici un exemple d'appel utilis� dans le programme � Bonjour tout le monde ! �&nbsp;:
 
331
<P>
 
332
<BLOCKQUOTE><CODE>
 
333
<PRE>
 
334
g_print("bonjour_monde:open:%s:%s\n", filename, g_strerror(errno));
 
335
</PRE>
 
336
</CODE></BLOCKQUOTE>
 
337
<P>
 
338
<BLOCKQUOTE><CODE>
 
339
<PRE>
 
340
void g_error   (gchar *format, ...);
 
341
</PRE>
 
342
</CODE></BLOCKQUOTE>
 
343
<P>Affiche un message d'erreur. Le format est comme <EM>printf</EM>, mais il
 
344
ajoute � ** ERROR **: � au d�but du message et sort du programme. �
 
345
n'utiliser que pour les erreurs fatales.
 
346
<P>
 
347
<BLOCKQUOTE><CODE>
 
348
<PRE>
 
349
void g_warning (gchar *format, ...);
 
350
</PRE>
 
351
</CODE></BLOCKQUOTE>
 
352
<P>Comme au dessus, mais ajoute � ** WARNING **: �, et ne termine pas le
 
353
programme.
 
354
<P>
 
355
<BLOCKQUOTE><CODE>
 
356
<PRE>
 
357
void g_message (gchar *format, ...);
 
358
</PRE>
 
359
</CODE></BLOCKQUOTE>
 
360
 
 
361
Affiche  � message: � avant la cha�ne pass�e en param�tre.
 
362
<P>
 
363
<BLOCKQUOTE><CODE>
 
364
<PRE>
 
365
void g_print   (gchar *format, ...);
 
366
</PRE>
 
367
</CODE></BLOCKQUOTE>
 
368
<P>Remplace <EM>printf()</EM>.
 
369
<P>Enfin la derni�re fonction&nbsp;:
 
370
<P>
 
371
<BLOCKQUOTE><CODE>
 
372
<PRE>
 
373
gchar* g_strsignal (gint signum);
 
374
</PRE>
 
375
</CODE></BLOCKQUOTE>
 
376
<P>Affiche le nom du signal syst�me Unix correspondant au num�ro de
 
377
signal. Utile pour les fonctions g�n�riques de gestion de signaux.
 
378
<P>Tout ce qui est ci-dessus est plus ou moins vol� � <EM>glib.h</EM>. Si
 
379
quelqu'un s'occupe de documenter une fonction, qu'il m'envoit un
 
380
courrier !
 
381
<P>
 
382
<P>
 
383
<HR NOSHADE>
 
384
<A HREF="gtk_tut_fr-18.html">Page suivante</A>
 
385
<A HREF="gtk_tut_fr-16.html">Page pr�c�dente</A>
 
386
<A HREF="gtk_tut_fr.html#toc17">Table des mati�res</A>
 
387
</BODY>
 
388
</HTML>