1
/******************************************/
2
/* Module de gestion de buffer dynamiques */
3
/******************************************/
5
#ifndef _BUFFER_DYNAMIQUES_
6
#define _BUFFER_DYNAMIQUES_
8
#include "../machine.h"
10
/* Macros pour ameliorer la lisibilite */
11
#define gbd_creer_buffer_dynamique_type(type,nb_init,allouer,reallouer,liberer,desallouer) ((type *)gbd_creer_buffer_dynamique(sizeof(type),nb_init,allouer,reallouer,liberer,desallouer))
13
/* Creation d'un buffer dynamique. Le premier parametres correspond
14
a la taille d'un element du buffer dynamique. Le deuxieme indique
15
la taille minimum du buffer. allouer() et liberer sont les methodes
16
d'allocation memoire. desallouer() est la methode appliquee a un
17
element du buffer pour le liberer. */
19
extern void *gbd_creer_buffer_dynamique __PARAMS((long int taille, long int nbre_initial, void *(*allouer)(), void *(*reallouer) (), void (*liberer) (), void (*desallouer) ()));
21
/* Destruction d'un buffer dynamique. */
22
extern int gbd_detruire_buffer_dynamique __PARAMS((void *pointeur_buffer));
24
/* Augmentation de la taille virtuelle du buffer dynamique */
25
extern void *gbd_augmenter_buffer_dynamique __PARAMS((void *pointeur_buffer, long int nombre_elements));
27
/* Diminution de la taille virtuelle du buffer dynamique */
28
extern void *gbd_diminuer_buffer_dynamique __PARAMS((void *pointeur_buffer, long int nombre_elements));
30
/* retourne le nombre d'elements d'un buffer dynamique */
31
extern long gbd_taille_buffer_dynamique __PARAMS((void *pointeur_buffer));
33
/* liberation mixte : essaye de liberer un buffer dynamique. En cas
34
d'echec, applique la methode liberer() au pointeur fourni en
37
extern void gbd_liberer_mixte __PARAMS((void *buffer));