Skip to content
Commits on Source (4)
Subproject commit 8a0ea2d0e699863df5fe1c91caf2d7b0855957be
Subproject commit a00f9a27afbf5f75dab7db2368b9b9b6fcb395e1
......@@ -4,21 +4,36 @@
namespace inaf::oasbo::Configurators {
/**
* @brief The CLConfigurator class is a concrete implementation of the BaseConfigurator class.
* It provides functionality to read and push configurations from/to a source using command line arguments (--param1 --param2 and so on).
* Check the Base_Configurator.h file for more information.
*/
class CLConfigurator: public BaseConfigurator {
protected:
int argc;
char** argv;
int argc; /**< The number of command line arguments. */
char **argv; /**< The array of command line arguments. */
public:
CLConfigurator(int argc, char** argv);
/**
* @brief Constructs a CLConfigurator object with the specified command line arguments.
* @param argc The number of command line arguments.
* @param argv The array of command line arguments.
*/
CLConfigurator(int argc, char **argv);
int readConfigFromSource() override;
int readConfigFromSource(std::string target) override;
int pushConfigToSource() override;
int pushConfigToSource(std::string target) override;
int insert(std::map<std::string, std::string>, std::string target) override;
~CLConfigurator() { }
~CLConfigurator() {
}
};
}
......@@ -17,27 +17,28 @@ int CLConfigurator::pushConfigToSource() {
}
int CLConfigurator::readConfigFromSource(std::string target) {
for (int i = 1; i < argc-1; ++i) {
for (int i = 1; i < argc - 1; ++i) {
std::string arg = argv[i];
boost::to_lower(arg);
size_t posTarget = arg.find("--"+target);
size_t posTarget = arg.find("--" + target);
size_t posSeparator = arg.find('_');
if (posTarget == 0 && posSeparator == std::string("--"+target).size()) {
if (posTarget == 0
&& posSeparator == std::string("--" + target).size()) {
std::string key = arg.substr(2);
this->config[key] = argv[i+1];
this->config[key] = argv[i + 1];
}
}
return 1;
}
int CLConfigurator::readConfigFromSource() {
for (int i = 1; i < argc-1; ++i) {
for (int i = 1; i < argc - 1; ++i) {
std::string arg = argv[i];
size_t posDash = arg.find("--");
size_t posSeparator = arg.find('_');
if (posDash == 0 && posSeparator != std::string::npos) {
std::string key = arg.substr(2);
this->config[key] = argv[i+1];
this->config[key] = argv[i + 1];
}
}
return 1;
......