'\" t '." @(#)LIBVER.3 2.0 00/06/30 SMA; .TH LIBVER 3 "01 Apr 2000" .SH NOM LIBVER (utilitaires divers) .SH SYNOPSIS .LP .B cc [flag ...] file ... -lver [library ...] .LP .BI "#include " .LP .BI "VER_INFO_EXPORT( " Object_Name ", " Version ", " CVS_Tag ", " Src_File ", " Author " )" .LP .BI "VERT_Status VER_Object_Print ( FILE * " Stream ", VERT_Print_Mode " Print_Mode " );" .LP .BI "VERT_Status VER_Info_Next_Get(VERT_Info_Container ** " Container ", VERT_Object * " Object ", VERT_Index * " Index " );" .LP .BI "VERT_Status VER_Info_Print(FILE * " Out ", VERT_Info_Container * " Container ", VERT_Print_Mode " Print_Mode " );" .LP .SH DESCRIPTION .LP La librairie .B LIBVER permet a un objet (programme ou librairie) de partager ses informations concernant : .LP .RS 3 - son nom .LP - sa version .LP - son tag CVS .LP - le nom de son fichier source .LP - l'auteur de son fichier source .RS -3¨ .LP La librairie fournit aussi des fonctions d'acces aux informations partagees par tous les objets (statiques (.o) ou partages (.so)) dont depend l'objet courant. .LP .SH "FONCTIONS & MACRO" .LP .BI "VER_INFO_EXPORT(" Object_Name ", " Version ", " CVS_Tag ", " Src_File ", " Author " )" .RS 3 .LP Cette macro est interpretee par le preprocesseur C. Elle permet de generer une fonction C qui exporte les informations de l'objet courant via les API internes de la librairie. .LP Cette macro doit recevoir les parametres suivants : .LP .RS 3 - (In) .I Object_Name : le nom de l'objet (sans guillemets car utilise pour generer le nom de la fonction) .LP - (In) .I Version : la version de l'objet (entre guillemets) .LP - (In) .I CVS_Tag : le tag CVS (entre guillemets) .LP - (In) .I Src_File : le nom du fichier source (entre guillemets) .LP - (In) .I Author : le nom de l'auteur du fichier (entre guillemets) .RS -3 .LP .I NB : la macro attend des parametres separes par des virgules. .LP Chaque fichier voulant exporter ses informations doit definir une instruction ressemblant a ce qui suit : .LP .RS 3 VER_INFO_EXPORT(terminator, "1.0", "tag-schwartzy-1_0_0-1", "terminator.c", "Sarah Connors") .RS -3 .LP L'instruction pourra se baser sur des mots-cle du preprocesseur ou sur ceux de CVS : .LP .RS 3 VER_INFO_EXPORT(monobjet, "$ Revision $", "$ Name $", __FILE__, "$ Author $") .RS -3 .LP .RS -3 .LP .BI "VERT_Status VER_Object_Print ( FILE * " Out ", VERT_Print_Mode " Print_Mode " );" .RS 3 .LP Cette fonction permet d'afficher les informations concernant l'objet appelant: .LP Elle doit recevoir les parametres suivants : .LP .RS 3 - (In) .I Out : le flux de sortie de l'affichage .LP - (In) .I Print_Mode : le mode d'affichage : .LP .RS 3 - .B VERD_MINIMAL : affichage du nom, de la version et du tag CVS de l'objet appelant. .LP - .B VERD_VERBOSE : affichage sous forme de tableau de toutes les informations de l'objet appelant et de tous les objets dont il depend. .LP .RS -3 .RS -3 .RS -3 .LP .BI "VERT_Status VER_Info_Next_Get(VERT_Info_Container ** " Container ", VERT_Object * " Object ", VERT_Index * " Index " );" .RS 3 .LP Cette fonction permet de recuperer un conteneur d'informations. .LP Elle doit recevoir les parametres suivants : .LP .RS 3 - (Out) .I Container : l'adresse d'un pointeur sur le conteneur a recuperer .LP - (In Out) .I Object : un pointeur sur l'objet a partir duquel on recherche le conteneur .LP - (In Out) .I Index : un pointeur sur l'index a partir duquel on recherche le conteneur .LP .RS -3 .LP .I NB : un objet peut avoir plusieurs conteneurs s'il a ete construit a partir de plusieurs objets statiques (.o). .LP L'index permet de distinguer les differents conteneurs d'un meme objet. Il commence a 0. .LP Le premier objet correspond a l'objet appelant (deuxieme parametre valorise a NULL). .LP Les objets suivants sont des objets partages (.so) dont depend l'objet appelant. .LP Si un conteneur a pu etre trouve, l'objet et l'index correspondant a ce conteneur sont alors mis a jour. .LP .RS -3 .BI "VERT_Status VER_Info_Print(FILE * " Out ", VERT_Info_Container * " Container ", VERT_Print_Mode " Print_Mode " );" .RS 3 .LP Cette fonction permet d'afficher les informations d'un conteneur : .LP Elle doit recevoir les parametres suivants : .LP .RS 3 - (In) .I Out : le flux de sortie de l'affichage .LP - (In) .I Container : un pointeur sur le conteneur a afficher .LP - (In) .I Print_Mode : le mode d'affichage : .LP .RS 3 - .B VERD_MINIMAL : affichage du nom, de la version et du tag CVS du conteneur .LP - .B VERD_VERBOSE : affichage de toutes les informations du conteneur .LP .RS -3 .RS -3 .RS -3 .SH CODES RETOUR .LP Toutes les fonctions constituant l'API de la librairie LIBVER retournent un code de type .B VERT_Status : .LP .RS 3 - .B VERS_OK : la fonction s'est correctement executee et a produit un resultat .LP - .B VERS_KO : la fonction s'est correctement executee mais n'a pas produit de resultat .LP - .B VERS_ERRAPI : la fonction a ete appelee avec des arguments de valeur incorrecte .LP - .B VERS_ERRMEM : la fonction ne s'est pas correctement executee pour un probleme d'allocation memoire .RS -3 .LP La macro .B VER_ERROR(rc) permet de tester si un code retour correspond a une erreur. .LP En cas d'erreur, la variable VER_Error_Msg contient un message du type : .LP .RS 3 Error : .RS -3 .LP