- Implement DS_DataStruct_Check_I(), DS_DataStruct_Reorg_I(), DS_DataStruct_Convert_I(),
- Add a new marco: DS_STRUCT_VALID_CHECK().
This commit is contained in:
@@ -155,6 +155,28 @@ typedef struct DST_RootDesc
|
||||
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
|
||||
#define DS_STRUCT_VALID_CHECK( Root_Ptr, RootDesc_Ptr) \
|
||||
if( (RootDesc_Ptr)->Valid == FALSE) \
|
||||
{ \
|
||||
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); \
|
||||
} \
|
||||
} \
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Définition des alias de l'API */
|
||||
|
||||
@@ -182,12 +204,13 @@ typedef struct DST_RootDesc
|
||||
# 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_Traverse DS_DataStruct_Traverse_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
|
||||
# define DS_DataStruct_Traverse DS_DataStruct_Traverse_I
|
||||
# define DS_DataStruct_Info_Print DS_DataStruct_Info_Print_I
|
||||
# define DS_DataStruct_Value_Print DS_DataStruct_Value_Print_I
|
||||
# define DS_DataStruct_Print DS_DataStruct_Print_I
|
||||
# define DS_DataStruct_Check DS_DataStruct_Check_I
|
||||
# define DS_DataStruct_Lock DS_DataStruct_Lock_I
|
||||
# define DS_DataStruct_Unlock DS_DataStruct_Unlock_I
|
||||
# define DS_DataStruct_Value_Add DS_DataStruct_Value_Add_I
|
||||
@@ -226,6 +249,8 @@ typedef struct DST_RootDesc
|
||||
# define DS_DataStruct_Open DS_DataStruct_Open_L
|
||||
# define DS_DataStruct_Close DS_DataStruct_Close_L
|
||||
# define DS_DataStruct_Flush DS_DataStruct_Flush_L
|
||||
# define DS_DataStruct_Check DS_DataStruct_Check_L
|
||||
# define DS_DataStruct_Convert DS_DataStruct_Convert_L
|
||||
# define DS_DataStruct_Reorg DS_DataStruct_Reorg_L
|
||||
# define DS_DataStruct_Traverse DS_DataStruct_Traverse_L
|
||||
# define DS_DataStruct_Convert DS_DataStruct_Convert_L
|
||||
@@ -268,16 +293,16 @@ typedef struct DST_RootDesc
|
||||
# define DS_Library_Close DS_Library_Close_CL
|
||||
# define DS_Library_Stderr_Set DS_Library_Stderr_Set_CL
|
||||
|
||||
# define DS_DataStruct_Convert DS_DataStruct_Convert_CL
|
||||
# define DS_DataStruct_Open DS_DataStruct_Open_CL
|
||||
# define DS_DataStruct_Close DS_DataStruct_Close_CL
|
||||
# define DS_DataStruct_Flush DS_DataStruct_Flush_CL
|
||||
# define DS_DataStruct_Check DS_DataStruct_Check_CL
|
||||
# define DS_DataStruct_Reorg DS_DataStruct_Reorg_CL
|
||||
# define DS_DataStruct_Traverse DS_DataStruct_Traverse_CL
|
||||
# define DS_DataStruct_Convert DS_DataStruct_Convert_CL
|
||||
# define DS_DataStruct_Info_Print DS_DataStruct_Info_Print_CL
|
||||
# define DS_DataStruct_Value_Print DS_DataStruct_Value_Print_CL
|
||||
# define DS_DataStruct_Print DS_DataStruct_Print_CL
|
||||
# define DS_DataStruct_Check DS_DataStruct_Check_CL
|
||||
# define DS_DataStruct_Lock DS_DataStruct_Lock_CL
|
||||
# define DS_DataStruct_Unlock DS_DataStruct_Unlock_CL
|
||||
# define DS_DataStruct_Value_Add DS_DataStruct_Value_Add_CL
|
||||
@@ -430,6 +455,50 @@ DSD_API NDT_Status DS_DataStruct_Flush_CL( NDT_Root *Root_Ptr);
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Check & repare a datat structure: */
|
||||
/* - Check & fix node links */
|
||||
/* - Update data structure statistics */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* (I) Root_Ptr: Data structure pointer */
|
||||
/* (O) Error_Dectected_Nb_Ptr: Number of error detected pointer */
|
||||
/* (O) Error_Corrected_Nb_Ptr: Number of error corected pointer */
|
||||
/* (I) Out: Output stream */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
DSD_API DST_Status DS_DataStruct_Check_I( NDT_Root *Root_Ptr, int *Error_Detected_Nb_Ptr, int *Error_Corrected_Nb_Ptr, FILE *Out);
|
||||
DSD_API DST_Status DS_DataStruct_Check_L( NDT_Root *Root_Ptr, int *Error_Detected_Nb_Ptr, int *Error_Corrected_Nb_Ptr, FILE *Out);
|
||||
DSD_API DST_Status DS_DataStruct_Check_CL( NDT_Root *Root_Ptr, int *Error_Detected_Nb_Ptr, int *Error_Corrected_Nb_Ptr, FILE *Out);
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Convert a data structure indexe types */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* (I) Root_Ptr: Data structure pointer */
|
||||
/* (I) Index_Type_Ptr: Array of index type (List, tree, ...) */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
DSD_API DST_Status DS_DataStruct_Convert_I( NDT_Root *Root_Ptr, NDT_Index_Type *Index_Type_Ptr);
|
||||
DSD_API DST_Status DS_DataStruct_Convert_L( NDT_Root *Root_Ptr, NDT_Index_Type *Index_Type_Ptr);
|
||||
DSD_API DST_Status DS_DataStruct_Convert_CL( NDT_Root *Root_Ptr, NDT_Index_Type *Index_Type_Ptr);
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Reorganise a data structure indexes: */
|
||||
/* - Sort a non-sorted list */
|
||||
/* - Rebalance a non auto-balanced tree */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* (I) Root_Ptr: Data structure pointer */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
DSD_API DST_Status DS_DataStruct_Reorg_I( NDT_Root *Root_Ptr);
|
||||
DSD_API DST_Status DS_DataStruct_Reorg_L( NDT_Root *Root_Ptr);
|
||||
DSD_API DST_Status DS_DataStruct_Reorg_CL( NDT_Root *Root_Ptr);
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Print data structure information */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
@@ -459,20 +528,6 @@ DSD_API DST_Status DS_DataStruct_Value_Add_CL( NDT_Root *Root_Ptr, void *Valu
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* 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 */
|
||||
@@ -488,19 +543,6 @@ DSD_API DST_Status DS_DataStruct_Traverse_CL( NDT_Root * Root, NDT_Command Comm
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* 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 */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
@@ -514,21 +556,6 @@ 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);
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Print all the data structure values */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
Reference in New Issue
Block a user