: fonction qui realise la desallocation de memoire pour la structure
.LP
.RS-3
.INB
: une racine contient un pointeur librement utilisable par l'utilisateur (
.BUser
).
.LP
.RS-3
.BNDT_DataStruct_Type
.LP
.RS3
Ce type definit sur un entier long le type de chainage de la structure de donnees :
.LP
.RS3
-
.BNDD_DS_LIST
: liste chainee
.LP
-
.BNDD_DS_TREE
: arbre binaire
.RS-3
.LP
et son mode de gestion :
.RS3
.LP
-
.BNDD_MN_FIFO
(ou
.BNDD_MN_LILO
) : principe de la file d'attente (First In First Out)
.LP
-
.BNDD_MN_FILO
(ou
.BNDD_MN_LIFO
) : principe de la pile (First In Last Out)
.LP
-
.BNDD_MN_ORDERED
: ordonnancement des valeurs (liste triee).
Losque deux noeuds ont la meme valeur, ils seront ordonnes dans l'ordre chronologique d'insertion.
.LP
Toutefois, l'utilisateur pourra combiner par addition binaire les types
.BNDD_MN_ORDERED
et
.BNDD_MN_FILO
afin que deux noeuds de meme valeur soient ordonnes dans l'ordre inverse.
.LP
-
.BNDD_MN_AUTO_EQU
: auto-equilibre (arbre)
.RS-3
.LP
Les valeurs NDD_DS* et NDD_MN* peuvent etre utilisees de maniere combinee par addition binaire.
.LP
.IExemple
:
.LP
Mon_Type =
.BNDD_DS_LIST
|
.BNDD_MN_ORDERED
;
.LP
Mon_Type =
.BNDD_DS_TREE
|
.BNDD_MN_AUTO_EQU
;
.LP
Des valeurs "masque" permettent de ne recuperer que l'une des deux parties du type :
.LP
.RS3
-
.BNDD_DS_MSK
: masque sur le type de chainage
.LP
-
.BNDD_MN_MSK
: masque sur le mode de gestion
.LP
.RS-3
.IExemple
:
.LP
(Mon_Type &
.BNDD_DS_MSK
) renverra la valeur
.BNDD_DS_LIST
ou
.BNDD_DS_TREE
.
.LP
(Mon_Type &
.BNDD_MN_MSK
) renverra l'une des valeurs
.BNDD_MN_FILO
,
.BNDD_MN_FIFO
,
.BNDD_MN_ORDERED
ou
.BNDD_MN_AUTO_EQU
.
.LP
.RS-3
.BINDT_Node
.LP
.RS3
Designe le type d'un noeud
.LP
Il s'agit d'une structure qui permet aux noeuds d'etre relies les uns aux autres :
.LP
.RS3
- pointeur sur le noeud droite (
.BRight
)
.LP
- pointeur sur le noeud gauche (
.BLeft
)
.RS-3
.LP
Pour une structure de type arbre, chaque noeud pointe aussi sur son noeud pere (
.BParent
).
Chaque noeud possede enfin un pointeur sur sa structure racine (
.BRoot
).
.LP
A chaque noeud sera associee une valeur dont l'utilisateur de la librairie devra lui meme definir le type.
.RS-3
.LP
.BINDT_Value
.LP
.RS3
Designe le type d'une valeur attachee a un noeud. Ce type sera surcharge par celui defini par l'utilisateur.
.LP
.RS-3
.BINDT_Manager
.LP
.RS3
Designe le type d'une fonction manager.
.LP
Une fonction manager est attachee a la racine de la structure via son nom et permet d'executer des commandes (voir
.BNDT_Command
) specifiques sur la structure ou sur ses valeurs.
.LP
L'implementation des ces commandes est a definir par l'utilisateur lui-meme.
.LP
Le premier argument d'une fonction manager correspond toujours au type de la commande a executer.
.LP
Les autres arguments dependent bien evidemment de la commande a executer.
.LP
Une fonction manager doit etre executee via la fonction
.BNDT_Manager_Exec
(voir FONCTIONS).
.LP
.RS-3
.BINDT_Command
.LP
.RS3
Designe le type d'une commande pouvant etre executee par le manager :
.RS3
.LP
-
.BNDD_CMD_COMP_VALUE
: comparaison de valeurs
.LP
-
.BNDD_CMD_MAKE_VALUE
: creation de valeur
.LP
-
.BNDD_CMD_PRINT_VALUE
: affichage de valeur
.LP
-
.BNDD_CMD_DELETE_VALUE
: suppression de valeur
.LP
-
.BNDD_CMD_PRINT_INFO
: affichage des informations de la racine
.RS-3
.LP
.INB
Toutes ces commandes ne doivent pas necessairement etre implementees par l'utilisateur. A priori, seule la commande permettant de detruire une valeur est obligatoire.
De nouvelles commandes pourront aussi etre definies par l'utilisateur, sous reserve qu'elles soient implementee par la fonction manager.
.RS-3
.LP
.BINDT_Allocator
.LP
.RS3
Designe le type d'une fonction d'allocation memoire.
.LP
Une fonction d'allocation est attachee a la racine de la structure par son nom et permet de d'allouer de la memoire pour le stockage de la structure (racine et noeuds).
.LP
Par defaut, une structure de donnees definira la fonction malloc() comme fonction d'allocation.
.LP
.INB
: une fonction d'allocation devra etre executee via la fonction
Designe le type d'une fonction de desallocation memoire.
.LP
Une fonction de desallocation est attachee a la racine de la structure par son nom et permet de liberer la memoire allouee pour le stockage de la structure.
.LP
Par defaut, une structure de donnees definira la fonction free() comme fonction de desallocation.
.LP
.INB
: une fonction de desallocation devra etre executee via la fonction
Cette fonction permet d'initialiser les eventuelles ressources de la librairie.
Elle doit etre systematiquement appelee au debut de chaque programme utilisant la librairie.
.LP
L'argument
.IDebug_Mode
(TRUE ou FALSE) permet d'utiliser la librairie en mode bavard ou non, ce qui sigifie que tous les messages d'erreur seront affiches par defaut sur la sortie standard.
.LP
.RS-3
.BI"ND_Library_Close ( void )"
.RS3
.LP
Cette fonction permet de fermer les eventuelles ressources de la librairie.
Elle doit etre systematiquement appelee a la fin de chaque programme utilisant la librairie.
Cette fonction permet d'afficher des informations concernant une structure de donnees.
.LP
Elle doit recevoir les arguments suivants :
.LP
.RS3
* (In)
.IRoot
: un pointeur sur la racine de la structure de donnees
.LP
* (In)
.IOut
: un pointeur sur le flux de sortie
.RS-3
.LP
.RS-3
.BI"NDT_Status ND_DataStruct_Check ( NDT_Root * "Root", int * "Nb_Detected", int * "Nb_Corrected" ,FILE * "Out" );"
.LP
.RS3
Cette fonction permet de verifier et de corriger des incoherences contenues dans une structure de donnees.
Elle verifie notamment les liens entre les noeuds, supprime les noeuds sans valeur ou ceux dont les valeurs ne sont pas accessibles et met a jour les informations statistiques de la racine.
Un rapport de toutes les erreurs detectees ou corrigees est affiche.
.LP
Elle doit recevoir les arguments suivants :
.LP
.RS3
* (In)
.IRoot
: un pointeur sur la racine de la structure de donnees a verifier.