From b9da72bd299e39321f05315ed71ca15914883b96 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Mon, 29 May 2023 09:15:32 +0200 Subject: [PATCH] testings: Add a parameter_getvalue_fixdbl function to have float parameters --- testing/parameters.c | 35 +++++++++++++++++++++++++++++++++++ testing/testings.h | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/testing/parameters.c b/testing/parameters.c index cf2b598e3..df6a8841a 100644 --- a/testing/parameters.c +++ b/testing/parameters.c @@ -671,6 +671,41 @@ parameters_getvalue_int( const char *name ) return -1; } +double +parameters_getvalue_fixdbl( const char *name ) +{ + parameter_t *param = parameters; + + while( param->helper != NULL ) + { + /* This is not an option, we skip it */ + if ( param->name == NULL ) { + param++; + continue; + } + + if ( strcasecmp( name, param->name ) != 0 ) { + param++; + continue; + } + + if ( param->has_arg > 1 ) { + fprintf( stderr, "parameters_getvalue_double should not be called with parameter %s\n", name ); + return -1; + } + + if ( param->valtype != TestValDouble ) { + fprintf( stderr, "parameters_getvalue_double has been called with a non float parameter (%s)\n", name ); + return -1; + } + + return param->value.dval; + } + + fprintf( stderr, "parameters_getvalue_int could not find parameter %s\n", name ); + return -1; +} + char * parameters_getvalue_str( const char *name ) { diff --git a/testing/testings.h b/testing/testings.h index 1c8f54548..2b42ce848 100644 --- a/testing/testings.h +++ b/testing/testings.h @@ -229,13 +229,13 @@ void parameters_read( parameter_t *param, const char *values ); void parameters_read_file( const char *filename ); parameter_t *parameters_getbyname( const char *name ); void parameters_addvalues( parameter_t *param, const char *values ); -int parameters_getvalue_int( const char *name ); int parameters_compute_q( int p ); parameter_t *parameters_get( int shname ); int parameters_compute_q( int p ); void parameters_getopt_init( char *optstring, struct option **longopts ); parameter_t *parameters_get( int shname ); int parameters_getvalue_int( const char *name ); +double parameters_getvalue_fixdbl( const char *name ); char * parameters_getvalue_str( const char *name ); parameter_t *parameters_getbyname( const char *name ); void parameters_parser( int argc, char **argv ); -- GitLab