$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Steven Mackenzie (boost_at_[hidden])
Date: 2007-08-24 09:22:56
This thread discusses the issue:
http://archives.free.net.ph/message/20070718.222859.2c087966.en.html
(follow that post up and down the thread a couple of posts as necessary).
Basically, that kind of syntax not directly supported by program_options, but
can be coded up by writing some helper classes.
Not worth the effort, much nicer to your users to write an application that
takes more sensible arguments (-d 1 or -d 2 or -d 3).
Note that getting -d or -d=2 or -d=3 to work requires a patch to program_options
itself, described in another interesting thread:
http://archives.free.net.ph/message/20070723.222625.66f39345.en.html
Hope that helps,
Steven
F David Sacerdoti wrote:
> As per Volodya's suggestion, posting this question here. He mentioned it
> had been discussed, but I was unable to find anything appropriate using
> search engines. I apologize in advance if this is a repeat question.
> 
> Hi,
> 
> I am trying to do a simple thing with your program_options boost
> library:
> 
> I have a program foo, and I want to invoke it like this: 
>  foo -d -d -d
> 
> I want foo to know "I have counted three -d".  
> 
> I followed your tutorial and tried this:
> 		desc.add_options() 
> 		 ("debug,d",po::value< vector<int> >()->default_value(1), "Debug level")
> 		;
> 
> 		po::variables_map vm;
> 		po::store(po::parse_command_line(argc, argv, desc), vm);
> 		po::notify(vm);
> 		
> 		if (vm.count("debug")) {
> 			
> 			cout << "Running, debug level: " << vm["debug"].as< vector<int> >().size()  << "\n";
>               }
> 
> But it did not work, always prints "debug level: 0". For background,
> this is to make the program compatible with a Python implementation
> which uses optparse. I have an extensive testing framework that assumes
> this behavior  and it would be nice to implement the same with
> program_options.
> 
> Thanks,
> Federico