- Add DS_STRUCT_LOCK() & DS_STRUCT_UNLOCK() macros,
- Implement DS_DataStruct_Traverse_I() & DS_DataStruct_Convert_L() API, - code cleanup...
This commit is contained in:
@@ -191,20 +191,58 @@ typedef struct DST_RootDescZ
|
||||
/* */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
|
||||
#define DS_STRUCT_VALID_CHECK( Root_Ptr) \
|
||||
if( !DSD_DATASTRUCT_STATUS_VALUE_VALID( (Root_Ptr)->Status)) \
|
||||
{ \
|
||||
DST_Status status; \
|
||||
int nb_detected = 0, nb_corrected = 0; \
|
||||
\
|
||||
\
|
||||
if( ( status = DS_DataStruct_Check_I( Root_Ptr, &nb_detected, &nb_corrected, DS_stderr)) != DSS_OK) \
|
||||
{ \
|
||||
LG_LOG_ERROR_0( "Unable to check the data structure"); \
|
||||
\
|
||||
return( status); \
|
||||
} \
|
||||
} \
|
||||
#define DS_STRUCT_VALID_CHECK( Root_Ptr) \
|
||||
if( !DSD_DATASTRUCT_STATUS_VALUE_VALID( (Root_Ptr)->Status)) \
|
||||
{ \
|
||||
DST_Status status; \
|
||||
int nb_detected = 0, nb_corrected = 0; \
|
||||
\
|
||||
\
|
||||
if( ( status = DS_DataStruct_Check_I( (Root_Ptr), &nb_detected, &nb_corrected, DS_stderr)) != DSS_OK) \
|
||||
{ \
|
||||
LG_LOG_ERROR_0( "Unable to check the data structure"); \
|
||||
\
|
||||
return( status); \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
|
||||
#define DS_STRUCT_LOCK( Root_Ptr, Lock_Mode, Lock_Flag_Ptr) \
|
||||
{ \
|
||||
DST_Status status; \
|
||||
\
|
||||
\
|
||||
if( ( status = DS_DataStruct_Lock_I( (Root_Ptr), (Lock_Mode), (Lock_Flag_Ptr))) != DSS_OK) \
|
||||
{ \
|
||||
LG_LOG_ERROR_0( "Unable to lock the data structure"); \
|
||||
\
|
||||
return( status); \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
|
||||
#define DS_STRUCT_UNLOCK( Root_Ptr, Lock_Flag) \
|
||||
{ \
|
||||
DST_Status status; \
|
||||
\
|
||||
\
|
||||
if( (Lock_Flag) && ( ( status = DS_DataStruct_Unlock_I( (Root_Ptr))) != DSS_OK)) \
|
||||
{ \
|
||||
LG_LOG_ERROR_0( "Unable to unlock the data structure"); \
|
||||
\
|
||||
return( status); \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -235,7 +273,6 @@ typedef struct DST_RootDescZ
|
||||
# define DS_DataStruct_Open DS_DataStruct_Open_I
|
||||
# define DS_DataStruct_Close DS_DataStruct_Close_I
|
||||
# define DS_DataStruct_Flush DS_DataStruct_Flush_I
|
||||
# define DS_DataStruct_Reorg DS_DataStruct_Reorg_I
|
||||
# define DS_DataStruct_Check DS_DataStruct_Check_I
|
||||
# define DS_DataStruct_Convert DS_DataStruct_Convert_I
|
||||
# define DS_DataStruct_Reorg DS_DataStruct_Reorg_I
|
||||
@@ -618,17 +655,16 @@ DSD_API DST_Status SD_DataStruct_Value_Find_CL( void **Value_Ptr_Ptr, DST_Roo
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Parcours de tous les noeuds d'une structure de données et exécution d'une */
|
||||
/* commande sur chacun d'eux */
|
||||
/* Traverse a data structure & execute a command on each node */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* (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 */
|
||||
/* (I) Root_Ptr: Data structure pointer */
|
||||
/* (I) Command: Manager command */
|
||||
/* (I) ...: User args */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/*
|
||||
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);
|
||||
|
||||
DSD_API DST_Status DS_DataStruct_Traverse_I( DST_Root *Root_Ptr, NDT_Command Command, ...);
|
||||
DSD_API DST_Status DS_DataStruct_Traverse_L( DST_Root *Root_Ptr, NDT_Command Command, ...);
|
||||
DSD_API DST_Status DS_DataStruct_Traverse_CL( DST_Root *Root_Ptr, NDT_Command Command, ...);
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user