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