1 #ifndef COMMAND_LINE_ARGS_H
2 #define COMMAND_LINE_ARGS_H
4 /******************************************************************************
6 ******************************************************************************/
12 class b3CommandLineArgs
15 std::map<std::string, std::string> pairs;
19 b3CommandLineArgs(int argc, char **argv)
24 void addArgs(int argc, char **argv)
26 for (int i = 1; i < argc; i++)
28 std::string arg = argv[i];
30 if ((arg.length() < 2) || (arg[0] != '-') || (arg[1] != '-'))
35 std::string::size_type pos;
37 if ((pos = arg.find('=')) == std::string::npos)
39 key = std::string(arg, 2, arg.length() - 2);
44 key = std::string(arg, 2, pos - 2);
45 val = std::string(arg, pos + 1, arg.length() - 1);
48 //only add new keys, don't replace existing
49 if (pairs.find(key) == pairs.end())
56 bool CheckCmdLineFlag(const char *arg_name)
58 std::map<std::string, std::string>::iterator itr;
59 if ((itr = pairs.find(arg_name)) != pairs.end())
67 bool GetCmdLineArgument(const char *arg_name, T &val);
76 inline bool b3CommandLineArgs::GetCmdLineArgument(const char *arg_name, T &val)
78 std::map<std::string, std::string>::iterator itr;
79 if ((itr = pairs.find(arg_name)) != pairs.end())
81 std::istringstream strstream(itr->second);
89 inline bool b3CommandLineArgs::GetCmdLineArgument<char *>(const char *arg_name, char *&val)
91 std::map<std::string, std::string>::iterator itr;
92 if ((itr = pairs.find(arg_name)) != pairs.end())
94 std::string s = itr->second;
95 val = (char *)malloc(sizeof(char) * (s.length() + 1));
96 std::strcpy(val, s.c_str());
106 #endif //COMMAND_LINE_ARGS_H