mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
parametersystem: pass add callback for adding keys to positional parameter handler
this way the backing store for the parameters can be an implementation detail of the parameter system
This commit is contained in:
parent
be94b037bc
commit
2bdab9e518
@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
#include <dune/common/fvector.hh>
|
#include <dune/common/fvector.hh>
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -268,7 +269,9 @@ public:
|
|||||||
* the next regular parameter. If this is less than 1, it indicated that the
|
* the next regular parameter. If this is less than 1, it indicated that the
|
||||||
* positional parameter was invalid.
|
* positional parameter was invalid.
|
||||||
*/
|
*/
|
||||||
static int handlePositionalParameter(std::set<std::string>&,
|
static int handlePositionalParameter(std::function<void(const std::string&,
|
||||||
|
const std::string&)>,
|
||||||
|
std::set<std::string>&,
|
||||||
std::string& errorMsg,
|
std::string& errorMsg,
|
||||||
int,
|
int,
|
||||||
const char** argv,
|
const char** argv,
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
|
|
||||||
#include <charconv>
|
#include <charconv>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
#include <functional>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <list>
|
#include <list>
|
||||||
@ -449,7 +450,8 @@ inline void printUsage(const std::string& helpPreamble,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// \cond 0
|
/// \cond 0
|
||||||
inline int noPositionalParameters_(std::set<std::string>&,
|
inline int noPositionalParameters_(std::function<void(const std::string&, const std::string&)>,
|
||||||
|
std::set<std::string>&,
|
||||||
std::string& errorMsg,
|
std::string& errorMsg,
|
||||||
int,
|
int,
|
||||||
const char** argv,
|
const char** argv,
|
||||||
@ -613,8 +615,11 @@ std::string parseCommandLineOptions(int argc,
|
|||||||
|| argv[i][1] != '-')
|
|| argv[i][1] != '-')
|
||||||
{
|
{
|
||||||
std::string errorMsg;
|
std::string errorMsg;
|
||||||
int numHandled = posArgCallback(seenKeys, errorMsg, argc, argv,
|
int numHandled = posArgCallback([](const std::string& k, const std::string& v)
|
||||||
i, numPositionalParams);
|
{
|
||||||
|
MetaData::tree()[k] = v;
|
||||||
|
}, seenKeys, errorMsg,
|
||||||
|
argc, argv, i, numPositionalParams);
|
||||||
|
|
||||||
if (numHandled < 1) {
|
if (numHandled < 1) {
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
|
@ -52,7 +52,8 @@ class EclipseState;
|
|||||||
class Schedule;
|
class Schedule;
|
||||||
template<typename Grid, typename GridView> class LookUpData;
|
template<typename Grid, typename GridView> class LookUpData;
|
||||||
|
|
||||||
int eclPositionalParameter(Dune::ParameterTree& tree,
|
int eclPositionalParameter(std::function<void(const std::string&,
|
||||||
|
const std::string&)> addKey,
|
||||||
std::set<std::string>& seenParams,
|
std::set<std::string>& seenParams,
|
||||||
std::string& errorMsg,
|
std::string& errorMsg,
|
||||||
const char** argv,
|
const char** argv,
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
|
|
||||||
int eclPositionalParameter(Dune::ParameterTree& tree,
|
int eclPositionalParameter(std::function<void(const std::string&, const std::string&)> addKey,
|
||||||
std::set<std::string>& seenParams,
|
std::set<std::string>& seenParams,
|
||||||
std::string& errorMsg,
|
std::string& errorMsg,
|
||||||
const char** argv,
|
const char** argv,
|
||||||
@ -73,7 +73,7 @@ int eclPositionalParameter(Dune::ParameterTree& tree,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
tree["EclDeckFileName"] = argv[paramIdx];
|
addKey("EclDeckFileName", argv[paramIdx]);
|
||||||
seenParams.insert("EclDeckFileName");
|
seenParams.insert("EclDeckFileName");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -228,14 +228,16 @@ public:
|
|||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseProblem::handlePositionalParameter
|
* \copydoc FvBaseProblem::handlePositionalParameter
|
||||||
*/
|
*/
|
||||||
static int handlePositionalParameter(std::set<std::string>& seenParams,
|
static int handlePositionalParameter(std::function<void(const std::string&,
|
||||||
|
const std::string&)> addKey,
|
||||||
|
std::set<std::string>& seenParams,
|
||||||
std::string& errorMsg,
|
std::string& errorMsg,
|
||||||
int,
|
int,
|
||||||
const char** argv,
|
const char** argv,
|
||||||
int paramIdx,
|
int paramIdx,
|
||||||
int)
|
int)
|
||||||
{
|
{
|
||||||
return eclPositionalParameter(Parameters::MetaData::tree(),
|
return eclPositionalParameter(addKey,
|
||||||
seenParams,
|
seenParams,
|
||||||
errorMsg,
|
errorMsg,
|
||||||
argv,
|
argv,
|
||||||
|
Loading…
Reference in New Issue
Block a user