Copyright © 2004 Patrick Davalan. |
Bopc : Container d'objets.
Fonctionnalités.
Présentation générale
API détaillée
Exemples.
Reste à faire.
Voir aussi.
Fonctionnalités.
Bopc est un container d'objets pouvant être reconnus par lui, présentement il reconnait comme objets les container bopc, les hashs boph, les listes bopl et les piles bops.
Ces différents objets doivent suivre un certain protocole pour être reconnus par Bopc, cela ne fait pas partie de l'API décrite ici, les méthodes de création d'objets sont sujettes à changement et ne seront stabilisée que dans une prochaine version.
Par l'intermédiaire de ce container, il est possible d'appliquer des fonctions aux objets qu'il contient. Par exemple, détruire le container revient à détruire en même temps les objets qu'il contient en suivant leur méthode de destruction.
Présentation générale
structures de données
Bops utilise principalement 1 type (typedef de structures) de données :
BopcHandle
-
Ce type référence un container. il est utilisé principalement dans sa création, sa destruction et l'ajout d'objets à ce container.
Ces structures de données ne devraient être utilisée que par l'intermédiaire de l'API, celle-ci étant supposée
assurer la compatibilité, les structures étant par elle-même sujettes au changement.
Survol des fonctions
Elles permettent de créer/supprimer des containers, de placer des objets dans ces containers et de les en enlever, d'appliquer des fonctions aux objets que ce container contient.
Ce concept de container est très simple, on peut le comparer à un sac mais pas à une valise. Il s'agit plutôt d'un sac souple comme on en délivrait naguère dans les épiceries, la différence étant que l'on peut mettre un sac souple dans un autre sac souple alors que l'on ne peut mettre une valise dans une valise du même modèle.
On peut mettre dans un container tout objet ayant une poignée (handle) qu'il est capable de saisir, pour l'instant des hashs, des listes, des stacks et d'autres containers du même modèle.
L'API est appelée à se developper, elle ne comporte pour l'instant que des fonctions minimales.
Allocation/suppression d'un container.
- bopcNew() : allocation d'un container. retourne un handle pour ce container.
- bopcDelete() : desallocation du handle et des objets qu'il contient.
accès au container et à ses éléments.
- bopcList() : liste les éléments qu'il contient et applique la méthode "liste" à chacun des objets qu'il contient.
API détaillée.
Fichier à inclure.
Allocation/suppression d'un container.
- BopcHandle * bopcNewt( BopcHandle * container, char * name )
Retourne un handle du container alloué.
container est le container dans lequel doit être placé le container alloué, ou NULL.
name est un nom qui sera donné au container alloué, ou NULL.
- int bopcDelete( void * unused , BopcHandle * container )
Supprime le container et les objets qu'il contient.
Le premier argument est reservé pour un usage ulterieur, il doit être à NULL.
La valeur de retour n'est pas significative.
accès au container et à ses éléments.
- int bopcList( FILE * file, BopcHandle * container )
Liste le container et ses éléments sur le stream file.
La valeur de retour n'est pas significative.
Chaque ligne précédée d'un "#" est écrit par bopcList, son format est :
# Type Name <at> Address.
les autres lignes sont écrites par une méthode correspondante des objets contenus.
Comme vous le voyez plus bas, ce que produit cette fonction sert principalement au debugging :
#BEGIN LIST
# Container higher at 0x804a008
# List-Object ma-liste1 at 0x804a050
list at 0x804e780
list at 0x804e7b0
list at 0x804e7e0
# Hash mon-hash 1 at 0x804a0b0
Bucket size 1024
# Container cont 1 at 0x8050688
# Stack stack 1.1 at 0x8054798
Primary size 506, Secondary size 511
# List-Object list-object at 0x80557b8
list at 0x8055830
list at 0x8055860
# List-Object list-object 2 at 0x8055878
list at 0x8058d70
list at 0x8058da0
# Stack stack 1 at 0x80558d8
Primary size 666, Secondary size 666
#END LIST
Exemples.
Reste à faire.
Voir aussi.
http://freefeed/bop/bopc.php (13/12/2006) Copyright © 2004 Patrick Davalan.
Il est permis de copier, distribuer et/ou modifier ce document selon les termes et condiions de la GNU Free Documentation License, version 1.2 ou toute version ulterieure publiée par la Free Software Foundation.
Warning: fopen(/home/web/patrick/data/locks/bop%2Fbopc.php): failed to open stream: No such file or directory in /home/web/patrick/include/functions.inc on line 315