72 lines
3.3 KiB
C++
72 lines
3.3 KiB
C++
|
|
#include <iostream>
|
||
|
|
#include <ArgParseCpp.hpp>
|
||
|
|
#include <utils.hpp>
|
||
|
|
|
||
|
|
using ArgListT = std::vector<std::string>;
|
||
|
|
using ArgParseCpp::Parser;
|
||
|
|
|
||
|
|
template<typename T> std::vector<T> & operator<<(std::vector<T> &vec, const T & val)
|
||
|
|
{
|
||
|
|
vec.push_back(val);
|
||
|
|
return vec;
|
||
|
|
}
|
||
|
|
|
||
|
|
int main(int argc, char *argv[])
|
||
|
|
{
|
||
|
|
// Test the parser on the arguments provided in main()
|
||
|
|
if(argc > 1)
|
||
|
|
{
|
||
|
|
Parser parser;
|
||
|
|
parser.Parse(argc, argv);
|
||
|
|
}
|
||
|
|
|
||
|
|
// Test the parser in various predefined scenarios
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if(0)
|
||
|
|
{// automatic help message
|
||
|
|
Parser parser;
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-v", "--verbose", ArgParseCpp::StandaloneParam, ArgParseCpp::Bool, "Makes the program more verbose."));
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-a", "--all", ArgParseCpp::StandaloneParam, ArgParseCpp::Bool, "Does all the things."));
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-n", "--nope", ArgParseCpp::StandaloneParam));
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-d", "--decimate", ArgParseCpp::SingleValueParam, ArgParseCpp::Int, "Decimates the signal by a factor d."));
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-b", "--babar", ArgParseCpp::SingleValueParam, ArgParseCpp::Int));
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-c", "", ArgParseCpp::SingleValueParam, ArgParseCpp::Double));
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-o", "", ArgParseCpp::SingleValueParam, ArgParseCpp::String));
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-e", "", ArgParseCpp::EqualParam, ArgParseCpp::Int));
|
||
|
|
parser.PrintHelp();
|
||
|
|
}
|
||
|
|
if(0)
|
||
|
|
{// sanitize the input arguments and display help whenever -h or --help is seen
|
||
|
|
std::string argString = "programName -h blabla hehe hoho lalaland";
|
||
|
|
Parser parser;
|
||
|
|
parser.Parse(argString);
|
||
|
|
}
|
||
|
|
if(0)
|
||
|
|
{// parse some boolean arguments
|
||
|
|
std::string argString = "programName -v --all";
|
||
|
|
Parser parser;
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-v", "--verbose", ArgParseCpp::StandaloneParam, ArgParseCpp::Bool, "Makes the program more verbose."));
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-a", "--all", ArgParseCpp::StandaloneParam));
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-b", "--brief", ArgParseCpp::StandaloneParam));
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-z", "", ArgParseCpp::StandaloneParam));
|
||
|
|
parser.PrintHelp();
|
||
|
|
parser.Parse(argString);
|
||
|
|
parser.PrintParsedArguments();
|
||
|
|
}
|
||
|
|
// if(0)
|
||
|
|
{// parse single value arguments
|
||
|
|
std::string argString = "programName -a 5 -b 12.654 -s blabla_mon_negro hehe";
|
||
|
|
Parser parser;
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-a", "--all", ArgParseCpp::SingleValueParam, ArgParseCpp::Int));
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-b", "--brief", ArgParseCpp::SingleValueParam, ArgParseCpp::Double));
|
||
|
|
parser.AddParameter(ArgParseCpp::ParserParam("-s", "", ArgParseCpp::SingleValueParam, ArgParseCpp::String));
|
||
|
|
parser.PrintHelp();
|
||
|
|
parser.Parse(argString);
|
||
|
|
parser.PrintParsedArguments();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|