Boost logo

Boost Users :

Subject: Re: [Boost-users] [Boost.Program_options] String options parser
From: Michael Powell (mwpowellhtx_at_[hidden])
Date: 2017-06-13 22:23:44


On Tue, Jun 13, 2017 at 5:09 PM, Belcourt, Kenneth via Boost-users
<boost-users_at_[hidden]> wrote:
> Hi,
>
> We have an executable that uses the program_options library to process
> command line options like this:
>
> $ ./hilbert.x -h
> -b [ --hilbert ] arg (=1) enable hilbert matrix
> -e [ --epsilon ] arg (=0.001) roundoff epsilon
> -h [ --help ] help message
> -i [ --input-file ] arg process input file
> -r [ --rank ] arg rank of matrix to construct
> -t [ --tolerance ] arg (=1e-13) linear tolerance
> -v [ --inverse ] arg (=0) enable inverse hilbert matrix
> -w [ --wordsize ] arg (=8) floating-point word size (bytes)
>
> and it works great. Now we’re trying to automate some testing and we test
> our executable with an input file that has hundreds of lines like this:
>
> --inverse 1 --tolerance 1e-15 --rank 2
> --inverse 1 --tolerance 1e-15 --rank 3
> --inverse 1 --tolerance 1e-15 --rank 4

When I've used BPO with input sources, I've used "INI" file format,
but I think it may also support other formats like Xml, Json, etc,
(?), but I could be wrong about that. Along the lines of this:

inverse=1
tolerance=1e-15
rank=2

If you have several different point of entry, that may work, I'm not
sure, or feed your subroutines several input sources, depending on how
you've implemented your input handlers:

inverse=1
tolerance=1e-15
rank=2
inverse=1
tolerance=1e-15
rank=3
inverse=1
tolerance=1e-15
rank=4

HTH

> where each line is a separate test case that we run with the specified
> options. I was looking for a program options parser that can parse a
> string, so I can read one line of input from this file into a string, and
> run that test case, that is something like this:
>
> // read one line of input from file
> ifstream ifp;
> string buffer;
> while (!ifp.eof() && ifp.good()) {
> getline(ifp, buffer);
> // load a set of command line options from this string
> po::parse_config_file<char>(buffer.c_str(), desc);
> }
>
> The only program option parsers I see are parse_command_line,
> parse_config_file, and parse_environment. Is there an easy way (without
> having to construct an argc/argv data structure) to parse a file of program
> options?
>
> — Noel Belcourt
>
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> https://lists.boost.org/mailman/listinfo.cgi/boost-users


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net