Boost logo

Boost Users :

From: Bryan Green (bgreen_at_[hidden])
Date: 2007-07-19 11:41:44


Steven Mackenzie writes:
> Ian McCulloch wrote:
> > Bryan Green wrote:
> > [snip]
> >> While I'm on the subject, you sometimes see something like the following:
> >>
> >> ./prog -vvv
> >> or
> >> ./prog -v -v -v
> >>
> >> This would *increment* the verbosity level three times. I can't see how
> >> to replicate this in program_options.
> >
> > This is something I have asked about before on this list, but at the time
> > there was no response. I would be very interested in knowing how to do
> > this using boost::program_options!
>
> One complete solution has already been posted, but just for diversity, settin
> g a
> notifier function on the variable involves less typing. Something like
>
> int verbosityLevel;
> ...
> verbosityLevel = 0;
> ...
> void VerbosityWatcher( bool val )
> {
> ++verbosityLevel;
> }
> ...
> desc.add_options()
> ("verbose,v",
> po::bool_switch()
> ->notifier( &VerbosityWatcher ),
> "print extra information")
> ;
>
> Disadvantages are that the value isn't available through vm, the default valu
> e
> isn't set by the usual ->default method or constructor option, ... Probably s
> ome
> some of those could be coded around.
>
> Personally I think a simple -v 3 is nicer; the -v -v -v style of syntax seems
> a
> bit verbose to me :-)

Allowing '-v 3' precludes allowing just '-v', which is the common case.

As for notifier, does it really work that way? I am interested in a way to
track multiple occurrences, but I thought the notifier only got called once
at the end.

-Bryan


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