gestion de tas d'éléments à taille fixe.
Plus de détails...
#include "fixed_heap.h"
#include <stdlib.h>
#include <assert.h>
Aller au code source de ce fichier.
|
static fheap_t | _newheap (size_t nmem, size_t size) |
|
static void | _moreheap (fheap_t *h) |
|
static void | _push (size_t *stack, size_t *head, size_t value) |
|
static size_t | _pop (size_t *stack, size_t *head) |
|
static int | _empty (size_t head) |
|
size_t | fheapCreate (size_t nmem, size_t size) |
| créé un tas de nmem éléments de taille size et retourne son id (<>0). Plus de détails...
|
|
size_t | fheapPut (size_t heap_id, void *element) |
| insert, en copiant le contenu, un élément dans le tas et retourne son id (<>0). Plus de détails...
|
|
void * | fheapGet (size_t heap_id, size_t element_id) |
| récupère un élément du tas et retourne le pointeur vers la donnée. Attention, cette fonction n'efface pas la donnée du tas. Plus de détails...
|
|
void | fheapDelete (size_t heap_id, size_t element_id) |
| libère une donnée du tas (étiquette une donnée du tas comme espace libre). Plus de détails...
|
|
void | fheapDestroy (size_t heap_id) |
| libère l'ensemble du tas et sa mémoire. Plus de détails...
|
|
void | fheapClean (void) |
| libère tous les tas créés par cette bibliothèque. Plus de détails...
|
|
gestion de tas d'éléments à taille fixe.
- Auteur
- Farès BELHADJ amsi@.nosp@m.ai.u.nosp@m.niv-p.nosp@m.aris.nosp@m.8.fr
- Date
- November 30, 2016
Définition dans le fichier fixed_heap.c.
◆ fheap_t
◆ _empty()
static int _empty |
( |
size_t |
head | ) |
|
|
inlinestatic |
◆ _moreheap()
static void _moreheap |
( |
fheap_t * |
h | ) |
|
|
static |
◆ _newheap()
static fheap_t _newheap |
( |
size_t |
nmem, |
|
|
size_t |
size |
|
) |
| |
|
static |
◆ _pop()
static size_t _pop |
( |
size_t * |
stack, |
|
|
size_t * |
head |
|
) |
| |
|
inlinestatic |
◆ _push()
static void _push |
( |
size_t * |
stack, |
|
|
size_t * |
head, |
|
|
size_t |
value |
|
) |
| |
|
inlinestatic |
◆ fheapClean()
◆ fheapCreate()
size_t fheapCreate |
( |
size_t |
nmem, |
|
|
size_t |
size |
|
) |
| |
créé un tas de nmem éléments de taille size et retourne son id (<>0).
- Paramètres
-
nmem | nombre initial d'éléments dans le tas. |
size | taille, en octets, d'éléments du tas. |
- Renvoie
- identifiant du tas créé (différent de 0).
Références _empty(), _heap, _moreheap(), _newheap(), _pop(), fheapClean(), gl4duAtExit(), fheap_t::head, fheap_t::heap, fheap_t::nmem, fheap_t::size, et fheap_t::stack.
◆ fheapDelete()
void fheapDelete |
( |
size_t |
heap_id, |
|
|
size_t |
element_id |
|
) |
| |
libère une donnée du tas (étiquette une donnée du tas comme espace libre).
- Paramètres
-
heap_id | identifiant du tas duquel la donnée est libérée. |
element_id | identifiant de la donnée à libérer. |
Références _heap, _push(), fheap_t::head, fheap_t::heap, et fheap_t::stack.
◆ fheapDestroy()
void fheapDestroy |
( |
size_t |
heap_id | ) |
|
◆ fheapGet()
void* fheapGet |
( |
size_t |
heap_id, |
|
|
size_t |
element_id |
|
) |
| |
récupère un élément du tas et retourne le pointeur vers la donnée. Attention, cette fonction n'efface pas la donnée du tas.
- Paramètres
-
heap_id | identifiant du tas duquel est extraite la donnée. |
element_id | identifiant de la donnée à extraire. |
- Renvoie
- pointeur vers la donnée extraite.
74 return &(h->
heap[--element_id * h->
size]);
Références _heap, fheap_t::heap, et fheap_t::size.
◆ fheapPut()
size_t fheapPut |
( |
size_t |
heap_id, |
|
|
void * |
element |
|
) |
| |
insert, en copiant le contenu, un élément dans le tas et retourne son id (<>0).
- Paramètres
-
heap_id | identifiant du tas dans lequel se passe l'insertion. |
element | pointeur vers la donnée à insérer (copier). |
- Renvoie
- identifiant de l'élément inséré dans le tas (différent de 0).
62 memcpy(&(h->
heap[(element_id - 1) * h->
size]), element, h->
size);
Références _empty(), _heap, _moreheap(), _pop(), fheap_t::head, fheap_t::heap, fheap_t::size, et fheap_t::stack.
◆ _heap
fheap_t _heap = { 16, sizeof _heap, NULL, NULL, 0 } |
|
static |