OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
CmdArguments.cpp
Go to the documentation of this file.
1 #include "Util/CmdArguments.h"
2 
3 void CmdArguments::addArguments(int argc, char **argv) {
4 
5  for(int i=1; i<argc; i++) {
6  std::string arg = argv[i];
7  std::string name, value;
8  this->split(name, value, arg);
9  arguments_.insert(std::pair<std::string, std::string>(name, value));
10  }
11 }
12 
13 void CmdArguments::split(std::string &name,
14  std::string &value, std::string arg) {
15 
16  size_t pos = arg.find("=");
17  //strip leading '--' and '='
18  name = arg.substr(2, pos - 2);
19  value = arg.substr(pos + 1);
20 
21  boost::trim(name);
22  boost::trim(value);
23 }
24 
26  const unsigned int size = arguments_.size();
27  char** args = new char*[2 * size];
28 
29  unsigned int i = 0;
30  auto it = arguments_.cbegin();
31  const auto end = arguments_.cend();
32  for (; it != end; ++ it) {
33  const std::string &key = it->first;
34  char* argname = new char[key.length() + 1];
35  strcpy(argname, key.c_str());
36  args[i ++] = argname;
37 
38  const std::string &value = it->second;
39  char* argvalue = new char[value.length() + 1];
40  strcpy(argvalue, value.c_str());
41  args[i ++] = argvalue;
42  }
43 
44  return args;
45 }
T arg(const std::string name)
Definition: CmdArguments.h:156
void addArguments(int argc, char **argv)
parse user arguments
Definition: CmdArguments.cpp:3
void split(std::string &name, std::string &value, std::string arg)
helper to split string
arg(a))
std::map< std::string, std::string > arguments_
container for storing command line options
Definition: CmdArguments.h:143
const std::string name
char ** getArguments() const