- Fix Makefiles,
- Comment out all functions exept DS_Library_Open , DS_Library_Close & DS_DataStruct_Open_I, and start to work on it!
This commit is contained in:
parent
7cf70f0f3c
commit
ed0f5062df
@ -1,8 +1,36 @@
|
|||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* datastr.h */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* This file is part of LibDataStr. */
|
||||||
|
/* */
|
||||||
|
/* LibDataStr is free software: you can redistribute it and/or modify it */
|
||||||
|
/* under the terms of the GNU Lesser General Public License as published */
|
||||||
|
/* by the Free Software Foundation, either version 3 of the License, or */
|
||||||
|
/* (at your option) any later version. */
|
||||||
|
/* */
|
||||||
|
/* LibDataStr is distributed in the hope that it will be useful, */
|
||||||
|
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
|
||||||
|
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
|
||||||
|
/* GNU Lesser General Public License for more details. */
|
||||||
|
/* */
|
||||||
|
/* You should have received a copy of the GNU Lesser General Public */
|
||||||
|
/* License along with LibDataStr. If not, see */
|
||||||
|
/* <https://www.gnu.org/licenses/>. */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Includes */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef _LIBDATASTR
|
#ifndef _LIBDATASTR
|
||||||
#define _LIBDATASTR
|
#define _LIBDATASTR
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
//extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <shmem.h>
|
#include <shmem.h>
|
||||||
@ -25,49 +53,57 @@ typedef long DST_Status;
|
|||||||
|
|
||||||
#define DS_ERROR(s) ((s) < 0) /* Tous les codes retour négatifs correspondent à des erreurs */
|
#define DS_ERROR(s) ((s) < 0) /* Tous les codes retour négatifs correspondent à des erreurs */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Indicateurs */
|
/* Indicateurs */
|
||||||
|
|
||||||
typedef int DST_Flags;
|
typedef int DST_Flags;
|
||||||
|
|
||||||
#define DSD_UNDEF 0
|
#define DSD_UNDEF 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Flags d'ouverture d'une data structure */
|
/* Flags d'ouverture d'une data structure */
|
||||||
|
|
||||||
#define DSD_OPEN SMD_OPEN /* autorise l'ouverture d'une structure existante */
|
#define DSD_OPEN SMD_OPEN /* autorise l'ouverture d'une structure existante */
|
||||||
#define DSD_CREATE SMD_CREATE /* autorise la création de la structure */
|
#define DSD_CREATE SMD_CREATE /* autorise la création de la structure */
|
||||||
#define DSD_NEW ~(DSD_OPEN|DSD_CREATE) /* crée une autre structure dans un heap existant */
|
#define DSD_NEW ~(DSD_OPEN|DSD_CREATE) /* crée une autre structure dans un heap existant */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Flags de debug sur l'ouverture de la librairie */
|
/* Flags de debug sur l'ouverture de la librairie */
|
||||||
|
|
||||||
#define DSD_DEBUG_NONE 0 /* pour n'afficher aucun message généré par les diverses librairies */
|
#define DSD_DEBUG_NONE 0 /* pour n'afficher aucun message généré par les diverses librairies */
|
||||||
#define DSD_DEBUG 1 /* pour afficher les messages générés par la librairie */
|
#define DSD_DEBUG 1 /* pour afficher les messages générés par la librairie */
|
||||||
#define DSD_DEBUG_ALL 2 /* pour afficher les messages générés par toutes les librairies sous-jacentes */
|
#define DSD_DEBUG_ALL 2 /* pour afficher les messages générés par toutes les librairies sous-jacentes */
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Utilisations possibles des flags d'ouverture */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* */
|
/* Utilisations possibles des flags d'ouverture */
|
||||||
/* DSD_OPEN */
|
/*----------------------------------------------------------------------------*/
|
||||||
/* -> ouvrir une structure existante */
|
/* */
|
||||||
/* -> ne pas la créer si elle n'existe pas */
|
/* DSD_OPEN */
|
||||||
/* */
|
/* -> ouvrir une structure existante */
|
||||||
/* DSD_OPEN | DSD_CREATE */
|
/* -> ne pas la créer si elle n'existe pas */
|
||||||
/* -> ouvrir une structure si elle existe */
|
/* */
|
||||||
/* -> la créer si elle n'existe pas */
|
/* DSD_OPEN | DSD_CREATE */
|
||||||
/* */
|
/* -> ouvrir une structure si elle existe */
|
||||||
/* DSD_CREATE */
|
/* -> la créer si elle n'existe pas */
|
||||||
/* -> créer une structure */
|
/* */
|
||||||
/* -> ne pas l'ouvrir si elle existe déjà */
|
/* DSD_CREATE */
|
||||||
/* */
|
/* -> créer une structure */
|
||||||
/* DSD_CREATE | DSD_NEW */
|
/* -> ne pas l'ouvrir si elle existe déjà */
|
||||||
/* -> créer la structure si elle n'existe pas */
|
/* */
|
||||||
/* -> créer une autre structure dans le même heap si elle existe déjà */
|
/* DSD_CREATE | DSD_NEW */
|
||||||
/* */
|
/* -> créer la structure si elle n'existe pas */
|
||||||
/* DSD_NEW */
|
/* -> créer une autre structure dans le même heap si elle existe déjà */
|
||||||
/* -> créer une autre structure dans le même heap si elle existe déjà */
|
/* */
|
||||||
/* -> ne pas la créer si elle n'existe pas */
|
/* DSD_NEW */
|
||||||
/* */
|
/* -> créer une autre structure dans le même heap si elle existe déjà */
|
||||||
/*------------------------------------------------------------------------------*/
|
/* -> ne pas la créer si elle n'existe pas */
|
||||||
|
/* */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
/* Flags de verrouillage d'une data structure */
|
/* Flags de verrouillage d'une data structure */
|
||||||
|
|
||||||
@ -224,316 +260,387 @@ char DS_Error_Msg [512];
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Ouverture d'une instance de la librairie */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Instance : numéro de l'instance de la librairie */
|
|
||||||
/* (I) Context : nom du contexte */
|
|
||||||
/* (I) Debug_Mode : mode d'affichage des messages d'erreur */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Library_Open_I ( int Instance, const char * Context, \
|
|
||||||
DST_Flags Debug_Mode );
|
|
||||||
DST_Status DS_Library_Open_L ( int Instance, const char * Context, \
|
|
||||||
DST_Flags Debug_Mode );
|
|
||||||
DST_Status DS_Library_Open_CL ( int Instance, const char * Context, \
|
|
||||||
DST_Flags Debug_Mode );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Fermeture de l'instance de la librairie */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Library_Close_I ( void );
|
|
||||||
DST_Status DS_Library_Close_L ( void );
|
|
||||||
DST_Status DS_Library_Close_CL ( void );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Définition de la sortie standard des messages d'erreur de la librairie */
|
/* DSD_API definition */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* (I) Out : flux de sortie des messages d'erreur */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Library_Stderr_Set_I ( FILE * Out );
|
|
||||||
DST_Status DS_Library_Stderr_Set_L ( FILE * Out );
|
|
||||||
DST_Status DS_Library_Stderr_Set_CL ( FILE * Out );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
# ifdef _LIBDATASTR_C_
|
||||||
/* Création / ouverture d'une structure de données */
|
# define DSD_API
|
||||||
/*------------------------------------------------------------------------------*/
|
# else
|
||||||
/* (I) DS_Name : nom de la structure */
|
# define DSD_API extern
|
||||||
/* (O) Root : adresse du pointeur sur la racine de la structure */
|
# endif
|
||||||
/* (I) Type : type de la structure de données */
|
|
||||||
/* (I) Manager_FileName : nom du fichier qui définit les fonctions manager */
|
|
||||||
/* (I) Segment_Size : taille ds segments du heap sous-jacent */
|
|
||||||
/* (I) Open_Mode : mode d'ouverture de la structure */
|
|
||||||
/* (I) Own_Value : indique si la structure possède ses valeurs */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_DataStruct_Open_I ( const char * DS_Name, NDT_Root ** Root,\
|
|
||||||
NDT_DataStruct_Type Type, const char * Manager_FileName, \
|
|
||||||
size_t Segment_Size, DST_Flags Open_Mode, int Own_Value );
|
|
||||||
DST_Status DS_DataStruct_Open_L ( const char * DS_Name, NDT_Root ** Root,\
|
|
||||||
NDT_DataStruct_Type Type, const char * Manager_FileName, \
|
|
||||||
size_t Segment_Size, DST_Flags Open_Mode, int Own_Value );
|
|
||||||
DST_Status DS_DataStruct_Open_CL ( const char * DS_Name, NDT_Root ** Root,\
|
|
||||||
NDT_DataStruct_Type Type, const char * Manager_FileName, \
|
|
||||||
size_t Segment_Size, DST_Flags Open_Mode, int Own_Value );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Verrouillage d'une structure de données */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Root : pointeur sur la racine de la structure */
|
|
||||||
/* (I) Lock_Mode : type de verrou à poser sur la structure */
|
|
||||||
/* (O) Locked : verrou effectif (TRUE ou FALSE) */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_DataStruct_Lock_I ( NDT_Root * Root, DST_Flags Lock_Mode, \
|
|
||||||
int * Locked );
|
|
||||||
DST_Status DS_DataStruct_Lock_L ( NDT_Root * Root, DST_Flags Lock_Mode, \
|
|
||||||
int * Locked );
|
|
||||||
DST_Status DS_DataStruct_Lock_CL ( NDT_Root * Root, DST_Flags Lock_Mode, \
|
|
||||||
int * Locked );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Déverrouillage d'une structure de données */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Root : pointeur sur la racine de la structure */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_DataStruct_Unlock_I ( NDT_Root * Root );
|
|
||||||
DST_Status DS_DataStruct_Unlock_L ( NDT_Root * Root );
|
|
||||||
DST_Status DS_DataStruct_Unlock_CL ( NDT_Root * Root );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Fermeture d'une structure de données */
|
/* Ouverture d'une instance de la librairie */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* (I) Root : pointeur sur la racine de la structure de données */
|
/* (I) Instance : numéro de l'instance de la librairie */
|
||||||
/* (I) Close_Mode : mode de fermeture de la structure (destruction ou non) */
|
/* (I) Context : nom du contexte */
|
||||||
/*------------------------------------------------------------------------------*/
|
/* (I) Debug_Mode : mode d'affichage des messages d'erreur */
|
||||||
DST_Status DS_DataStruct_Close_I ( NDT_Root * Root, DST_Flags Close_Mode );
|
/*----------------------------------------------------------------------------*/
|
||||||
DST_Status DS_DataStruct_Close_L ( NDT_Root * Root, DST_Flags Close_Mode );
|
|
||||||
DST_Status DS_DataStruct_Close_CL ( NDT_Root * Root, DST_Flags Close_Mode );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
DSD_API DST_Status DS_Library_Open_I( int Instance, const char *Context, DST_Flags Debug_Mode);
|
||||||
/* Affiche les informations d'une structure de données */
|
DSD_API DST_Status DS_Library_Open_L( int Instance, const char *Context, DST_Flags Debug_Mode);
|
||||||
/*------------------------------------------------------------------------------*/
|
DSD_API DST_Status DS_Library_Open_CL( int Instance, const char *Context, DST_Flags Debug_Mode);
|
||||||
/* (I) Root: pointeur sur la racine de la structure de données */
|
|
||||||
/* (I) Out : flux de sortie de l'affichage */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_DataStruct_Info_Print_I ( NDT_Root * Root, FILE * Out );
|
|
||||||
DST_Status DS_DataStruct_Info_Print_L ( NDT_Root * Root, FILE * Out );
|
|
||||||
DST_Status DS_DataStruct_Info_Print_CL ( NDT_Root * Root, FILE * Out );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Réorganisation d'une structure de données : */
|
|
||||||
/* - ordonnancement d'une liste non ordonnée */
|
|
||||||
/* - réquilibrage d'un arbre non auto-équilibré */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Root : pointeur sur la racine de la structure de données */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_DataStruct_Reorg_I ( NDT_Root * Root );
|
|
||||||
DST_Status DS_DataStruct_Reorg_L ( NDT_Root * Root );
|
|
||||||
DST_Status DS_DataStruct_Reorg_CL ( NDT_Root * Root );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Parcours de tous les noeuds d'une structure de données et exécution d'une */
|
|
||||||
/* commande sur chacun d'eux */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Root : pointeur sur la racine de la structure de données */
|
|
||||||
/* (I) Command : Commande à exécuter sur chaque noeud traversé */
|
|
||||||
/* (I) Data : pointeur de données utilisateur */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_DataStruct_Traverse_I ( NDT_Root * Root, NDT_Command Command, \
|
|
||||||
void * Data );
|
|
||||||
DST_Status DS_DataStruct_Traverse_L ( NDT_Root * Root, NDT_Command Command, \
|
|
||||||
void * Data );
|
|
||||||
DST_Status DS_DataStruct_Traverse_CL ( NDT_Root * Root, NDT_Command Command, \
|
|
||||||
void * Data );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Conversion d'une structure de données d'un type en un autre */
|
/* Fermeture de l'instance de la librairie */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* (I) Root : pointeur sur la racine de la structure de données */
|
|
||||||
/* (I) Target_Type : type de structure cible */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_DataStruct_Convert_I ( NDT_Root * Root, \
|
|
||||||
NDT_DataStruct_Type Target_Type );
|
|
||||||
DST_Status DS_DataStruct_Convert_L ( NDT_Root * Root, \
|
|
||||||
NDT_DataStruct_Type Target_Type );
|
|
||||||
DST_Status DS_DataStruct_Convert_CL ( NDT_Root * Root, \
|
|
||||||
NDT_DataStruct_Type Target_Type );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
DSD_API DST_Status DS_Library_Close_I( void);
|
||||||
/* Affichage de la valeur de tous les noeuds d'une structure de données */
|
DSD_API DST_Status DS_Library_Close_L( void);
|
||||||
/*------------------------------------------------------------------------------*/
|
DSD_API DST_Status DS_Library_Close_CL( void);
|
||||||
/* (I) Root : pointeur sur la racine de la structure de données */
|
|
||||||
/* (I) Out : flux de sortie */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_DataStruct_Print_I ( NDT_Root * Root, FILE * Out );
|
|
||||||
DST_Status DS_DataStruct_Print_L ( NDT_Root * Root, FILE * Out );
|
|
||||||
DST_Status DS_DataStruct_Print_CL ( NDT_Root * Root, FILE * Out );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Fonction de vérification / réparation d'une structure de données */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Root : pointeur sur la racine de la structure */
|
|
||||||
/* (O) Nb_Detected : pointeur sur le nombre d'erreurs détectées */
|
|
||||||
/* (O) Nb_Corrected : pointeur sur le nombre d'erreurs corrigées */
|
|
||||||
/* (I) Out : flux de sortie du rapport */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_DataStruct_Check_I ( NDT_Root * Root, int * Nb_Detected, \
|
|
||||||
int * Nb_Corrected, FILE * Out );
|
|
||||||
DST_Status DS_DataStruct_Check_L ( NDT_Root * Root, int * Nb_Detected, \
|
|
||||||
int * Nb_Corrected, FILE * Out );
|
|
||||||
DST_Status DS_DataStruct_Check_CL ( NDT_Root * Root, int * Nb_Detected, \
|
|
||||||
int * Nb_Corrected, FILE * Out );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Affichage de la structure de données */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Root : pointeur sur la racine de la structure */
|
|
||||||
/* (I) Out : flux de sortie */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_DataStruct_Dump_I ( NDT_Root * Root, FILE * Out );
|
|
||||||
DST_Status DS_DataStruct_Dump_L ( NDT_Root * Root, FILE * Out );
|
|
||||||
DST_Status DS_DataStruct_Dump_CL ( NDT_Root * Root, FILE * Out );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Récupération du premier noeud d'une structure */
|
/* Définition de la sortie standard des messages d'erreur de la librairie */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* (I) Root : pointeur sur la racine dont on cherche le premier noeud */
|
/* (I) Out : flux de sortie des messages d'erreur */
|
||||||
/* (O) Node : pointeur sur le noeud à récupérer */
|
/*----------------------------------------------------------------------------*/
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Node_First_Get_I ( NDT_Root * Root, NDT_Node ** Node );
|
|
||||||
DST_Status DS_Node_First_Get_L ( NDT_Root * Root, NDT_Node ** Node );
|
|
||||||
DST_Status DS_Node_First_Get_CL ( NDT_Root * Root, NDT_Node ** Node );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
DSD_API DST_Status DS_Library_Stderr_Set_I( FILE *Out);
|
||||||
/* Récupération du dernier noeud d'une structure */
|
DSD_API DST_Status DS_Library_Stderr_Set_L( FILE *Out);
|
||||||
/*------------------------------------------------------------------------------*/
|
DSD_API DST_Status DS_Library_Stderr_Set_CL( FILE *Out);
|
||||||
/* (I) Root : pointeur sur la racine dont on cherche le dernier noeud */
|
|
||||||
/* (O) Node : pointeur sur le noeud à récupérer */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Node_Last_Get_I ( NDT_Root * Root, NDT_Node ** Node );
|
|
||||||
DST_Status DS_Node_Last_Get_L ( NDT_Root * Root, NDT_Node ** Node );
|
|
||||||
DST_Status DS_Node_Last_Get_CL ( NDT_Root * Root, NDT_Node ** Node );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Récupération du noeud suivant */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Node : pointeur sur le noeud dont on cherche le suivant */
|
|
||||||
/* (O) Next_Node : pointeur sur le noeud suivant */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Node_Next_Get_I ( NDT_Node * Node, NDT_Node ** Next_Node );
|
|
||||||
DST_Status DS_Node_Next_Get_L ( NDT_Node * Node, NDT_Node ** Next_Node );
|
|
||||||
DST_Status DS_Node_Next_Get_CL ( NDT_Node * Node, NDT_Node ** Next_Node );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Récupération du noeud précédant */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Node : pointeur sur le noeud dont on cherche le précédant */
|
|
||||||
/* (O) Prev_Node : pointeur sur le noeud précédant */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Node_Previous_Get_I ( NDT_Node * Node, NDT_Node ** Prev_Node );
|
|
||||||
DST_Status DS_Node_Previous_Get_L ( NDT_Node * Node, NDT_Node ** Prev_Node );
|
|
||||||
DST_Status DS_Node_Previous_Get_CL ( NDT_Node * Node, NDT_Node ** Prev_Node );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Ajout d'un noeud à une structure de données */
|
/* Création / ouverture d'une structure de données */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* (I) Root : pointeur sur la racine de la structure de données */
|
/* (O) Root : adresse du pointeur sur la racine de la structure */
|
||||||
/* (I) Node : pointeur sur le noeud à ajouter */
|
/* (I) DS_Name : nom de la structure */
|
||||||
/*------------------------------------------------------------------------------*/
|
/* (I) Type : type de la structure de données */
|
||||||
DST_Status DS_Node_Add_I ( NDT_Root * Root, NDT_Node * Node );
|
/* (I) Manager_FileName : nom du fichier qui définit les fonctions manager */
|
||||||
DST_Status DS_Node_Add_L ( NDT_Root * Root, NDT_Node * Node );
|
/* (I) Segment_Size : taille ds segments du heap sous-jacent */
|
||||||
DST_Status DS_Node_Add_CL ( NDT_Root * Root, NDT_Node * Node );
|
/* (I) Open_Mode : mode d'ouverture de la structure */
|
||||||
|
/* (I) Own_Value : indique si la structure possède ses valeurs */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
DSD_API DST_Status DS_DataStruct_Open_I( NDT_Root **Root, const char *DS_Name, NDT_Index_Nb, NDT_Index_Type *, const char * Manager_FileName, size_t Segment_Size, DST_Flags Open_Mode, int Own_Value);
|
||||||
/* Suppression d'un noeud dans une structure de données */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Node: pointeur sur le noeud à supprimer de la structure de données */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Node_Remove_I ( NDT_Node * Node );
|
|
||||||
DST_Status DS_Node_Remove_L ( NDT_Node * Node );
|
|
||||||
DST_Status DS_Node_Remove_CL ( NDT_Node * Node );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*
|
||||||
/* Recherche un noeud dans un arbre et retourne le pointeur sur le noeud */
|
DSD_API DST_Status DS_DataStruct_Open_I( const char *DS_Name, NDT_Root **Root, NDT_DataStruct_Type Type, const char * Manager_FileName, size_t Segment_Size, DST_Flags Open_Mode, int Own_Value);
|
||||||
/*------------------------------------------------------------------------------*/
|
DSD_API DST_Status DS_DataStruct_Open_L( const char *DS_Name, NDT_Root **Root, NDT_DataStruct_Type Type, const char * Manager_FileName, size_t Segment_Size, DST_Flags Open_Mode, int Own_Value);
|
||||||
/* (I) Root : pointeur sur la racine de l'abre */
|
DSD_API DST_Status DS_DataStruct_Open_CL( const char *DS_Name, NDT_Root **Root, NDT_DataStruct_Type Type, const char * Manager_FileName, size_t Segment_Size, DST_Flags Open_Mode, int Own_Value);
|
||||||
/* (O) Node : adresse du pointeur sur le noeud à récuperer */
|
|
||||||
/* (I) Value : pointeur sur la valeur à rechercher */
|
|
||||||
/* (I) Data : pointeur de données */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Node_Find_I ( NDT_Root * Root, NDT_Node ** Node, \
|
|
||||||
void * Value, void * Data );
|
|
||||||
DST_Status DS_Node_Find_L ( NDT_Root * Root, NDT_Node ** Node, \
|
|
||||||
void * Value, void * Data );
|
|
||||||
DST_Status DS_Node_Find_CL ( NDT_Root * Root, NDT_Node ** Node, \
|
|
||||||
void * Value, void * Data );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Allocation d'une valeur d'une structure de données */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Root : pointeur sur la racine de la structure de données */
|
|
||||||
/* (O) Value : adresse d'un pointeur sur la valeur à allouer */
|
|
||||||
/* (I) ... : arguments relatifs à l'allocation de la valeur */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Value_Alloc_I ( NDT_Root * Root, void ** Value, ... );
|
|
||||||
DST_Status DS_Value_Alloc_L ( NDT_Root * Root, void ** Value, ... );
|
|
||||||
DST_Status DS_Value_Alloc_CL ( NDT_Root * Root, void ** Value, ... );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Ajout d'une valeur à une structure de données */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Root : pointeur sur la racine de la structure de données */
|
|
||||||
/* (I) Value : pointeur sur la valeur à ajouter */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Value_Add_I ( NDT_Root * Root, void * Value );
|
|
||||||
DST_Status DS_Value_Add_L ( NDT_Root * Root, void * Value );
|
|
||||||
DST_Status DS_Value_Add_CL ( NDT_Root * Root, void * Value );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Suppression du premier noeud correspondant à une valeur donnée */
|
/* Verrouillage d'une structure de données */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* (I) Root : pointeur sur la racine de la structure de données */
|
/* (I) Root : pointeur sur la racine de la structure */
|
||||||
/* (I) Reference_Value : pointeur sur la valeur de référence */
|
/* (I) Lock_Mode : type de verrou à poser sur la structure */
|
||||||
/* (I) Removed_Value : adresse d'un pointeur sur la valeur supprimée */
|
/* (O) Locked : verrou effectif (TRUE ou FALSE) */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
DST_Status DS_Value_Remove_I ( NDT_Root * Root, void * Reference_Value, \
|
/*
|
||||||
void ** Removed_Value);
|
DSD_API DST_Status DS_DataStruct_Lock_I( NDT_Root * Root, DST_Flags Lock_Mode, int * Locked);
|
||||||
DST_Status DS_Value_Remove_L ( NDT_Root * Root, void * Reference_Value, \
|
DSD_API DST_Status DS_DataStruct_Lock_L( NDT_Root * Root, DST_Flags Lock_Mode, int * Locked);
|
||||||
void ** Removed_Value);
|
DSD_API DST_Status DS_DataStruct_Lock_CL( NDT_Root * Root, DST_Flags Lock_Mode, int * Locked);
|
||||||
DST_Status DS_Value_Remove_CL ( NDT_Root * Root, void * Reference_Value, \
|
|
||||||
void ** Removed_Value);
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Désallocation d'une valeur d'une structure de données */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Root : pointeur sur la racine de la structure de données */
|
|
||||||
/* (I) Value : pointeur sur la valeur à désallouer */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Value_Free_I ( NDT_Root * Root, void * Value );
|
|
||||||
DST_Status DS_Value_Free_L ( NDT_Root * Root, void * Value );
|
|
||||||
DST_Status DS_Value_Free_CL ( NDT_Root * Root, void * Value );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* Allocation de mémoire pour une structure de données : */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
/* (I) Root : pointeur sur la racine de la structure de données */
|
|
||||||
/* (I) Size : taille mémoire à allouer */
|
|
||||||
/* (O) Ptr : adresse du pointeur sur la zone de données allouée */
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
DST_Status DS_Alloc_I ( NDT_Root * Root, size_t Size, void ** Ptr );
|
|
||||||
DST_Status DS_Alloc_L ( NDT_Root * Root, size_t Size, void ** Ptr );
|
|
||||||
DST_Status DS_Alloc_CL ( NDT_Root * Root, size_t Size, void ** Ptr );
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Désallocation d'une ressource pour une structure de données : */
|
/* Déverrouillage d'une structure de données */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* (I) Root : pointeur sur la racine de la structure de données */
|
/* (I) Root : pointeur sur la racine de la structure */
|
||||||
/* (I) Ptr : pointeur sur la zone à désallouer */
|
/*----------------------------------------------------------------------------*/
|
||||||
/*------------------------------------------------------------------------------*/
|
/*
|
||||||
DST_Status DS_Free_I ( NDT_Root * Root, void * Ptr );
|
DSD_API DST_Status DS_DataStruct_Unlock_I( NDT_Root * Root);
|
||||||
DST_Status DS_Free_L ( NDT_Root * Root, void * Ptr );
|
DSD_API DST_Status DS_DataStruct_Unlock_L( NDT_Root * Root);
|
||||||
DST_Status DS_Free_CL ( NDT_Root * Root, void * Ptr );
|
DSD_API DST_Status DS_DataStruct_Unlock_CL( NDT_Root * Root);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Fermeture d'une structure de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure de données */
|
||||||
|
/* (I) Close_Mode : mode de fermeture de la structure (destruction ou non) */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_DataStruct_Close_I( NDT_Root * Root, DST_Flags Close_Mode);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Close_L( NDT_Root * Root, DST_Flags Close_Mode);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Close_CL( NDT_Root * Root, DST_Flags Close_Mode);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Affiche les informations d'une structure de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root: pointeur sur la racine de la structure de données */
|
||||||
|
/* (I) Out : flux de sortie de l'affichage */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_DataStruct_Info_Print_I( NDT_Root * Root, FILE * Out);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Info_Print_L( NDT_Root * Root, FILE * Out);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Info_Print_CL( NDT_Root * Root, FILE * Out);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Réorganisation d'une structure de données : */
|
||||||
|
/* - ordonnancement d'une liste non ordonnée */
|
||||||
|
/* - réquilibrage d'un arbre non auto-équilibré */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_DataStruct_Reorg_I( NDT_Root * Root);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Reorg_L( NDT_Root * Root);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Reorg_CL( NDT_Root * Root);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Parcours de tous les noeuds d'une structure de données et exécution d'une */
|
||||||
|
/* commande sur chacun d'eux */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure de données */
|
||||||
|
/* (I) Command : Commande à exécuter sur chaque noeud traversé */
|
||||||
|
/* (I) Data : pointeur de données utilisateur */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_DataStruct_Traverse_I( NDT_Root * Root, NDT_Command Command, void * Data);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Traverse_L( NDT_Root * Root, NDT_Command Command, void * Data);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Traverse_CL( NDT_Root * Root, NDT_Command Command, void * Data);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Conversion d'une structure de données d'un type en un autre */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure de données */
|
||||||
|
/* (I) Target_Type : type de structure cible */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_DataStruct_Convert_I( NDT_Root * Root, NDT_DataStruct_Type Target_Type);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Convert_L( NDT_Root * Root, NDT_DataStruct_Type Target_Type);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Convert_CL( NDT_Root * Root, NDT_DataStruct_Type Target_Type);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Affichage de la valeur de tous les noeuds d'une structure de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure de données */
|
||||||
|
/* (I) Out : flux de sortie */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_DataStruct_Print_I( NDT_Root * Root, FILE * Out);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Print_L( NDT_Root * Root, FILE * Out);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Print_CL( NDT_Root * Root, FILE * Out);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Fonction de vérification / réparation d'une structure de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure */
|
||||||
|
/* (O) Nb_Detected : pointeur sur le nombre d'erreurs détectées */
|
||||||
|
/* (O) Nb_Corrected : pointeur sur le nombre d'erreurs corrigées */
|
||||||
|
/* (I) Out : flux de sortie du rapport */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_DataStruct_Check_I( NDT_Root * Root, int * Nb_Detected, int * Nb_Corrected, FILE * Out);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Check_L( NDT_Root * Root, int * Nb_Detected, int * Nb_Corrected, FILE * Out);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Check_CL( NDT_Root * Root, int * Nb_Detected, int * Nb_Corrected, FILE * Out);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Affichage de la structure de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure */
|
||||||
|
/* (I) Out : flux de sortie */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_DataStruct_Dump_I( NDT_Root * Root, FILE * Out);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Dump_L( NDT_Root * Root, FILE * Out);
|
||||||
|
DSD_API DST_Status DS_DataStruct_Dump_CL( NDT_Root * Root, FILE * Out);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Récupération du premier noeud d'une structure */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine dont on cherche le premier noeud */
|
||||||
|
/* (O) Node : pointeur sur le noeud à récupérer */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Node_First_Get_I( NDT_Root * Root, NDT_Node ** Node);
|
||||||
|
DSD_API DST_Status DS_Node_First_Get_L( NDT_Root * Root, NDT_Node ** Node);
|
||||||
|
DSD_API DST_Status DS_Node_First_Get_CL( NDT_Root * Root, NDT_Node ** Node);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Récupération du dernier noeud d'une structure */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine dont on cherche le dernier noeud */
|
||||||
|
/* (O) Node : pointeur sur le noeud à récupérer */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Node_Last_Get_I( NDT_Root * Root, NDT_Node ** Node);
|
||||||
|
DSD_API DST_Status DS_Node_Last_Get_L( NDT_Root * Root, NDT_Node ** Node);
|
||||||
|
DSD_API DST_Status DS_Node_Last_Get_CL( NDT_Root * Root, NDT_Node ** Node);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Récupération du noeud suivant */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Node : pointeur sur le noeud dont on cherche le suivant */
|
||||||
|
/* (O) Next_Node : pointeur sur le noeud suivant */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Node_Next_Get_I( NDT_Node * Node, NDT_Node ** Next_Node);
|
||||||
|
DSD_API DST_Status DS_Node_Next_Get_L( NDT_Node * Node, NDT_Node ** Next_Node);
|
||||||
|
DSD_API DST_Status DS_Node_Next_Get_CL( NDT_Node * Node, NDT_Node ** Next_Node);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Récupération du noeud précédant */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Node : pointeur sur le noeud dont on cherche le précédant */
|
||||||
|
/* (O) Prev_Node : pointeur sur le noeud précédant */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Node_Previous_Get_I( NDT_Node * Node, NDT_Node ** Prev_Node);
|
||||||
|
DSD_API DST_Status DS_Node_Previous_Get_L( NDT_Node * Node, NDT_Node ** Prev_Node);
|
||||||
|
DSD_API DST_Status DS_Node_Previous_Get_CL( NDT_Node * Node, NDT_Node ** Prev_Node);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Ajout d'un noeud à une structure de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure de données */
|
||||||
|
/* (I) Node : pointeur sur le noeud à ajouter */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Node_Add_I( NDT_Root * Root, NDT_Node * Node);
|
||||||
|
DSD_API DST_Status DS_Node_Add_L( NDT_Root * Root, NDT_Node * Node);
|
||||||
|
DSD_API DST_Status DS_Node_Add_CL( NDT_Root * Root, NDT_Node * Node);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Suppression d'un noeud dans une structure de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Node: pointeur sur le noeud à supprimer de la structure de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Node_Remove_I( NDT_Node * Node);
|
||||||
|
DSD_API DST_Status DS_Node_Remove_L( NDT_Node * Node);
|
||||||
|
DSD_API DST_Status DS_Node_Remove_CL( NDT_Node * Node);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Recherche un noeud dans un arbre et retourne le pointeur sur le noeud */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de l'abre */
|
||||||
|
/* (O) Node : adresse du pointeur sur le noeud à récuperer */
|
||||||
|
/* (I) Value : pointeur sur la valeur à rechercher */
|
||||||
|
/* (I) Data : pointeur de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Node_Find_I( NDT_Root * Root, NDT_Node ** Node, void * Value, void * Data);
|
||||||
|
DSD_API DST_Status DS_Node_Find_L( NDT_Root * Root, NDT_Node ** Node, void * Value, void * Data);
|
||||||
|
DSD_API DST_Status DS_Node_Find_CL( NDT_Root * Root, NDT_Node ** Node, void * Value, void * Data);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Allocation d'une valeur d'une structure de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure de données */
|
||||||
|
/* (O) Value : adresse d'un pointeur sur la valeur à allouer */
|
||||||
|
/* (I) ... : arguments relatifs à l'allocation de la valeur */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Value_Alloc_I( NDT_Root * Root, void ** Value, ...);
|
||||||
|
DSD_API DST_Status DS_Value_Alloc_L( NDT_Root * Root, void ** Value, ...);
|
||||||
|
DSD_API DST_Status DS_Value_Alloc_CL( NDT_Root * Root, void ** Value, ...);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Ajout d'une valeur à une structure de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure de données */
|
||||||
|
/* (I) Value : pointeur sur la valeur à ajouter */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Value_Add_I( NDT_Root * Root, void * Value);
|
||||||
|
DSD_API DST_Status DS_Value_Add_L( NDT_Root * Root, void * Value);
|
||||||
|
DSD_API DST_Status DS_Value_Add_CL( NDT_Root * Root, void * Value);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Suppression du premier noeud correspondant à une valeur donnée */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure de données */
|
||||||
|
/* (I) Reference_Value : pointeur sur la valeur de référence */
|
||||||
|
/* (I) Removed_Value : adresse d'un pointeur sur la valeur supprimée */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Value_Remove_I( NDT_Root * Root, void * Reference_Value, void ** Removed_Value);
|
||||||
|
DSD_API DST_Status DS_Value_Remove_L( NDT_Root * Root, void * Reference_Value, void ** Removed_Value);
|
||||||
|
DSD_API DST_Status DS_Value_Remove_CL( NDT_Root * Root, void * Reference_Value, void ** Removed_Value);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Désallocation d'une valeur d'une structure de données */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure de données */
|
||||||
|
/* (I) Value : pointeur sur la valeur à désallouer */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Value_Free_I( NDT_Root * Root, void * Value);
|
||||||
|
DSD_API DST_Status DS_Value_Free_L( NDT_Root * Root, void * Value);
|
||||||
|
DSD_API DST_Status DS_Value_Free_CL( NDT_Root * Root, void * Value);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Allocation de mémoire pour une structure de données : */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure de données */
|
||||||
|
/* (I) Size : taille mémoire à allouer */
|
||||||
|
/* (O) Ptr : adresse du pointeur sur la zone de données allouée */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Alloc_I( NDT_Root * Root, size_t Size, void ** Ptr);
|
||||||
|
DSD_API DST_Status DS_Alloc_L( NDT_Root * Root, size_t Size, void ** Ptr);
|
||||||
|
DSD_API DST_Status DS_Alloc_CL( NDT_Root * Root, size_t Size, void ** Ptr);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Désallocation d'une ressource pour une structure de données : */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* (I) Root : pointeur sur la racine de la structure de données */
|
||||||
|
/* (I) Ptr : pointeur sur la zone à désallouer */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
DSD_API DST_Status DS_Free_I( NDT_Root * Root, void * Ptr);
|
||||||
|
DSD_API DST_Status DS_Free_L( NDT_Root * Root, void * Ptr);
|
||||||
|
DSD_API DST_Status DS_Free_CL( NDT_Root * Root, void * Ptr);
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
//}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
12
lib/Makefile
12
lib/Makefile
@ -1,6 +1,6 @@
|
|||||||
SRC := libdatatstr.c
|
SRC := libdatastr.c
|
||||||
TARGETS := libdatatstr.a libdatatstr.so
|
TARGETS := libdatastr.a libdatastr.so
|
||||||
FILE_LIB := libdatatstr.a libdatatstr.so
|
FILE_LIB := libdatastr.a libdatastr.so
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -9,8 +9,8 @@ include ../Makefile.rule
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DEP += libdatatstr.h ../include/datatstr.h ../../liblog/include/log.h Makefile
|
DEP += libdatastr.h ../include/datastr.h ../../liblog/include/log.h ../../libnode/include/node.h ../../libshmem/include/shmem.h Makefile
|
||||||
INCLUDE += -I . -I ../include -I ../../liblog/include
|
INCLUDE += -I . -I ../include -I ../../liblog/include -I ../../libnode/include -I ../../libshmem/include
|
||||||
|
|
||||||
ifdef _LIBVER_SUPPORT
|
ifdef _LIBVER_SUPPORT
|
||||||
DEP += ../../libver/ver.h
|
DEP += ../../libver/ver.h
|
||||||
@ -19,4 +19,4 @@ endif
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
libdatatstr.o : libdatatstr.c $(DEP)
|
libdatastr.o : libdatastr.c $(DEP)
|
||||||
|
1492
lib/libdatastr.c
1492
lib/libdatastr.c
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,31 @@
|
|||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* libdatastr.h */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* This file is part of LibDataStr. */
|
||||||
|
/* */
|
||||||
|
/* LibDataStr is free software: you can redistribute it and/or modify it */
|
||||||
|
/* under the terms of the GNU Lesser General Public License as published */
|
||||||
|
/* by the Free Software Foundation, either version 3 of the License, or */
|
||||||
|
/* (at your option) any later version. */
|
||||||
|
/* */
|
||||||
|
/* LibDataStr is distributed in the hope that it will be useful, */
|
||||||
|
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
|
||||||
|
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
|
||||||
|
/* GNU Lesser General Public License for more details. */
|
||||||
|
/* */
|
||||||
|
/* You should have received a copy of the GNU Lesser General Public */
|
||||||
|
/* License along with LibDataStr. If not, see */
|
||||||
|
/* <https://www.gnu.org/licenses/>. */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Includes */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -7,7 +35,9 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/sem.h>
|
#include <sys/sem.h>
|
||||||
#include <sys/ipc.h>
|
#include <sys/ipc.h>
|
||||||
#include <ver.h>
|
|
||||||
|
//#include <ver.h>
|
||||||
|
|
||||||
#include <node.h>
|
#include <node.h>
|
||||||
#include <datastr.h>
|
#include <datastr.h>
|
||||||
|
|
||||||
@ -50,48 +80,48 @@ typedef struct {
|
|||||||
char * Name;
|
char * Name;
|
||||||
} DST_DataStruct;
|
} DST_DataStruct;
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Fonctions privées de la librairie */
|
/* Fonctions privées de la librairie */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Création d'un sémaphore pour gérer l'ouverture d'une data structure */
|
/* Création d'un sémaphore pour gérer l'ouverture d'une data structure */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
DST_Status DS_Semaphore_Create (NDT_Root * Root);
|
DST_Status DS_Semaphore_Create (NDT_Root * Root);
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Opération sur un sémaphore */
|
/* Opération sur un sémaphore */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
DST_Status DS_Semaphore_Operate (int, struct sembuf *, unsigned int);
|
DST_Status DS_Semaphore_Operate (int, struct sembuf *, unsigned int);
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Fonction d'allocation attachée à une structure de données : */
|
/* Fonction d'allocation attachée à une structure de données : */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
DST_Status DS_DataStruct_Alloc ( size_t Size, void ** Ptr, void * Data );
|
DST_Status DS_DataStruct_Alloc ( size_t Size, void ** Ptr, void * Data );
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Fonction de désallocation attachée à une structure de données : */
|
/* Fonction de désallocation attachée à une structure de données : */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
DST_Status DS_DataStruct_Free ( void * Ptr, void * Data );
|
DST_Status DS_DataStruct_Free ( void * Ptr, void * Data );
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Routine d'affichage d'un message d'erreur */
|
/* Routine d'affichage d'un message d'erreur */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
void DS_Error_Print ( void );
|
void DS_Error_Print ( void );
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Pour préfixer les noms de heap avec l'identifiant de la librairie */
|
/* Pour préfixer les noms de heap avec l'identifiant de la librairie */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
static char * DS_Name_Prefix (const char * Name);
|
static char * DS_Name_Prefix (const char * Name);
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Teste si une data structure a déjà été ouverte par le processus courant */
|
/* Teste si une data structure a déjà été ouverte par le processus courant */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
DST_Status DS_DataStruct_IsOpen (const char * DS_Name, NDT_Root ** Root);
|
DST_Status DS_DataStruct_IsOpen (const char * DS_Name, NDT_Root ** Root);
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Fonction manager de la liste des DS ouvertes */
|
/* Fonction manager de la liste des DS ouvertes */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
NDT_Status DS_OpenedDS_List_Manager (va_list Args);
|
NDT_Status DS_OpenedDS_List_Manager (va_list Args);
|
||||||
|
@ -11,12 +11,12 @@ include ../Makefile.rule
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DEP_STATIC += ../lib/libnode.a ../../liblog/lib/liblog.a
|
DEP_STATIC += ../lib/libdatastr.a ../../libshmem/lib/libshmem.a ../../libnode/lib/libnode.a ../../liblog/lib/liblog.a
|
||||||
DEP_DYNAMIC += ../lib/libnode.so ../../liblog/lib/liblog.so
|
DEP_DYNAMIC += ../lib/libdatastr.so ../lib/libnode.so ../../liblog/lib/liblog.so
|
||||||
INCLUDE += -I . -I ../include -I ../../liblog/include
|
INCLUDE += -I . -I ../include -I ../../liblog/include -I ../../libnode/include -I ../../libshmem/include
|
||||||
LIBDIR += -L . -L ../lib -L ../../liblog/lib
|
LIBDIR += -L . -L ../lib -L ../../liblog/lib -L ../../libnode/lib -L ../../libshmem/lib
|
||||||
LIB_STATIC += ../lib/libnode.a ../../liblog/lib/liblog.a -ldl
|
LIB_STATIC += ../lib/libdatastr.a ../../libshmem/lib/libshmem.a ../../libnode/lib/libnode.a ../../liblog/lib/liblog.a -ldl
|
||||||
LIB_DYNAMIC += -lnode -llog -ldl
|
LIB_DYNAMIC += -ldatastr -lshmem -lnode -llog -ldl
|
||||||
CFLAGS += -rdynamic
|
CFLAGS += -rdynamic
|
||||||
|
|
||||||
ifdef _LIBVER_SUPPORT
|
ifdef _LIBVER_SUPPORT
|
||||||
|
Loading…
Reference in New Issue
Block a user