Add dynamic symbol support to ND_Allocator_Exec_I(), ND_Desallocator_Exec_I(), ND_Manager_Exec_I() and ND_Manager_Exec_VI() functions, in order to add LibShMem support.
Break NDT_Allocator() API !!! Win32 not compatible... 8^( Code Cleanup.
This commit is contained in:
100
lib/libnode.h
100
lib/libnode.h
@@ -1,9 +1,9 @@
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
/* $RCSfile: libnode.h,v $ */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
/* $Revision: 2.7 $ */
|
||||
/* $Revision: 2.8 $ */
|
||||
/* $Name: $ */
|
||||
/* $Date: 2004/08/23 22:47:22 $ */
|
||||
/* $Date: 2005/01/11 20:57:04 $ */
|
||||
/* $Author: agibert $ */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
|
||||
@@ -32,11 +32,16 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
# include <errno.h>
|
||||
# include <signal.h>
|
||||
# include <setjmp.h>
|
||||
#include <errno.h>
|
||||
#include <signal.h>
|
||||
#include <setjmp.h>
|
||||
#include <dlfcn.h>
|
||||
|
||||
//#include <dlfcn.h>
|
||||
|
||||
|
||||
/* Utilisation des API de la LIBNODE sans vérification des arguments */
|
||||
|
||||
#define ND_MODE 1
|
||||
|
||||
#include <node.h>
|
||||
|
||||
@@ -88,6 +93,7 @@ typedef struct NDT_Base
|
||||
jmp_buf SigLongJmp_Env;
|
||||
#endif
|
||||
NDT_Symbol *Symbol_First_Ptr;
|
||||
void *DL_Ptr;
|
||||
NDT_Index_Type OpenStruct_Index_Type[1];
|
||||
NDT_Root *OpenStruct_Ptr;
|
||||
} NDT_Base;
|
||||
@@ -101,6 +107,7 @@ NDT_Base NDG_Base =
|
||||
0,
|
||||
{0},
|
||||
(NDT_Symbol *) NULL,
|
||||
NULL,
|
||||
{ NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_FIFO},
|
||||
(NDT_Root *) NULL
|
||||
};
|
||||
@@ -132,12 +139,12 @@ NDT_Status ND_OpenStruct_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_C
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Redéfinition de la fonction malloc() avec retour de type NDT_Status */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_Default_Allocator( size_t Size, void **ptr, void *User);
|
||||
NDT_Status ND_Default_Allocator( void **, size_t, void *);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Redéfinition de la fonction free() avec retour de type NDT_Status */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_Default_Desallocator( void *, void *);
|
||||
NDT_Status ND_Default_Desallocator( void *, void *);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Création d'un noeud */
|
||||
@@ -153,7 +160,7 @@ NDT_Status ND_Node_Alloc( NDT_Root * Root, NDT_Node ** New_Node);
|
||||
/* (I) Root : adresse de la racine dans laquelle on détruit un noeud */
|
||||
/* (I) Node : pointeur sur le noeud à détruire */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_Node_Free( NDT_Root *, NDT_Node *);
|
||||
NDT_Status ND_Node_Free( NDT_Root *, NDT_Node *);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Création d'une nouvelle structure de données */
|
||||
@@ -183,7 +190,7 @@ NDT_Status ND_Node_Root_Alloc( NDT_Root **, NDT_Index_Nb, NDT_Index_Type[], ch
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* (I) Root : pointeur sur la racine à détruire */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_Node_Root_Free( NDT_Root *);
|
||||
NDT_Status ND_Node_Root_Free( NDT_Root *);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Ajout d'un noeud à une liste chaînée */
|
||||
@@ -191,7 +198,7 @@ NDT_Status ND_Node_Root_Free( NDT_Root *);
|
||||
/* (I) Root : pointeur sur la racine de la liste */
|
||||
/* (I) New_Node : pointeur sur le noeud à ajouter */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_List_Node_Add( NDT_Root *, NDT_Index_Id, NDT_Node *);
|
||||
NDT_Status ND_List_Node_Add( NDT_Root *, NDT_Index_Id, NDT_Node *);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Ajout d'une nouvelle valeur à une liste */
|
||||
@@ -199,7 +206,7 @@ NDT_Status ND_List_Node_Add( NDT_Root *, NDT_Index_Id, NDT_Node *);
|
||||
/* (I) Root : pointeur sur la racine de la liste */
|
||||
/* (I) Value : pointeur sur la valeur à ajouter */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_List_Value_Add( NDT_Root *, NDT_Index_Id, void *);
|
||||
NDT_Status ND_List_Value_Add( NDT_Root *, NDT_Index_Id, void *);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Ajout d'un noeud à un arbre binaire */
|
||||
@@ -207,26 +214,26 @@ NDT_Status ND_List_Value_Add( NDT_Root *, NDT_Index_Id, void *);
|
||||
/* (I) Root : pointeur sur la racine de l'arbre */
|
||||
/* (I) Value : pointeur sur la valeur à ajouter */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_Tree_Value_Add( NDT_Root *, NDT_Index_Id, void *);
|
||||
NDT_Status ND_Tree_Value_Add( NDT_Root *, NDT_Index_Id, void *);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Supprime le noeud d'une liste */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* (I) Node : pointeur sur le noeud à supprimer */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_List_Node_Remove( NDT_Node *);
|
||||
NDT_Status ND_List_Node_Remove( NDT_Node *);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Conversion d'une structure en liste chaînée */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* (I) Root : pointeur sur la racine du la structure à convertir */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_List_Make( NDT_Root *, NDT_Index_Id);
|
||||
NDT_Status ND_List_Make( NDT_Root *, NDT_Index_Id);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Recherche une valeur dans une liste et retourne le noeud correspondant */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Node * ND_List_Node_Find( NDT_Root *, NDT_Index_Id, void *, va_list);
|
||||
NDT_Node *ND_List_Node_Find( NDT_Root *, NDT_Index_Id, void *, va_list);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Recherche un noeud dans un arbre et retourne le pointeur sur le noeud */
|
||||
@@ -239,28 +246,28 @@ NDT_Node *ND_Tree_Node_Find( NDT_Root *, NDT_Index_Id, void *, va_list);
|
||||
/* (I) Root : pointeur sur la racine du la structure à convertir */
|
||||
/* (I) Type : type du futur arbre */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_Tree_Make( NDT_Root *, NDT_Index_Id);
|
||||
NDT_Status ND_Tree_Make( NDT_Root *, NDT_Index_Id);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Equilibrage d'un arbre */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* (I) Root : pointeur sur la racine de l'arbre */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_Tree_Equalize( NDT_Root *, NDT_Index_Id);
|
||||
NDT_Status ND_Tree_Equalize( NDT_Root *, NDT_Index_Id);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Retourne la profondeur de la plus grande branche à partir d'un noeud */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* (I) Node : pointeur sur le noeud */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
long ND_Tree_MaxDepth_Get( NDT_Node *);
|
||||
long ND_Tree_MaxDepth_Get( NDT_Node *);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Retourne la profondeur de la plus petite branche à partir d'un noeud */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* (I) Node : pointeur sur le noeud */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
long ND_Tree_MinDepth_Get( NDT_Node *);
|
||||
long ND_Tree_MinDepth_Get( NDT_Node *);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Ajout d'un noeud à un arbre binaire */
|
||||
@@ -268,7 +275,7 @@ long ND_Tree_MinDepth_Get( NDT_Node *);
|
||||
/* (I) Root : pointeur sur la racine de l'arbre */
|
||||
/* (I) Node : pointeur sur le noeud à ajouter */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_Tree_Node_Add( NDT_Root *, NDT_Index_Id, NDT_Node *);
|
||||
NDT_Status ND_Tree_Node_Add( NDT_Root *, NDT_Index_Id, NDT_Node *);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Ajoute tous les noeud d'une liste à un arbre */
|
||||
@@ -276,60 +283,65 @@ NDT_Status ND_Tree_Node_Add( NDT_Root *, NDT_Index_Id, NDT_Node *);
|
||||
/* (I) Tree_Root : pointeur sur la racine de l'arbre */
|
||||
/* (I) List_Root : pointeur sur la racine de la liste */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_Tree_List_Add( NDT_Root *, NDT_Index_Id, NDT_Root *, NDT_Index_Id);
|
||||
NDT_Status ND_Tree_List_Add( NDT_Root *, NDT_Index_Id, NDT_Root *, NDT_Index_Id);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Fonction de comparaison de noeuds (pour le quick sort) */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
int ND_Node_Compare( void **, void **);
|
||||
int ND_Node_Compare( void **, void **);
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Ordonne une liste chaînée selon l'algorithme du tri à bulle */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* (I) Root : pointeur sur la racine de la liste à trier */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
NDT_Status ND_List_Sort( NDT_Root *, NDT_Index_Id);
|
||||
NDT_Status ND_List_Sort( NDT_Root *, NDT_Index_Id);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* Fonctions et procédures privées de la librairie (bas niveau) */
|
||||
/* PRIVATE FUNCTIONS */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------------------------*/
|
||||
|
||||
void ND_List_Check( NDT_Root *, NDT_Index_Id, int *, int *, FILE *);
|
||||
void ND_List_Check( NDT_Root *, NDT_Index_Id, int *, int *, FILE *);
|
||||
|
||||
void ND_List_Link_Check( NDT_Root *, NDT_Index_Id, int *, int *, FILE *);
|
||||
void ND_List_Link_Check( NDT_Root *, NDT_Index_Id, int *, int *, FILE *);
|
||||
|
||||
void ND_Value_Check( NDT_Root *, NDT_Index_Id, int *, int *, FILE *);
|
||||
void ND_Value_Check( NDT_Root *, NDT_Index_Id, int *, int *, FILE *);
|
||||
|
||||
void ND_Tree_Check( NDT_Root *, NDT_Index_Id, int *, int *, FILE *);
|
||||
void ND_Tree_Check( NDT_Root *, NDT_Index_Id, int *, int *, FILE *);
|
||||
|
||||
void ND_Tree_Link_Check( NDT_Root *, NDT_Index_Id, int *, int *, FILE *);
|
||||
void ND_Tree_Link_Check( NDT_Root *, NDT_Index_Id, int *, int *, FILE *);
|
||||
|
||||
NDT_Status ND_List_Recursive_Make( NDT_Node *, NDT_Root *, NDT_Index_Id);
|
||||
NDT_Status ND_List_Recursive_Make( NDT_Node *, NDT_Root *, NDT_Index_Id);
|
||||
|
||||
NDT_Node * ND_Tree_Recursive_Make( long, long, NDT_Node *);
|
||||
NDT_Node *ND_Tree_Recursive_Make( long, long, NDT_Node *);
|
||||
|
||||
void ND_Tree_Node_Recursive_Add( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Node **, long , NDT_Node *);
|
||||
void ND_Tree_Node_Recursive_Add( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Node **, long , NDT_Node *);
|
||||
|
||||
NDT_Node * ND_Tree_Node_First_Recursive_Get( NDT_Node *);
|
||||
NDT_Node *ND_Tree_Node_First_Recursive_Get( NDT_Node *);
|
||||
|
||||
NDT_Node * ND_Tree_Node_Last_Recursive_Get( NDT_Node *);
|
||||
NDT_Node *ND_Tree_Node_Last_Recursive_Get( NDT_Node *);
|
||||
|
||||
NDT_Node * ND_Tree_Node_Recursive_Find( NDT_Node *, void *, va_list);
|
||||
NDT_Node *ND_Tree_Node_Recursive_Find( NDT_Node *, void *, va_list);
|
||||
|
||||
NDT_Node * ND_Tree_Parent_Next_Recursive_Get( NDT_Node * Node);
|
||||
NDT_Node *ND_Tree_Parent_Next_Recursive_Get( NDT_Node *);
|
||||
|
||||
NDT_Node * ND_Tree_Parent_Previous_Recursive_Get( NDT_Node *);
|
||||
NDT_Node *ND_Tree_Parent_Previous_Recursive_Get( NDT_Node *);
|
||||
|
||||
void ND_Tree_Recursive_Print( NDT_Node *, long, FILE *);
|
||||
void ND_Tree_Recursive_Print( NDT_Node *, long, FILE *);
|
||||
|
||||
void ND_Tree_Link_Recursive_Check( NDT_Node *Node, int *, int *, FILE *);
|
||||
void ND_Tree_Link_Recursive_Check( NDT_Node *, int *, int *, FILE *);
|
||||
|
||||
void * ND_Symbol_Find( const char *);
|
||||
NDT_Status ND_Symbol_Find( void **, const char *);
|
||||
|
||||
void ND_Error_Print( void);
|
||||
void ND_Error_Print( void);
|
||||
|
||||
void ND_Signal_Trap( int);
|
||||
void ND_Signal_Trap( int);
|
||||
|
||||
NDT_Status ND_Address_Check(void *);
|
||||
NDT_Status ND_Address_Check( void *);
|
||||
|
||||
Reference in New Issue
Block a user