Add support C99 va_arg for curent gcc (4.4.1),
Add ND_VA_* macros to help manager varargs, Update Managers to use ND_VA_* macros, Add example manager template in public node.h file.
This commit is contained in:
parent
986c67d2fc
commit
8cfdf696d1
373
include/node.h
373
include/node.h
@ -1,9 +1,9 @@
|
|||||||
/*---------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------*/
|
||||||
/* $RCSfile: node.h,v $ */
|
/* $RCSfile: node.h,v $ */
|
||||||
/*---------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------*/
|
||||||
/* $Revision: 2.12 $ */
|
/* $Revision: 2.13 $ */
|
||||||
/* $Name: $ */
|
/* $Name: $ */
|
||||||
/* $Date: 2005/01/20 00:00:25 $ */
|
/* $Date: 2010/06/06 21:26:31 $ */
|
||||||
/* $Author: agibert $ */
|
/* $Author: agibert $ */
|
||||||
/*---------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
@ -151,6 +151,349 @@ typedef int NDT_Index_Type;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Manager Template */
|
||||||
|
|
||||||
|
// NDT_Status ND_Example_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Node *Node_Ptr, NDT_Command Command, va_list *Args_Ptr)
|
||||||
|
// {
|
||||||
|
// NDT_Command_Name Command_Name;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// switch( Command)
|
||||||
|
// {
|
||||||
|
// case NDD_CMD_MANAGER_VERSION:
|
||||||
|
// {
|
||||||
|
// ND_VA_ARG_GET( Version_Name_Ptr, *Args_Ptr, NDT_Version_Name *);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Command_Name = "NDD_CMD_MANAGER_VERSION";
|
||||||
|
//
|
||||||
|
// *Version_Name_Ptr = "$Revision: 2.13 $ $Name: $ $Date: 2010/06/06 21:26:31 $ $Author: agibert $";
|
||||||
|
//
|
||||||
|
// return( NDS_OK);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// case NDD_CMD_INDEX_GET:
|
||||||
|
// {
|
||||||
|
// /*
|
||||||
|
// ND_VA_ARG_GET( Reply_Index_Id_Ptr, *Args_Ptr, NDT_Index_Id *);
|
||||||
|
// ND_VA_ARG_GET( Reply_Command_Ptr, *Args_Ptr, NDT_Command *);
|
||||||
|
// ND_VA_ARG_GET( Cmd, *Args_Ptr, NDT_Command);
|
||||||
|
// ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
|
||||||
|
// */
|
||||||
|
// ND_VA_ARG_GET( Reply_Index_Id_Ptr, *Args_Ptr, NDT_Index_Id *);
|
||||||
|
// ND_VA_ARG_GET( Reply_Command_Ptr, *Args_Ptr, NDT_Command *);
|
||||||
|
// ND_VA_ARG_GET( Cmd, *Args_Ptr, NDT_Command);
|
||||||
|
// ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Command_Name = "NDD_CMD_INDEX_GET";
|
||||||
|
//
|
||||||
|
// switch(Cmd)
|
||||||
|
// {
|
||||||
|
// /*
|
||||||
|
// case NDT_CMD_SOME_USER_CMD:
|
||||||
|
// {
|
||||||
|
// *Reply_Index_Id_Ptr = 0;
|
||||||
|
// *Reply_Command_Ptr = NDD_CMD_SOME_OTHER_CMD;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// ...
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
// default:
|
||||||
|
// {
|
||||||
|
// *Reply_Index_Id_Ptr = Index_Id;
|
||||||
|
// *Reply_Command_Ptr = Cmd;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return( NDS_OK);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// case NDD_CMD_VALUE_ALLOC:
|
||||||
|
// {
|
||||||
|
// /*
|
||||||
|
// ND_VA_ARG_GET( Value_Ptr_Ptr, *Args_Ptr, void **);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_OPEN( user_args, *Args_Ptr);
|
||||||
|
//
|
||||||
|
// ND_VA_ARG_GET( user_data, user_args, user_type);
|
||||||
|
// ND_VA_ARG_GET( ..., user_args, ...);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_CLOSE( user_args);
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Command_Name = "NDD_CMD_VALUE_ALLOC";
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// if( ( *Value_Ptr_Ptr = (void *)malloc( sizeof(void))) == NULL)
|
||||||
|
// {
|
||||||
|
// return(NDS_ERRMEM);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// ...
|
||||||
|
//
|
||||||
|
// return( NDS_OK);
|
||||||
|
// }
|
||||||
|
// */
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// case NDD_CMD_VALUE_FREE:
|
||||||
|
// {
|
||||||
|
// /*
|
||||||
|
// ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_OPEN( user_args, *Args_Ptr);
|
||||||
|
//
|
||||||
|
// ND_VA_ARG_GET( user_data, user_args, user_type);
|
||||||
|
// ND_VA_ARG_GET( ..., user_args, ...);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_CLOSE( user_args);
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Command_Name = "NDD_CMD_VALUE_FREE";
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// free( Value_Ptr);
|
||||||
|
//
|
||||||
|
// return( NDS_OK);
|
||||||
|
// */
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// case NDD_CMD_VALUE_COMP:
|
||||||
|
// {
|
||||||
|
// /*
|
||||||
|
// ND_VA_ARG_GET( Value1_Ptr, *Args_Ptr, void *);
|
||||||
|
// ND_VA_ARG_GET( Value2_Ptr, *Args_Ptr, void *);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_OPEN( user_args, *Args_Ptr);
|
||||||
|
//
|
||||||
|
// ND_VA_ARG_GET( user_data, user_args, user_type);
|
||||||
|
// ND_VA_ARG_GET( ..., user_args, ...);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_CLOSE( user_args);
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Command_Name = "NDD_CMD_VALUE_COMP";
|
||||||
|
//
|
||||||
|
// switch( Index_Id)
|
||||||
|
// {
|
||||||
|
// case 0:
|
||||||
|
// {
|
||||||
|
// int rc;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// rc = strcmp( Value1_Ptr->..., Value2_Ptr->...);
|
||||||
|
//
|
||||||
|
// if( rc < 0)
|
||||||
|
// {
|
||||||
|
// return(NDS_LOWER);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// if( rc > 0)
|
||||||
|
// {
|
||||||
|
// return(NDS_GREATER);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// return(NDS_EQUAL);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// case 1:
|
||||||
|
// {
|
||||||
|
// int val1 = atoi(Value1_Ptr->...);
|
||||||
|
// int val2 = atoi(Value2_Ptr->...);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// if( val1 < val2)
|
||||||
|
// {
|
||||||
|
// return(NDS_LOWER);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// if( val1 > val2)
|
||||||
|
// {
|
||||||
|
// return(NDS_GREATER);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// return(NDS_EQUAL);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// case 2:
|
||||||
|
// {
|
||||||
|
// ...
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// default:
|
||||||
|
// {
|
||||||
|
// printf( "Unknown COMP idx (%d) !\n", Index_Id);
|
||||||
|
// return( NDS_KO);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return( NDS_OK);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// case NDD_CMD_VALUE_ADD:
|
||||||
|
// {
|
||||||
|
// /*
|
||||||
|
// ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_OPEN( user_args, *Args_Ptr);
|
||||||
|
//
|
||||||
|
// ND_VA_ARG_GET( user_data, user_args, user_type);
|
||||||
|
// ND_VA_ARG_GET( ..., user_args, ...);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_CLOSE( user_args);
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Command_Name = "NDD_CMD_VALUE_ADD";
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// return( NDS_OK);
|
||||||
|
// */
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// case NDD_CMD_VALUE_REMOVE:
|
||||||
|
// {
|
||||||
|
// /*
|
||||||
|
// ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_OPEN( user_args, *Args_Ptr);
|
||||||
|
//
|
||||||
|
// ND_VA_ARG_GET( user_data, user_args, user_type);
|
||||||
|
// ND_VA_ARG_GET( ..., user_args, ...);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_CLOSE( user_args);
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Command_Name = "NDD_CMD_VALUE_REMOVE";
|
||||||
|
// /*
|
||||||
|
// return( NDS_OK);
|
||||||
|
// */
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// case NDD_CMD_VALUE_PRINT:
|
||||||
|
// {
|
||||||
|
// /*
|
||||||
|
// ND_VA_ARG_GET( Next_Node_Ptr, *Args_Ptr, NDT_Node *);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_OPEN( lib_args, *Args_Ptr);
|
||||||
|
//
|
||||||
|
// ND_VA_ARG_GET( Out, lib_args, FILE *);
|
||||||
|
// ND_VA_ARG_GET( Recursive_Mode, lib_args, NDT_Recursive_Mode);
|
||||||
|
// ND_VA_ARG_GET( Recursive_Depth, lib_args, NDT_Recursive_Depth);
|
||||||
|
// ND_VA_ARG_GET( Recursive_Offset, lib_args, NDT_Recursive_Offset);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_OPEN( user_args, lib_args);
|
||||||
|
//
|
||||||
|
// ND_VA_ARG_GET( user_data, user_args, user_type);
|
||||||
|
// ND_VA_ARG_GET( ..., user_args, ...);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_CLOSE( user_args);
|
||||||
|
// ND_VA_LIST_CLOSE( lib_args);
|
||||||
|
//
|
||||||
|
// void *Value_Ptr = Node_Ptr->Value;
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Command_Name = "NDD_CMD_VALUE_PRINT";
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// fprintf( Out, "...\n", Value_Ptr->..., ...);
|
||||||
|
//
|
||||||
|
// return( NDS_OK);
|
||||||
|
// */
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// case NDD_CMD_INFO_PRINT:
|
||||||
|
// {
|
||||||
|
// /*
|
||||||
|
// ND_VA_ARG_GET( Next_Node_Ptr, *Args_Ptr, NDT_Node *);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_OPEN( lib_args, *Args_Ptr);
|
||||||
|
//
|
||||||
|
// ND_VA_ARG_GET( Out, lib_args, FILE *);
|
||||||
|
// ND_VA_ARG_GET( Recursive_Mode, lib_args, NDT_Recursive_Mode);
|
||||||
|
// ND_VA_ARG_GET( Recursive_Depth, lib_args, NDT_Recursive_Depth);
|
||||||
|
// ND_VA_ARG_GET( Recursive_Offset, lib_args, NDT_Recursive_Offset);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_OPEN( user_args, lib_args);
|
||||||
|
//
|
||||||
|
// ND_VA_ARG_GET( user_data, user_args, user_type);
|
||||||
|
// ND_VA_ARG_GET( ..., user_args, ...);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_CLOSE( user_args);
|
||||||
|
// ND_VA_LIST_CLOSE( lib_args);
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Command_Name = "NDD_CMD_INFO_PRINT";
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// return( NDS_OK);
|
||||||
|
// */
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// case NDD_CMD_USER_TRAVERSE:
|
||||||
|
// {
|
||||||
|
// /*
|
||||||
|
// ND_VA_ARG_GET( Next_Node_Ptr, *Args_Ptr, NDT_Node *);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_OPEN( user_args, *Args_Ptr);
|
||||||
|
//
|
||||||
|
// ND_VA_ARG_GET( user_data, user_args, user_type);
|
||||||
|
// ND_VA_ARG_GET( ..., user_args, ...);
|
||||||
|
//
|
||||||
|
// ND_VA_LIST_CLOSE( user_args);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// void *Value_Ptr = Node_Ptr->Value;
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Command_Name = "NDD_CMD_USER_TRAVERSE";
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// return( NDS_OK);
|
||||||
|
// */
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// default:
|
||||||
|
// {
|
||||||
|
// printf( "ND_Default_Manager() called with an undefined command %d\n", Command);
|
||||||
|
// return(NDS_ERRAPI);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// printf( "ND_Default_Manager() called with command %d (%s)\n", Command, Command_Name);
|
||||||
|
// return(NDS_OK);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Var Args Manager Macros */
|
||||||
|
|
||||||
|
#define ND_VA_LIST_OPEN( VA_List_Target, VA_List_Source) va_list VA_List_Target; va_copy( VA_List_Target, *va_arg( VA_List_Source, va_list *))
|
||||||
|
#define ND_VA_LIST_CLOSE( VA_List) va_end( VA_List)
|
||||||
|
#define ND_VA_ARG_GET( Arg, VA_List, Type) Type Arg = va_arg( VA_List, Type)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Commandes du manager */
|
/* Commandes du manager */
|
||||||
|
|
||||||
typedef int NDT_Command;
|
typedef int NDT_Command;
|
||||||
@ -216,7 +559,7 @@ struct NDT_Node;
|
|||||||
|
|
||||||
typedef char *NDT_Manager_Name;
|
typedef char *NDT_Manager_Name;
|
||||||
|
|
||||||
typedef NDT_Status NDT_Manager( struct NDT_Root *, NDT_Index_Id, struct NDT_Node *, NDT_Command, va_list);
|
typedef NDT_Status NDT_Manager( struct NDT_Root *, NDT_Index_Id, struct NDT_Node *, NDT_Command, va_list *);
|
||||||
|
|
||||||
|
|
||||||
/* Pointeur de fonction sur l'allocateur */
|
/* Pointeur de fonction sur l'allocateur */
|
||||||
@ -553,8 +896,8 @@ NDD_DLL_API NDT_Status ND_DataStruct_Convert_C( NDT_Root *, NDT_Index_Type *)
|
|||||||
/* (I) Command: Commande à exécuter sur chaque noeud traversé */
|
/* (I) Command: Commande à exécuter sur chaque noeud traversé */
|
||||||
/* (I) Data: pointeur de données utilisateur */
|
/* (I) Data: pointeur de données utilisateur */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
NDD_DLL_API NDT_Status ND_DataStruct_Traverse_VI( NDT_Root *, NDT_Command, va_list);
|
NDD_DLL_API NDT_Status ND_DataStruct_Traverse_VI( NDT_Root *, NDT_Command, va_list *);
|
||||||
NDD_DLL_API NDT_Status ND_DataStruct_Traverse_VC( NDT_Root *, NDT_Command, va_list);
|
NDD_DLL_API NDT_Status ND_DataStruct_Traverse_VC( NDT_Root *, NDT_Command, va_list *);
|
||||||
NDD_DLL_API NDT_Status ND_DataStruct_Traverse_I( NDT_Root *, NDT_Command, ...);
|
NDD_DLL_API NDT_Status ND_DataStruct_Traverse_I( NDT_Root *, NDT_Command, ...);
|
||||||
NDD_DLL_API NDT_Status ND_DataStruct_Traverse_C( NDT_Root *, NDT_Command, ...);
|
NDD_DLL_API NDT_Status ND_DataStruct_Traverse_C( NDT_Root *, NDT_Command, ...);
|
||||||
|
|
||||||
@ -600,7 +943,7 @@ NDD_DLL_API NDT_Status ND_DataStruct_Value_Remove_C( NDT_Root *, void *);
|
|||||||
/* (I) Root: pointeur sur la racine de la structure de données */
|
/* (I) Root: pointeur sur la racine de la structure de données */
|
||||||
/* (I) Out : flux de sortie */
|
/* (I) Out : flux de sortie */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
NDD_DLL_API NDT_Status ND_DataStruct_Value_Print_VI( FILE *, NDT_Root *, NDT_Recursive_Mode, NDT_Recursive_Depth, NDT_Recursive_Offset, va_list);
|
NDD_DLL_API NDT_Status ND_DataStruct_Value_Print_VI( FILE *, NDT_Root *, NDT_Recursive_Mode, NDT_Recursive_Depth, NDT_Recursive_Offset, va_list *);
|
||||||
NDD_DLL_API NDT_Status ND_DataStruct_Value_Print_I( FILE *, NDT_Root *, NDT_Recursive_Mode, NDT_Recursive_Depth, NDT_Recursive_Offset, ...);
|
NDD_DLL_API NDT_Status ND_DataStruct_Value_Print_I( FILE *, NDT_Root *, NDT_Recursive_Mode, NDT_Recursive_Depth, NDT_Recursive_Offset, ...);
|
||||||
NDD_DLL_API NDT_Status ND_DataStruct_Value_Print_C( FILE *, NDT_Root *, NDT_Recursive_Mode, NDT_Recursive_Depth, NDT_Recursive_Offset, ...);
|
NDD_DLL_API NDT_Status ND_DataStruct_Value_Print_C( FILE *, NDT_Root *, NDT_Recursive_Mode, NDT_Recursive_Depth, NDT_Recursive_Offset, ...);
|
||||||
|
|
||||||
@ -615,8 +958,8 @@ NDD_DLL_API NDT_Status ND_DataStruct_Value_Print_C( FILE *, NDT_Root *, NDT_
|
|||||||
/* (I) Data : pointeur de données */
|
/* (I) Data : pointeur de données */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
NDD_DLL_API NDT_Status ND_DataStruct_Value_Find_VI( void **, NDT_Root *, void *, va_list);
|
NDD_DLL_API NDT_Status ND_DataStruct_Value_Find_VI( void **, NDT_Root *, void *, va_list *);
|
||||||
NDD_DLL_API NDT_Status ND_DataStruct_Value_Find_VC( void **, NDT_Root *, void *, va_list);
|
NDD_DLL_API NDT_Status ND_DataStruct_Value_Find_VC( void **, NDT_Root *, void *, va_list *);
|
||||||
NDD_DLL_API NDT_Status ND_DataStruct_Value_Find_I( void **, NDT_Root *, void *, ...);
|
NDD_DLL_API NDT_Status ND_DataStruct_Value_Find_I( void **, NDT_Root *, void *, ...);
|
||||||
NDD_DLL_API NDT_Status ND_DataStruct_Value_Find_C( void **, NDT_Root *, void *, ...);
|
NDD_DLL_API NDT_Status ND_DataStruct_Value_Find_C( void **, NDT_Root *, void *, ...);
|
||||||
|
|
||||||
@ -703,8 +1046,8 @@ NDD_DLL_API NDT_Status ND_Index_Reorg_C( NDT_Root *, NDT_Index_Id);
|
|||||||
/* (I) Command: Commande à exécuter sur chaque noeud traversé */
|
/* (I) Command: Commande à exécuter sur chaque noeud traversé */
|
||||||
/* (I) Data: pointeur de données utilisateur */
|
/* (I) Data: pointeur de données utilisateur */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
NDD_DLL_API NDT_Status ND_Index_Traverse_VI( NDT_Root *, NDT_Index_Id, NDT_Command, va_list);
|
NDD_DLL_API NDT_Status ND_Index_Traverse_VI( NDT_Root *, NDT_Index_Id, NDT_Command, va_list *);
|
||||||
NDD_DLL_API NDT_Status ND_Index_Traverse_VC( NDT_Root *, NDT_Index_Id, NDT_Command, va_list);
|
NDD_DLL_API NDT_Status ND_Index_Traverse_VC( NDT_Root *, NDT_Index_Id, NDT_Command, va_list *);
|
||||||
NDD_DLL_API NDT_Status ND_Index_Traverse_I( NDT_Root *, NDT_Index_Id, NDT_Command, ...);
|
NDD_DLL_API NDT_Status ND_Index_Traverse_I( NDT_Root *, NDT_Index_Id, NDT_Command, ...);
|
||||||
NDD_DLL_API NDT_Status ND_Index_Traverse_C( NDT_Root *, NDT_Index_Id, NDT_Command, ...);
|
NDD_DLL_API NDT_Status ND_Index_Traverse_C( NDT_Root *, NDT_Index_Id, NDT_Command, ...);
|
||||||
|
|
||||||
@ -752,7 +1095,7 @@ NDD_DLL_API NDT_Status ND_Index_Value_Remove_C( NDT_Root *, NDT_Index_Id, void
|
|||||||
/* (I) Root: pointeur sur la racine de la structure de données */
|
/* (I) Root: pointeur sur la racine de la structure de données */
|
||||||
/* (I) Out : flux de sortie */
|
/* (I) Out : flux de sortie */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
NDD_DLL_API NDT_Status ND_Index_Value_Print_VI( FILE *, NDT_Root *, NDT_Index_Id, NDT_Recursive_Mode, NDT_Recursive_Depth, NDT_Recursive_Offset, va_list);
|
NDD_DLL_API NDT_Status ND_Index_Value_Print_VI( FILE *, NDT_Root *, NDT_Index_Id, NDT_Recursive_Mode, NDT_Recursive_Depth, NDT_Recursive_Offset, va_list *);
|
||||||
NDD_DLL_API NDT_Status ND_Index_Value_Print_I( FILE *, NDT_Root *, NDT_Index_Id, NDT_Recursive_Mode, NDT_Recursive_Depth, NDT_Recursive_Offset, ...);
|
NDD_DLL_API NDT_Status ND_Index_Value_Print_I( FILE *, NDT_Root *, NDT_Index_Id, NDT_Recursive_Mode, NDT_Recursive_Depth, NDT_Recursive_Offset, ...);
|
||||||
NDD_DLL_API NDT_Status ND_Index_Value_Print_C( FILE *, NDT_Root *, NDT_Index_Id, NDT_Recursive_Mode, NDT_Recursive_Depth, NDT_Recursive_Offset, ...);
|
NDD_DLL_API NDT_Status ND_Index_Value_Print_C( FILE *, NDT_Root *, NDT_Index_Id, NDT_Recursive_Mode, NDT_Recursive_Depth, NDT_Recursive_Offset, ...);
|
||||||
|
|
||||||
@ -831,8 +1174,8 @@ NDD_DLL_API NDT_Status ND_Index_Node_Previous_Get_C( NDT_Node **, NDT_Node *)
|
|||||||
/* (I) Value : pointeur sur la valeur à rechercher */
|
/* (I) Value : pointeur sur la valeur à rechercher */
|
||||||
/* (I) Data : pointeur de données */
|
/* (I) Data : pointeur de données */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
NDD_DLL_API NDT_Status ND_Index_Node_Find_VI( NDT_Node **, NDT_Root *, NDT_Index_Id, void *, va_list);
|
NDD_DLL_API NDT_Status ND_Index_Node_Find_VI( NDT_Node **, NDT_Root *, NDT_Index_Id, void *, va_list *);
|
||||||
NDD_DLL_API NDT_Status ND_Index_Node_Find_VC( NDT_Node **, NDT_Root *, NDT_Index_Id, void *, va_list);
|
NDD_DLL_API NDT_Status ND_Index_Node_Find_VC( NDT_Node **, NDT_Root *, NDT_Index_Id, void *, va_list *);
|
||||||
NDD_DLL_API NDT_Status ND_Index_Node_Find_I( NDT_Node **, NDT_Root *, NDT_Index_Id, void *, ...);
|
NDD_DLL_API NDT_Status ND_Index_Node_Find_I( NDT_Node **, NDT_Root *, NDT_Index_Id, void *, ...);
|
||||||
NDD_DLL_API NDT_Status ND_Index_Node_Find_C( NDT_Node **, NDT_Root *, NDT_Index_Id, void *, ...);
|
NDD_DLL_API NDT_Status ND_Index_Node_Find_C( NDT_Node **, NDT_Root *, NDT_Index_Id, void *, ...);
|
||||||
|
|
||||||
@ -877,8 +1220,8 @@ NDD_DLL_API NDT_Status ND_Value_Free_C( NDT_Root *, void *);
|
|||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
/* (I) Function : nom de la fonction manager à exécuter */
|
/* (I) Function : nom de la fonction manager à exécuter */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
NDD_DLL_API NDT_Status ND_Manager_Exec_VI( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list);
|
NDD_DLL_API NDT_Status ND_Manager_Exec_VI( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list *);
|
||||||
NDD_DLL_API NDT_Status ND_Manager_Exec_VC( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list);
|
NDD_DLL_API NDT_Status ND_Manager_Exec_VC( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list *);
|
||||||
NDD_DLL_API NDT_Status ND_Manager_Exec_I( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, ...);
|
NDD_DLL_API NDT_Status ND_Manager_Exec_I( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, ...);
|
||||||
NDD_DLL_API NDT_Status ND_Manager_Exec_C( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, ...);
|
NDD_DLL_API NDT_Status ND_Manager_Exec_C( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, ...);
|
||||||
|
|
||||||
|
565
lib/libnode.c
565
lib/libnode.c
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,9 @@
|
|||||||
/*---------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------*/
|
||||||
/* $RCSfile: libnode.h,v $ */
|
/* $RCSfile: libnode.h,v $ */
|
||||||
/*---------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------*/
|
||||||
/* $Revision: 2.9 $ */
|
/* $Revision: 2.10 $ */
|
||||||
/* $Name: $ */
|
/* $Name: $ */
|
||||||
/* $Date: 2005/01/19 23:59:42 $ */
|
/* $Date: 2010/06/06 21:26:31 $ */
|
||||||
/* $Author: agibert $ */
|
/* $Author: agibert $ */
|
||||||
/*---------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
@ -127,14 +127,14 @@ NDT_Base NDG_Base =
|
|||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
/* (I) va_list Arguments : Liste d'arguments contextuels */
|
/* (I) va_list Arguments : Liste d'arguments contextuels */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
NDT_Status ND_Default_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list);
|
NDT_Status ND_Default_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list *);
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
/* OpenStruct Manager */
|
/* OpenStruct Manager */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
/* (I) va_list Arguments : Liste d'arguments contextuels */
|
/* (I) va_list Arguments : Liste d'arguments contextuels */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
NDT_Status ND_OpenStruct_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list);
|
NDT_Status ND_OpenStruct_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list *);
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
/* Redéfinition de la fonction malloc() avec retour de type NDT_Status */
|
/* Redéfinition de la fonction malloc() avec retour de type NDT_Status */
|
||||||
@ -233,12 +233,12 @@ NDT_Status ND_List_Make( NDT_Root *, NDT_Index_Id);
|
|||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
/* Recherche une valeur dans une liste et retourne le noeud correspondant */
|
/* 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 */
|
/* Recherche un noeud dans un arbre et retourne le pointeur sur le noeud */
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
NDT_Node *ND_Tree_Node_Find( NDT_Root *, NDT_Index_Id, void *, va_list);
|
NDT_Node *ND_Tree_Node_Find( NDT_Root *, NDT_Index_Id, void *, va_list *);
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
/* Conversion d'une structure en arbre binaire */
|
/* Conversion d'une structure en arbre binaire */
|
||||||
@ -328,7 +328,7 @@ 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 *);
|
NDT_Node *ND_Tree_Parent_Next_Recursive_Get( NDT_Node *);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user