Add LibNode 2.2 support: Use ND_VA_* macros in manager.

This commit is contained in:
agibert 2010-06-06 21:27:12 +00:00
parent 8cfdf696d1
commit 90eb853801
2 changed files with 218 additions and 135 deletions

View File

@ -1,9 +1,9 @@
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
/* $RCSfile: nddemo0.c,v $ */ /* $RCSfile: nddemo0.c,v $ */
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
/* $Revision: 2.8 $ */ /* $Revision: 2.9 $ */
/* $Name: $ */ /* $Name: $ */
/* $Date: 2004/08/23 22:48:37 $ */ /* $Date: 2010/06/06 21:27:12 $ */
/* $Author: agibert $ */ /* $Author: agibert $ */
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
@ -64,7 +64,7 @@ typedef struct Demo_Value
/* Prototypes */ /* Prototypes */
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
NDT_Status Demo_DS_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list); NDT_Status Demo_DS_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list *);
void DataStruct_Load( NDT_Root *, FILE *); void DataStruct_Load( NDT_Root *, FILE *);
void DataStruct_Load( NDT_Root *, FILE *); void DataStruct_Load( NDT_Root *, FILE *);
void Demo( char *, short); void Demo( char *, short);
@ -80,7 +80,7 @@ int main( int, char **);
/* */ /* */
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
NDT_Status Demo_DS_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Node *Node_Ptr, NDT_Command Command, va_list Args) NDT_Status Demo_DS_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; NDT_Command_Name Command_Name;
@ -89,12 +89,12 @@ NDT_Status Demo_DS_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_No
{ {
case NDD_CMD_MANAGER_VERSION: case NDD_CMD_MANAGER_VERSION:
{ {
NDT_Version_Name *Version_Name_Ptr = (NDT_Version_Name *)va_arg( Args, NDT_Version_Name *); ND_VA_ARG_GET( Version_Name_Ptr, *Args_Ptr, NDT_Version_Name *);
Command_Name = "NDD_CMD_MANAGER_VERSION"; Command_Name = "NDD_CMD_MANAGER_VERSION";
*Version_Name_Ptr = "$Revision: 2.8 $ $Name: $ $Date: 2004/08/23 22:48:37 $ $Author: agibert $"; *Version_Name_Ptr = "$Revision: 2.9 $ $Name: $ $Date: 2010/06/06 21:27:12 $ $Author: agibert $";
return( NDS_OK); return( NDS_OK);
} }
@ -102,15 +102,15 @@ NDT_Status Demo_DS_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_No
case NDD_CMD_INDEX_GET: case NDD_CMD_INDEX_GET:
{ {
/* /*
NDT_Index_Id *Reply_Index_Id_Ptr = (NDT_Index_Id *)va_arg( Args, NDT_Index_Id *); ND_VA_ARG_GET( Reply_Index_Id_Ptr, *Args_Ptr, NDT_Index_Id *);
NDT_Command *Reply_Command_Ptr = (NDT_Command *)va_arg( Args, NDT_Command *); ND_VA_ARG_GET( Reply_Command_Ptr, *Args_Ptr, NDT_Command *);
NDT_Command Cmd = (NDT_Command)va_arg( Args, NDT_Command); ND_VA_ARG_GET( Cmd, *Args_Ptr, NDT_Command);
void *Value_ptr = (void *)va_arg( Args, void *); ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
*/ */
NDT_Index_Id *Reply_Index_Id_Ptr = (NDT_Index_Id *)va_arg( Args, NDT_Index_Id *); ND_VA_ARG_GET( Reply_Index_Id_Ptr, *Args_Ptr, NDT_Index_Id *);
NDT_Command *Reply_Command_Ptr = (NDT_Command *)va_arg( Args, NDT_Command *); ND_VA_ARG_GET( Reply_Command_Ptr, *Args_Ptr, NDT_Command *);
NDT_Command Cmd = (NDT_Command)va_arg( Args, NDT_Command); ND_VA_ARG_GET( Cmd, *Args_Ptr, NDT_Command);
Demo_Value *Value_ptr = (Demo_Value *)va_arg( Args, Demo_Value *); ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, Demo_Value *);
Command_Name = "NDD_CMD_INDEX_GET"; Command_Name = "NDD_CMD_INDEX_GET";
@ -159,12 +159,15 @@ NDT_Status Demo_DS_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_No
case NDD_CMD_VALUE_ALLOC: case NDD_CMD_VALUE_ALLOC:
{ {
/* /*
void **Value_Ptr_Ptr = (void **)va_arg( Args, void **); ND_VA_ARG_GET( Value_Ptr_Ptr, *Args_Ptr, void **);
va_list user_args = (va_list)va_arg( Args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type); ND_VA_LIST_OPEN( user_args, *Args_Ptr);
... = (...)va_arg( user_args, ...); ND_VA_ARG_GET( user_data, user_args, user_type);
ND_VA_ARG_GET( ..., user_args, ...);
ND_VA_LIST_CLOSE( user_args);
*/ */
Demo_Value **Value_Ptr_Ptr = va_arg( Args, Demo_Value **); ND_VA_ARG_GET( Value_Ptr_Ptr, *Args_Ptr, Demo_Value **);
Command_Name = "NDD_CMD_VALUE_ALLOC"; Command_Name = "NDD_CMD_VALUE_ALLOC";
@ -187,12 +190,15 @@ NDT_Status Demo_DS_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_No
case NDD_CMD_VALUE_FREE: case NDD_CMD_VALUE_FREE:
{ {
/* /*
void *Value_Ptr = (void *)va_arg( Args, void *); ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
va_list user_args = (va_list)va_arg( Args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type); ND_VA_LIST_OPEN( user_args, *Args_Ptr);
... = (...)va_arg( user_args, ...); ND_VA_ARG_GET( user_data, user_args, user_type);
ND_VA_ARG_GET( ..., user_args, ...);
ND_VA_LIST_CLOSE( user_args);
*/ */
Demo_Value *Value_Ptr = (Demo_Value *)va_arg( Args, Demo_Value *); ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, Demo_Value *);
Command_Name = "NDD_CMD_VALUE_FREE"; Command_Name = "NDD_CMD_VALUE_FREE";
@ -205,14 +211,17 @@ NDT_Status Demo_DS_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_No
case NDD_CMD_VALUE_COMP: case NDD_CMD_VALUE_COMP:
{ {
/* /*
void *Value1_Ptr = (void *)va_arg( Args, void *); ND_VA_ARG_GET( Value1_Ptr, *Args_Ptr, void *);
void *Value2_Ptr = (void *)va_arg( Args, void *); ND_VA_ARG_GET( Value2_Ptr, *Args_Ptr, void *);
va_list user_args = (va_list)va_arg( Args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type); ND_VA_LIST_OPEN( user_args, *Args_Ptr);
... = (...)va_arg( user_args, ...); ND_VA_ARG_GET( user_data, user_args, user_type);
ND_VA_ARG_GET( ..., user_args, ...);
ND_VA_LIST_CLOSE( user_args);
*/ */
Demo_Value *Value1_Ptr = va_arg( Args, Demo_Value *); ND_VA_ARG_GET( Value1_Ptr, *Args_Ptr, Demo_Value *);
Demo_Value *Value2_Ptr = va_arg( Args, Demo_Value *); ND_VA_ARG_GET( Value2_Ptr, *Args_Ptr, Demo_Value *);
Command_Name = "NDD_CMD_VALUE_COMP"; Command_Name = "NDD_CMD_VALUE_COMP";
@ -302,12 +311,17 @@ NDT_Status Demo_DS_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_No
case NDD_CMD_VALUE_ADD: case NDD_CMD_VALUE_ADD:
{ {
/* /*
void *Value_Ptr = (void *)va_arg( Args, void *); ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
va_list user_args = (va_list)va_arg( Args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type); ND_VA_LIST_OPEN( user_args, *Args_Ptr);
... = (...)va_arg( user_args, ...);
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"; Command_Name = "NDD_CMD_VALUE_ADD";
return( NDS_OK); return( NDS_OK);
@ -316,36 +330,54 @@ NDT_Status Demo_DS_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_No
case NDD_CMD_VALUE_REMOVE: case NDD_CMD_VALUE_REMOVE:
{ {
/* /*
void *Value_Ptr = (void *)va_arg( Args, void *); ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
va_list user_args = (va_list)va_arg( Args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type); ND_VA_LIST_OPEN( user_args, *Args_Ptr);
... = (...)va_arg( user_args, ...);
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"; Command_Name = "NDD_CMD_VALUE_REMOVE";
return( NDS_OK); return( NDS_OK);
} }
case NDD_CMD_VALUE_PRINT: case NDD_CMD_VALUE_PRINT:
{ {
/* /*
NDT_Node *Next_Node_Ptr = (NDT_Node *)va_arg( Args, NDT_Node *); ND_VA_ARG_GET( Next_Node_Ptr, *Args_Ptr, NDT_Node *);
va_list lib_args = (va_list)va_arg( Args, va_list);
FILE *Out = (FILE *)va_arg( lib_args, FILE *);
NDT_Recursive_Mode Recursive_Mode = (NDT_Recursive_Mode)va_arg( lib_args, NDT_Recursive_Mode);
NDT_Recursive_Depth Recursive_Depth = (NDT_Recursive_Depth)va_arg( lib_args, NDT_Recursive_Depth);
va_list user_args = (va_list)va_arg( lib_args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type);
... = (...)va_arg( user_args, ...);
void *Value_Ptr = Node_Ptr->Value; 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);
*/ */
NDT_Node *Next_Node_Ptr = (NDT_Node *)va_arg( Args, NDT_Node *); ND_VA_ARG_GET( Next_Node_Ptr, *Args_Ptr, NDT_Node *);
va_list lib_args = (va_list)va_arg( Args, va_list);
FILE *Out = (FILE *)va_arg( lib_args, FILE *); ND_VA_LIST_OPEN( lib_args, *Args_Ptr);
NDT_Recursive_Mode Recursive_Mode = (NDT_Recursive_Mode)va_arg( lib_args, NDT_Recursive_Mode);
NDT_Recursive_Depth Recursive_Depth = (NDT_Recursive_Depth)va_arg( lib_args, NDT_Recursive_Depth); 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_CLOSE( lib_args);
Demo_Value *Value_Ptr = Node_Ptr->Value; Demo_Value *Value_Ptr = Node_Ptr->Value;
@ -361,18 +393,25 @@ NDT_Status Demo_DS_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_No
case NDD_CMD_INFO_PRINT: case NDD_CMD_INFO_PRINT:
{ {
/* /*
NDT_Node *Next_Node_Ptr = (NDT_Node *)va_arg( Args, NDT_Node *); ND_VA_ARG_GET( Next_Node_Ptr, *Args_Ptr, NDT_Node *);
va_list lib_args = (va_list)va_arg( Args, va_list);
FILE *Out = (FILE *)va_arg( lib_args, FILE *);
NDT_Recursive_Mode Recursive_Mode = (NDT_Recursive_Mode)va_arg( lib_args, NDT_Recursive_Mode);
NDT_Recursive_Depth Recursive_Depth = (NDT_Recursive_Depth)va_arg( lib_args, NDT_Recursive_Depth);
va_list user_args = (va_list)va_arg( lib_args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type);
... = (...)va_arg( user_args, ...);
void *Value_Ptr = Node_Ptr->Value; 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"; Command_Name = "NDD_CMD_INFO_PRINT";
return( NDS_OK); return( NDS_OK);
@ -409,7 +448,7 @@ void DataStruct_Load( NDT_Root *ds_ptr, FILE *demo_file)
while( !feof( demo_file)) while( !feof( demo_file))
{ {
str = fgets( input_string, STRING_SIZE, demo_file); str = fgets( input_string, STRING_SIZE, demo_file);
if( ( (const int)str != EOF) && ( str != NULL)) if( str != NULL)
{ {
if( strlen( input_string) >= STRING_LEN) if( strlen( input_string) >= STRING_LEN)
{ {

View File

@ -1,9 +1,9 @@
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
/* $RCSfile: ndbench.c,v $ */ /* $RCSfile: ndbench.c,v $ */
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
/* $Revision: 2.9 $ */ /* $Revision: 2.10 $ */
/* $Name: $ */ /* $Name: $ */
/* $Date: 2005/01/20 00:07:27 $ */ /* $Date: 2010/06/06 21:27:12 $ */
/* $Author: agibert $ */ /* $Author: agibert $ */
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
@ -59,7 +59,7 @@
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
#ifdef _LIBVER_SUPPORT #ifdef _LIBVER_SUPPORT
VER_INFO_EXPORT( ndbench, "$Revision: 2.9 $", "$Name: $", __FILE__, "$Author: agibert $"); VER_INFO_EXPORT( ndbench, "$Revision: 2.10 $", "$Name: $", __FILE__, "$Author: agibert $");
# define USAGE "Usage : %s [ --help | --version [-v] | --batch_run <batch_file_name>]\n" # define USAGE "Usage : %s [ --help | --version [-v] | --batch_run <batch_file_name>]\n"
#else #else
# define USAGE "Usage : %s [ --help | --batch_run <batch_file_name>]\n" # define USAGE "Usage : %s [ --help | --batch_run <batch_file_name>]\n"
@ -200,7 +200,7 @@ NDT_Index_Type idx_type_balanced_tree = NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYP
/* Prototype */ /* Prototype */
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
NDT_Status Module_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list); NDT_Status Module_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list *);
void Menu_Print( FILE *, NDT_Root *); void Menu_Print( FILE *, NDT_Root *);
void Command_Get( int *, char **, char **, FILE *, FILE *, short); void Command_Get( int *, char **, char **, FILE *, FILE *, short);
@ -258,7 +258,7 @@ Command Command_Tab[] =
/* */ /* */
/*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/
NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Node *Node_Ptr, NDT_Command Command, va_list Args) NDT_Status Module_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; NDT_Command_Name Command_Name;
@ -267,11 +267,12 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
{ {
case NDD_CMD_MANAGER_VERSION: case NDD_CMD_MANAGER_VERSION:
{ {
NDT_Version_Name *Version_Name_Ptr = (NDT_Version_Name *)va_arg( Args, NDT_Version_Name *); ND_VA_ARG_GET( Version_Name_Ptr, *Args_Ptr, NDT_Version_Name *);
Command_Name = "NDD_CMD_MANAGER_VERSION"; Command_Name = "NDD_CMD_MANAGER_VERSION";
*Version_Name_Ptr = "$Revision: 2.9 $ $Name: $ $Date: 2005/01/20 00:07:27 $ $Author: agibert $"; *Version_Name_Ptr = "$Revision: 2.10 $ $Name: $ $Date: 2010/06/06 21:27:12 $ $Author: agibert $";
return( NDS_OK); return( NDS_OK);
} }
@ -279,15 +280,15 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
case NDD_CMD_INDEX_GET: case NDD_CMD_INDEX_GET:
{ {
/* /*
NDT_Index_Id *Reply_Index_Id_Ptr = (NDT_Index_Id *)va_arg( Args, NDT_Index_Id *); ND_VA_ARG_GET( Reply_Index_Id_Ptr, *Args_Ptr, NDT_Index_Id *);
NDT_Command *Reply_Command_Ptr = (NDT_Command *)va_arg( Args, NDT_Command *); ND_VA_ARG_GET( Reply_Command_Ptr, *Args_Ptr, NDT_Command *);
NDT_Command Cmd = (NDT_Command)va_arg( Args, NDT_Command); ND_VA_ARG_GET( Cmd, *Args_Ptr, NDT_Command);
void *Value_ptr = (void *)va_arg( Args, void *); ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
*/ */
NDT_Index_Id *Reply_Index_Id_Ptr = (NDT_Index_Id *)va_arg( Args, NDT_Index_Id *); ND_VA_ARG_GET( Reply_Index_Id_Ptr, *Args_Ptr, NDT_Index_Id *);
NDT_Command *Reply_Command_Ptr = (NDT_Command *)va_arg( Args, NDT_Command *); ND_VA_ARG_GET( Reply_Command_Ptr, *Args_Ptr, NDT_Command *);
NDT_Command Cmd = (NDT_Command)va_arg( Args, NDT_Command); ND_VA_ARG_GET( Cmd, *Args_Ptr, NDT_Command);
T_Module **Module_Ptr_Ptr = (T_Module **)va_arg( Args, T_Module **); ND_VA_ARG_GET( Module_Ptr_Ptr, *Args_Ptr, T_Module **);
Command_Name = "NDD_CMD_INDEX_GET"; Command_Name = "NDD_CMD_INDEX_GET";
@ -318,15 +319,23 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
case NDD_CMD_VALUE_ALLOC: case NDD_CMD_VALUE_ALLOC:
{ {
/* /*
void **Value_Ptr_Ptr = (void **)va_arg( Args, void **); ND_VA_ARG_GET( Value_Ptr_Ptr, *Args_Ptr, void **);
va_list user_args = (va_list)va_arg( Args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type); ND_VA_LIST_OPEN( user_args, *Args_Ptr);
... = (...)va_arg( user_args, ...);
ND_VA_ARG_GET( user_data, user_args, user_type);
ND_VA_ARG_GET( ..., user_args, ...);
ND_VA_LIST_CLOSE( user_args);
*/ */
T_Module **Module_Ptr_Ptr = (T_Module **)va_arg( Args, T_Module **); ND_VA_ARG_GET( Module_Ptr_Ptr, *Args_Ptr, T_Module **);
va_list user_args = (va_list)va_arg( Args, va_list);
char *Nom = (char *)va_arg( user_args, char *); ND_VA_LIST_OPEN( user_args, *Args_Ptr);
int Id = (int)va_arg( user_args, int);
ND_VA_ARG_GET( Nom, user_args, char *);
ND_VA_ARG_GET( Id, user_args, int);
ND_VA_LIST_CLOSE( user_args);
Command_Name = "NDD_CMD_VALUE_ALLOC"; Command_Name = "NDD_CMD_VALUE_ALLOC";
@ -348,12 +357,16 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
case NDD_CMD_VALUE_FREE: case NDD_CMD_VALUE_FREE:
{ {
/* /*
void *Value_Ptr = (void *)va_arg( Args, void *); ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
va_list user_args = (va_list)va_arg( Args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type); ND_VA_LIST_OPEN( user_args, *Args_Ptr);
... = (...)va_arg( user_args, ...);
ND_VA_ARG_GET( user_data, user_args, user_type);
ND_VA_ARG_GET( ..., user_args, ...);
ND_VA_LIST_CLOSE( user_args);
*/ */
T_Module *Module_Ptr = (T_Module *)va_arg( Args, T_Module *); ND_VA_ARG_GET( Module_Ptr, *Args_Ptr, T_Module *);
Command_Name = "NDD_CMD_VALUE_FREE"; Command_Name = "NDD_CMD_VALUE_FREE";
@ -368,14 +381,18 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
case NDD_CMD_VALUE_COMP: case NDD_CMD_VALUE_COMP:
{ {
/* /*
void *Value1_Ptr = (void *)va_arg( Args, void *); ND_VA_ARG_GET( Value1_Ptr, *Args_Ptr, void *);
void *Value2_Ptr = (void *)va_arg( Args, void *); ND_VA_ARG_GET( Value2_Ptr, *Args_Ptr, void *);
va_list user_args = (va_list)va_arg( Args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type); ND_VA_LIST_OPEN( user_args, *Args_Ptr);
... = (...)va_arg( user_args, ...);
ND_VA_ARG_GET( user_data, user_args, user_type);
ND_VA_ARG_GET( ..., user_args, ...);
ND_VA_LIST_CLOSE( user_args);
*/ */
T_Module *Value1 = (T_Module *)va_arg( Args, T_Module *); ND_VA_ARG_GET( Module1_Ptr, *Args_Ptr, T_Module *);
T_Module *Value2 = (T_Module *)va_arg( Args, T_Module *); ND_VA_ARG_GET( Module2_Ptr, *Args_Ptr, T_Module *);
Command_Name = "NDD_CMD_VALUE_COMP"; Command_Name = "NDD_CMD_VALUE_COMP";
@ -385,7 +402,7 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
int rc; int rc;
rc = Value1->Id - Value2->Id; rc = Module1_Ptr->Id - Module2_Ptr->Id;
if( rc < 0) if( rc < 0)
{ {
@ -415,10 +432,14 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
case NDD_CMD_VALUE_ADD: case NDD_CMD_VALUE_ADD:
{ {
/* /*
void *Value_Ptr = (void *)va_arg( Args, void *); ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
va_list user_args = (va_list)va_arg( Args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type); ND_VA_LIST_OPEN( user_args, *Args_Ptr);
... = (...)va_arg( user_args, ...);
ND_VA_ARG_GET( user_data, user_args, user_type);
ND_VA_ARG_GET( ..., user_args, ...);
ND_VA_LIST_CLOSE( user_args);
*/ */
@ -430,10 +451,14 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
case NDD_CMD_VALUE_REMOVE: case NDD_CMD_VALUE_REMOVE:
{ {
/* /*
void *Value_Ptr = (void *)va_arg( Args, void *); ND_VA_ARG_GET( Value_Ptr, *Args_Ptr, void *);
va_list user_args = (va_list)va_arg( Args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type); ND_VA_LIST_OPEN( user_args, *Args_Ptr);
... = (...)va_arg( user_args, ...);
ND_VA_ARG_GET( user_data, user_args, user_type);
ND_VA_ARG_GET( ..., user_args, ...);
ND_VA_LIST_CLOSE( user_args);
*/ */
@ -444,22 +469,35 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
case NDD_CMD_VALUE_PRINT: case NDD_CMD_VALUE_PRINT:
{ {
/* /*
NDT_Node *Next_Node_Ptr = (NDT_Node *)va_arg( Args, NDT_Node *); ND_VA_ARG_GET( Next_Node_Ptr, *Args_Ptr, NDT_Node *);
va_list lib_args = (va_list)va_arg( Args, va_list);
FILE *Out = (FILE *)va_arg( lib_args, FILE *); ND_VA_LIST_OPEN( lib_args, *Args_Ptr);
NDT_Recursive_Mode Recursive_Mode = (NDT_Recursive_Mode)va_arg( lib_args, NDT_Recursive_Mode);
NDT_Recursive_Depth Recursive_Depth = (NDT_Recursive_Depth)va_arg( lib_args, NDT_Recursive_Depth); ND_VA_ARG_GET( Out, lib_args, FILE *);
va_list user_args = (va_list)va_arg( lib_args, va_list); ND_VA_ARG_GET( Recursive_Mode, lib_args, NDT_Recursive_Mode);
user_type user_data = (user_type)va_arg( user_args, user_type); ND_VA_ARG_GET( Recursive_Depth, lib_args, NDT_Recursive_Depth);
... = (...)va_arg( user_args, ...); 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; void *Value_Ptr = Node_Ptr->Value;
*/ */
NDT_Node *Next_Node_Ptr = (NDT_Node *)va_arg( Args, NDT_Node *); ND_VA_ARG_GET( Next_Node_Ptr, *Args_Ptr, NDT_Node *);
va_list lib_args = (va_list)va_arg( Args, va_list);
FILE *Out = (FILE *)va_arg( lib_args, FILE *); ND_VA_LIST_OPEN( lib_args, *Args_Ptr);
NDT_Recursive_Mode Recursive_Mode = (NDT_Recursive_Mode)va_arg( lib_args, NDT_Recursive_Mode);
NDT_Recursive_Depth Recursive_Depth = (NDT_Recursive_Depth)va_arg( lib_args, NDT_Recursive_Depth); 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_CLOSE( lib_args);
T_Module *Module_Ptr = Node_Ptr->Value; T_Module *Module_Ptr = Node_Ptr->Value;
@ -474,16 +512,22 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
case NDD_CMD_INFO_PRINT: case NDD_CMD_INFO_PRINT:
{ {
/* /*
NDT_Node *Next_Node_Ptr = (NDT_Node *)va_arg( Args, NDT_Node *); ND_VA_ARG_GET( Next_Node_Ptr, *Args_Ptr, NDT_Node *);
va_list lib_args = (va_list)va_arg( Args, va_list);
FILE *Out = (FILE *)va_arg( lib_args, FILE *);
NDT_Recursive_Mode Recursive_Mode = (NDT_Recursive_Mode)va_arg( lib_args, NDT_Recursive_Mode);
NDT_Recursive_Depth Recursive_Depth = (NDT_Recursive_Depth)va_arg( lib_args, NDT_Recursive_Depth);
va_list user_args = (va_list)va_arg( lib_args, va_list);
user_type user_data = (user_type)va_arg( user_args, user_type);
... = (...)va_arg( user_args, ...);
void *Value_Ptr = Node_Ptr->Value; 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);
*/ */