diff options
| author | Taylor C. Richberger <Taywee@gmx.com> | 2016-05-05 13:03:25 -0600 | 
|---|---|---|
| committer | Taylor C. Richberger <Taywee@gmx.com> | 2016-05-05 13:03:25 -0600 | 
| commit | 8aefb080e01b3b3d9da50e366cae60d1e6165ff3 (patch) | |
| tree | 2640dd5136cb6a674f3b0a7014edc095887c0c5f /test.cxx | |
| parent | Merge remote-tracking branch 'origin/1-create-flag-terminator-logic' (diff) | |
| download | args.hxx-8aefb080e01b3b3d9da50e366cae60d1e6165ff3.tar.xz | |
push readme
Diffstat (limited to 'test.cxx')
| -rw-r--r-- | test.cxx | 96 | 
1 files changed, 23 insertions, 73 deletions
@@ -3,39 +3,30 @@   */  #include <iostream> -#include <list> -#include <clocale> +#include <tuple>  #include <args.hxx> +std::istream& operator>>(std::istream& is, std::tuple<int, int>& ints) +{ +    is >> std::get<0>(ints); +    is.get(); +    is >> std::get<1>(ints); +    return is; +} + +void DoublesReader(const std::string &name, const std::string &value, std::tuple<double, double> &destination) +{ +    size_t commapos = 0; +    std::get<0>(destination) = std::stod(value, &commapos); +    std::get<1>(destination) = std::stod(std::string(value, commapos + 1)); +} +  int main(int argc, char **argv)  { -    setlocale(LC_ALL, ""); -    args::ArgumentParser parser("This is a test program.  It has a lot of really cool things about it, and it also has a really really long description line that is going to necessitate some line breaks.", "As you saw above, this previously mentioned program has a lot of long things, and therefore necessitates some line breaking"); -    args::Group mutexgroup(parser, "Group test", args::Group::Validators::AllOrNone); -    args::Flag aflag(mutexgroup, "a", "This is flag a", args::Matcher({'a'})); -    args::Flag bflag(mutexgroup, "b", "This is flag b", args::Matcher({'b'})); -    args::Flag cflag(mutexgroup, "c", "This is flag c", args::Matcher({'c'})); -    args::HelpFlag help(parser, "help", "Display this help menu", args::Matcher({'h'}, {"help"})); -    args::Flag fooflag(parser, "foo", "This is a foo flag", args::Matcher({'f', 'F'}, {"Foo", "foo"})); -    args::ArgFlag<std::string> bararg(parser, "bar", "This is a bar flag", args::Matcher({'b', 'B'}, {"Bar", "bar"})); -    args::ArgFlag<double> baz(parser, "baz", "This is a baz flag, and it is long enough that it needs to be wrapped.", args::Matcher({'z', 'Z'}, {"Baz", "baz"})); -    args::ArgFlagList<double> list(parser, "flaglist", "This is a list flag", args::Matcher({'l'}, {"list"})); -    args::PosArg<std::string> pos(parser, "Position", "This is a position arg"); -    args::PosArgList<double> poslist(parser, "Position list", "This is a position list arg"); -    args::PosArg<double> pos2(parser, "Position", "This is a position arg which has a long enough description to probably necessitate wrapping"); -    args::PosArg<double> pos3(parser, "Position", "This is a position arg"); -    args::PosArg<double> pos4(parser, "Pösitiön", "This is a position arg"); -    args::PosArg<double> pos5(parser, "Position", "This is a position arg"); -    args::PosArg<double> pos6(parser, "Position", "This is a position arg"); -    args::PosArgList<double> poslist1(parser, "Position list", "This is a position list arg"); -    args::PosArgList<double> poslist2(parser, "Position list", "This is a position list arg"); -    args::PosArgList<double> poslist3(parser, "Position list", "This is a position list arg"); -    args::PosArg<double> pos7(parser, "Position", "This is a position arg"); -    args::PosArg<double> pos8(parser, "Position", "This is a position arg"); -    args::PosArgList<double> poslist4(parser, "Position list", "This is a position list arg"); -    args::PosArg<double> pos9(parser, "Position", "This is a position arg"); -    args::Counter counter(parser, "counter", "This is a counter flag", args::Matcher({'c'})); +    args::ArgumentParser parser("This is a test program."); +    args::PosArg<std::tuple<int, int>> ints(parser, "INTS", "This takes a pair of integers."); +    args::PosArg<std::tuple<double, double>, DoublesReader> doubles(parser, "DOUBLES", "This takes a pair of doubles.");      try      {          parser.ParseCLI(argc, argv); @@ -51,54 +42,13 @@ int main(int argc, char **argv)          std::cerr << parser.Help();          return 1;      } -    if (aflag) -    { -        std::cout << "A flag found" << std::endl; -    } -    if (bflag) -    { -        std::cout << "B flag found" << std::endl; -    } -    if (cflag) -    { -        std::cout << "C flag found" << std::endl; -    } -    if (fooflag) +    if (ints)      { -        std::cout << "Foo flag found" << std::endl; +        std::cout << "ints found: " << std::get<0>(ints.value) << " and " << std::get<1>(ints.value) << std::endl;      } -    if (bararg) +    if (doubles)      { -        std::cout << "Bar arg found: " << bararg.value << std::endl; +        std::cout << "doubles found: " << std::get<0>(doubles.value) << " and " << std::get<1>(doubles.value) << std::endl;      } -    if (baz) -    { -        std::cout << "Baz arg found: " << baz.value << std::endl; -    } -    if (counter) -    { -        std::cout << "counter found: " << counter.count << std::endl; -    } -    if (list) -    { -        std::cout << "list found: " << std::endl; -        for (const auto &item: list.values) -        { -        std::cout << "- " << item << std::endl; -        } -    } -    if (pos) -    { -        std::cout << "pos found: " << pos.value << std::endl; -    } -    if (poslist) -    { -        std::cout << "poslist found: " << std::endl; -        for (const auto &item: poslist.values) -        { -        std::cout << "- " << item << std::endl; -        } -    } -      return 0;  }  | 
