Rozental, Gennadiy wrote:
You still need to remember something. For example, your library uses ","As my example above shows, you can use simple syntax for two arguments and explicit/named for all others. Take a look at Boost.Graph: it uses named arguments, but mostly for numerous details such as "color_map". You don't have to write
transitive_closure(graph_param(g));
Unfortunately I am not familiar with Boost.Graph, but I believe that in specific case of CLA I would prefer one style for all parameter's modifiers. I do not see how description is more important that optional/required for example. Looking on your example I already confused:desc3.add_options() ("output,o", "file", "where to send output") ("magic", "value", "magic value for the program") .default_value("43")What is "file", "value"? Why do I need to supply default value as a string and not 43 itself? What is ,o? Do I need to remember everything that you will reply?
to separate elements of std::list<...> parameter. Can I guess that from the options declaration? Can I guess what "multiplicable" is?
The non 100% obvious notation in the above example is ",o" for short option and naming the value for option.
With yout proposal it would look something like
parser << named_parameter<>("output") << short_name<>("o") << value_name("file") << description("where to send output")
And it should be repeated for each option.
options_description desc; desc.add_options() ("roll_trace_file?", "arg?", "roll trace file) ;What id "arg" then? Keyword? Would you remember difference between first question mark and second?
I don't see much problems. "arg?" is "parameter_name", as documentation says. If you hack on command line parsing right now, it's easy to remember the syntax convention. Few month later, you'd at most have to briefly look at docs.
Eeh.. that's only possible if program_options, config::parser, and cla::parserAnd what those operator<< will do?Feed option definitions to the cla::parser.
have the same interface for declaring options. If you add custom modifier to
cla::parser, you have to add it to program_options, and the to config::parser
and then to registry::parser, if you have it.
Not at all. program_option may support only common superset on all
What's "common superset"? Assuming you meant "common subset".
Does key_lookup_policy support short options? No. Therefore program_options cannot support them either. So, if I want to handle both command lineconfiguration components features. It does not need to know about all supported features of all components. In my understanding program_options is only helper facility for one very useful case.
and config file I have to give up something very handy.
- Volodya
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost