Boost logo

Boost Users :

From: Paul Giaccone (paulg_at_[hidden])
Date: 2007-07-19 11:56:35


Bryan Green wrote:
> 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
>

Aren't -vvv and -v -v -v non-standard, and therefore to be deprecated?
These smack of smart-arse programming[1] to me. Surely, as has been
suggested, the standard approach (which is already supported by
program_options) is to do -v <argument> (or --verbose <argument>). If
you want to increase the verbosity to 10, just use -v 10, for crying out
loud, rather than demanding that the hapless user types -v -v -v -v -v
-v -v -v -v -v or -vvvvvvvvvv and then has to check twice to see whether
they've put the right number of v's in.

In short, IMO, anyone wanting to be too clever by half should not expect
Boost to bend over backwards to support them.

Paul

[1] Non-standard computing term that you won't find in FOLDOC.


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