ThreadedExamples/example02_threaded_raytracing/src/argParse.cpp

38 lines
916 B
C++
Raw Normal View History

2021-08-20 12:25:24 +00:00
#include "argParse.hpp"
#include <cstring>
2021-08-24 03:42:18 +00:00
Ex02::ArgParse::ParseResult
Ex02::ArgParse::parseArgs(int argc, char **argv,
const Ex02::ArgParse::ArgsType &singleArgs,
const Ex02::ArgParse::ArgsType &doubleArgs) {
ParseResult result;
bool found;
--argc;
++argv;
while (argc > 0) {
found = false;
for (const std::string &singleArg : singleArgs) {
if (std::strcmp(argv[0], singleArg.c_str()) == 0) {
result.insert({singleArg, EX02_ARG_PARSE_SINGLE_ARG_PLACEHOLDER});
found = true;
break;
}
}
if (!found && argc > 1) {
for (const std::string &doubleArg : doubleArgs) {
if (std::strcmp(argv[0], doubleArg.c_str()) == 0) {
result.insert({doubleArg, argv[1]});
--argc;
++argv;
break;
2021-08-20 12:25:24 +00:00
}
2021-08-24 03:42:18 +00:00
}
2021-08-20 12:25:24 +00:00
}
2021-08-24 03:42:18 +00:00
--argc;
++argv;
}
2021-08-20 12:25:24 +00:00
2021-08-24 03:42:18 +00:00
return result;
2021-08-20 12:25:24 +00:00
}