- Implement DS_Value_Alloc_I(), DS_Value_Add(), DS_Alloc_I(), DS_DataStruct_Value_Print(), DS_DataStruct_Lock() & DS_DataStruct_Unlock(),

- Debug with dsbench: ADD_VALUE & SHOW.
This commit is contained in:
2024-04-29 12:08:11 +02:00
parent 6492980a9b
commit 813967de98
4 changed files with 250 additions and 173 deletions

View File

@@ -96,11 +96,14 @@ typedef struct {
T_Cpt t_exec;
/* Définition des valeurs attachées aux noeuds de la structure */
typedef struct {
int Id;
char * Nom;
typedef struct
{
int Id;
char Nom[ DSD_NAME_SIZE];
} T_Module;
@@ -189,8 +192,8 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
ND_VA_LIST_OPEN( user_args, *Args_Ptr);
ND_VA_ARG_GET( Nom, user_args, char *);
ND_VA_ARG_GET( Id, user_args, int);
ND_VA_ARG_GET( Nom, user_args, char *);
ND_VA_LIST_CLOSE( user_args);
@@ -199,22 +202,21 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
LG_LOG_TRACE_0( LGD_LOG_LEVEL_DEFAULT, "CMD_VALUE_ALLOC called...");
/*
if( DS_Alloc( Root, sizeof( T_Module) + strlen( Nom) + 1, (void **)Module) == DSS_OK)
{
(* Module_Ptr_Ptr)->Id = Id;
(* Module_Ptr_Ptr)->Nom = (char *)((size_t)(*Module) + sizeof (T_Module));
strcpy( ( *Module)->Nom, Nom);
return( DSS_OK)
}
else
if( DS_Alloc( (void **)Module_Ptr_Ptr, Root_Ptr, sizeof( T_Module)) != DSS_OK)
{
LG_LOG_ERROR_0( "Allocation error");
return( DSS_KO)
return( DSS_KO);
}
else
{
( *Module_Ptr_Ptr)->Id = Id;
strncpy( ( *Module_Ptr_Ptr)->Nom, Nom, DSD_NAME_LEN);
( *Module_Ptr_Ptr)->Nom[ DSD_NAME_LEN] = '\0';
return( DSS_OK);
}
*/
}
case NDD_CMD_VALUE_FREE:
@@ -368,10 +370,11 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
ND_VA_LIST_CLOSE( lib_args);
T_Module *Module_Ptr = (T_Module *)Node_Ptr->Value;
Command_Name = "NDD_CMD_VALUE_PRINT";
fprintf( Out, "Id Module: (%d) Nom Module: [%s]", Module_Ptr->Id, Module_Ptr->Nom);
LG_LOG_INFO_2( "Id Module: (%d) Nom Module: [%s]", Module_Ptr->Id, Module_Ptr->Nom);
return( NDS_OK);
}
@@ -585,7 +588,7 @@ int main( int argc, char **argv)
NDT_Index_Type index_type = ( NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_FIFO);
char *tmp;
int n, m, i, j;
int choice, Nb_Removed, Locked;
int choice, nb_removed, locked;
int Nb_Detected, Nb_Corrected;
T_Module *Module, Ref_Module;
NDT_Node *Node;
@@ -624,6 +627,7 @@ int main( int argc, char **argv)
{
fprintf( stdout, "\nNom de la structure à créer ? ");
fgets( DataStruct_Name, 100, stdin);
if( strlen( DataStruct_Name) < 2)
{
fprintf( stdout, "Bad name!\n");
@@ -664,6 +668,7 @@ int main( int argc, char **argv)
{
fprintf (stdout, "\nNom de la structure à ouvrir ? ");
fgets( DataStruct_Name, 100, stdin);
if( strlen( DataStruct_Name) < 2)
{
fprintf( stdout, "Bad name!\n");
@@ -742,20 +747,21 @@ int main( int argc, char **argv)
m - n + 1, t_exec.sec, (m - n + 1) / t_exec.sec);
break;
}
*/
case ADD_VALUE:
{
fprintf (stdout, "\nPlage des valeurs à ajouter (?->?) : ");
gets (buf);
tmp = strstr (buf, "->");
if (tmp != NULL)
fprintf (stdout, "\nPlage des valeurs à ajouter (?-?) : ");
fgets( buf, 100, stdin);
tmp = strstr( buf, "-");
if( tmp != NULL)
{
* tmp = '\0';
n = atoi (buf);
*tmp = '\0';
n = atoi( buf);
tmp++;
tmp++;
m = atoi (tmp);
if (m < n)
m = atoi( tmp);
if( m < n)
{
printf ("\nEntrées non valides\n");
break;
@@ -763,47 +769,52 @@ int main( int argc, char **argv)
}
else
{
printf ("\nEntrées non valides\n");
printf( "\nEntrées non valides\n");
break;
}
DS_DataStruct_Lock (Root, DSD_WRITE, &Locked);
DS_DataStruct_Lock( Root_Ptr, DSD_WRITE, &locked);
fprintf (stdout, "\nOrdre d'ajout (croissant=0 décroissant=1) ? ");
gets (buf);
fgets( buf, 100, stdin);
choice = atoi (buf);
if (choice == 0)
if( choice == 0)
{
i = n;
j = m + 1;
t_start (t_exec);
while (i < j)
while( i < j)
{
if (DS_Value_Alloc (Root, (void **)&Module, "x", i) == NDS_OK) DS_Value_Add (Root, Module);
if( DS_Value_Alloc( (void **)&Module, Root_Ptr, i, "x") == NDS_OK) DS_Value_Add( Root_Ptr, Module);
i++;
}
t_stop (t_exec);
t_stop( t_exec);
}
else
{
i = m;
j = n - 1;
t_start (t_exec);
while (i > j)
t_start( t_exec);
while( i > j)
{
if (DS_Value_Alloc (Root, (void **)&Module, "x", i) == NDS_OK) DS_Value_Add (Root, Module);
if( DS_Value_Alloc( (void **)&Module, Root_Ptr, i, "x") == NDS_OK) DS_Value_Add( Root_Ptr, Module);
i--;
}
t_stop (t_exec);
}
DS_DataStruct_Unlock (Root);
DS_DataStruct_Unlock( Root_Ptr);
fprintf (stdout, "\n%d valeur(s) ajoutée(s) en %.4f sec (%.2f ajouts/sec)\n", m - n + 1, \
fprintf( stdout, "\n%d valeur(s) ajoutée(s) en %.4f sec (%.2f ajouts/sec)\n", m - n + 1, \
t_exec.sec, (m - n + 1) / t_exec.sec);
break;
}
/*
case REMOVE_VALUE:
{
Nb_Removed = 0;
@@ -942,15 +953,15 @@ int main( int argc, char **argv)
// DS_DataStruct_Unlock (Root);
break;
}
/*
case SHOW:
{
DS_DataStruct_Lock (Root, DSD_READ, &Locked);
DS_DataStruct_Dump (Root, stdout);
DS_DataStruct_Unlock (Root);
DS_DataStruct_Lock( Root_Ptr, DSD_READ, &locked);
DS_DataStruct_Value_Print( stdout, Root_Ptr, NDD_RECURSIVE_MODE_PARENT_CHILD, 0, 0);
DS_DataStruct_Unlock( Root_Ptr);
break;
}
/*
case CHECK:
{
Nb_Corrected = Nb_Detected = 0;