- 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:
105
util/dsbench.c
105
util/dsbench.c
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user